View a markdown version of this page

Verwenden von ABAC mit DynamoDB-Streams - Amazon DynamoDB

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.

Verwenden von ABAC mit DynamoDB-Streams

Die folgenden Schritte zeigen, wie Sie mithilfe von 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 enthält. Anschließend testen Sie die zulässigen Berechtigungen für den DynamoDB-Stream, indem Sie die Tag-Bedingungen erfüllen.

Schritt 1: Hinzufügen von Tags zu einem DynamoDB-Stream

Sie können DynamoDB-Streams mithilfe der CLI oder des AWS 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 in der Antwort nach dem LatestStreamArn Feld.

Schritt 2: Erstellen einer IAM-Rolle mit einer Richtlinie, die Tag-basierte Bedingungen enthält

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

  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.

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

  3. 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