

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# ABAC mit DynamoDB Streams verwenden
<a name="abac-implementation-streams"></a>

Die folgenden Schritte zeigen, wie Sie mit ABAC Berechtigungen für DynamoDB Streams einrichten. In diesem Beispielszenario fügen Sie einem DynamoDB-Stream Tags hinzu und erstellen eine IAM-Rolle mit einer Richtlinie, die tagbasierte Bedingungen beinhaltet. Anschließend testen Sie die zulässigen Berechtigungen für den DynamoDB-Stream, indem Sie die Tag-Bedingungen erfüllen.

**Topics**
+ [Schritt 1: Hinzufügen von Tags zu einem DynamoDB-Stream](#abac-streams-step-1)
+ [Schritt 2: Erstellen einer IAM-Rolle mit einer Richtlinie, die Tag-basierte Bedingungen enthält](#abac-streams-step-2)
+ [Schritt 3: Testen der Berechtigungen](#abac-streams-step-3)

## Schritt 1: Hinzufügen von Tags zu einem DynamoDB-Stream
<a name="abac-streams-step-1"></a>

Sie können DynamoDB Streams mithilfe der AWS CLI oder des SDK Tags hinzufügen. Der folgende `tag-resource` CLI-Befehl fügt einem Stream ein Tag hinzu.

```
aws dynamodb tag-resource \
  --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable/stream/2024-01-01T00:00:00.000 \
  --tags Key=environment,Value=staging
```

**Anmerkung**  
Um Ihren Stream-ARN zu finden, verwenden Sie den `describe-table` Befehl und suchen Sie nach dem `LatestStreamArn` Feld in der Antwort.

## Schritt 2: Erstellen einer IAM-Rolle mit einer Richtlinie, die Tag-basierte Bedingungen enthält
<a name="abac-streams-step-2"></a>

Erstellen Sie eine IAM-Richtlinie mithilfe des `aws:ResourceTag/{{tag-key}}` Bedingungsschlüssels, um das in der IAM-Richtlinie angegebene Tag-Schlüssel-Wert-Paar mit dem Schlüssel-Wert-Paar zu vergleichen, das an den Stream angehängt ist. Die folgende Beispielrichtlinie ermöglicht es Benutzern, Datensätze abzurufen und einen Stream zu beschreiben, wenn der Stream das Tag-Schlüssel-Wert-Paar enthält:. `"environment": "staging"` Wenn ein Stream nicht über das angegebene Tag-Schlüssel-Wert-Paar verfügt, werden diese Aktionen verweigert.

```
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:DescribeStream",
        "dynamodb:GetRecords",
        "dynamodb:GetShardIterator"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "staging"
        }
      }
    }
  ]
}
```

## Schritt 3: Testen der Berechtigungen
<a name="abac-streams-step-3"></a>

1. Hängen Sie die IAM-Richtlinie einem Testbenutzer oder einer Testrolle in Ihrem AWS-Konto zu. Stellen Sie sicher, dass der von Ihnen verwendete IAM-Prinzipal nicht bereits über eine andere Richtlinie Zugriff auf den DynamoDB-Stream hat.

1. Stellen Sie sicher, dass Ihr DynamoDB-Stream den `"environment"` Tag-Schlüssel mit dem Wert enthält. `"staging"`

1. Führen Sie die `dynamodb:GetRecords` Aktionen `dynamodb:DescribeStream` und für den markierten Stream aus. Diese Aktionen sind erfolgreich, wenn das `"environment": "staging"` Tag-Schlüssel-Wert-Paar vorhanden ist.

   Wenn Sie diese Aktionen in einem Stream ausführen, der das `"environment": "staging"` Tag-Schlüssel-Wert-Paar nicht enthält, schlägt Ihre Anfrage mit einem fehl. `AccessDeniedException`