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.
Behebung häufiger ABAC-Fehler für DynamoDB-Streams
Wenn Sie nach der Aktivierung von ABAC für DynamoDB-Streams einen Fehler erhalten AccessDeniedException oder sich Ihre tagbasierten Bedingungen nicht wie erwartet verhalten, können Sie anhand dieses Themas die häufigsten Ursachen diagnostizieren und beheben.
Service-specific Bedingungsschlüssel werden nicht als gültige Bedingungsschlüssel betrachtet. Wenn Sie solche Schlüssel in Ihren Richtlinien verwendet haben, führen diese Schlüssel zu einem Fehler. Sie müssen die dienstspezifischen Bedingungsschlüssel durch einen geeigneten Bedingungsschlüssel ersetzen, um ABAC für DynamoDB-Streams zu implementieren.
Nehmen wir beispielsweise an, Sie haben den dynamodb:ResourceTag Bedingungsschlüssel in einer Richtlinie verwendet, die die GetRecords Anforderung für einen Stream ausführt. Die Anfrage schlägt mit einem fehlAccessDeniedException. Das folgende Beispiel zeigt die fehlerhafte Richtlinie mit dem dynamodb:ResourceTag Bedingungsschlüssel.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "dynamodb:ResourceTag/Team": "Analytics" } } } ] }
Um dieses Problem zu beheben, ersetzen Sie den dynamodb:ResourceTag-Bedingungsschlüssel durch aws:ResourceTag, wie im folgenden Beispiel gezeigt.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Analytics" } } } ] }
Wenn Sie Streams ABAC kürzlich aktiviert haben, wurde die Änderung möglicherweise noch nicht übernommen. Das Aktualisieren des Status von Streams ABAC ist ein asynchroner Vorgang. Warten Sie ein paar Minuten und versuchen Sie es erneut mit Ihrer Anfrage.
Nachdem eine übergeordnete Tabelle gelöscht wurde, existiert der Stream noch 24 Stunden lang, bevor er entfernt wird. Während dieses 24-Stunden-Fensters können Sie Stream-Tags mithilfe der CLI- oder SDK-Befehle (tag-resourceuntag-resource, undlist-tags-of-resource) mit dem Stream-ARN verwalten. Sie können die Konsole nicht verwenden oder Tags CloudFormation in einem Stream ändern, dessen übergeordnete Tabelle nicht mehr existiert.
Wenn Sie beim Versuch, über die Konsole zu taggen, eine Fehlermeldung erhalten, verwenden Sie stattdessen die CLI:
aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/DeletedTable/stream/2024-01-01T00:00:00.000 \ --tags Key=environment,Value=production
So verifizieren Sie vorhandene Tags im Stream mit gelöschter übergeordneter Tabelle:
aws dynamodb list-tags-of-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/DeletedTable/stream/2024-01-01T00:00:00.000
Wenn Sie eine erhaltenResourceNotFoundException, ist die 24-Stunden-Aufbewahrungsfrist abgelaufen und der Stream existiert nicht mehr.
Sie können Streams ABAC nur dann selbst abbestellen, wenn Folgendes zutrifft:
-
Sie haben die Self-Service-Methode verwendet, um sich über die DynamoDB-Konsole anzumelden.
-
Sie melden sich innerhalb von sieben Kalendertagen nach der Anmeldung ab.
Wenn Streams ABAC für Ihr Konto über den Support aktiviert wurde, können Sie sich nicht über die DynamoDB-Konsole abmelden. Um sich abzumelden, wenden Sie sich an den Support.
CloudFormation Bereitstellungen, die eine Tabelle mit einem Stream erstellen oder aktualisieren, schlagen möglicherweise fehl, wenn der IAM-Rolle die erforderlichen Berechtigungen fehlen. Insbesondere muss die Rolle über dynamodb:TagResource dynamodb:UntagResource Berechtigungen für Stream-Ressourcen verfügen. Dies gilt AWS::DynamoDB::Table sowohl für AWS::DynamoDB::GlobalTable Ressourcentypen als auch für explizite Stream-Tags und vererbte Stack-Level-Tags.
Um dieses Problem zu beheben, aktualisieren Sie die IAM-Richtlinie Ihrer CloudFormation Servicerolle, sodass sie Stream-Tagging-Berechtigungen enthält:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:TagResource", "dynamodb:UntagResource" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*/stream/*" ] } ] }