View a markdown version of this page

Résolution des erreurs ABAC courantes pour DynamoDB Streams - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des erreurs ABAC courantes pour DynamoDB Streams

Si vous recevez un message AccessDeniedException ou si vos conditions basées sur des balises ne se comportent pas comme prévu après avoir activé ABAC pour DynamoDB Streams, consultez cette rubrique pour diagnostiquer et résoudre les causes les plus courantes.

Service-specific les clés de condition ne sont pas considérées comme des clés de condition valides. Si vous avez utilisé de telles clés dans vos politiques, elles génèrent une erreur. Vous devez remplacer les clés de condition spécifiques au service par une clé de condition appropriée pour implémenter ABAC pour DynamoDB Streams.

Supposons, par exemple, que vous ayez utilisé la clé de dynamodb:ResourceTag condition dans une politique qui exécute la GetRecords demande sur un flux. La demande échoue avec unAccessDeniedException. L'exemple suivant montre la politique erronée avec la clé de dynamodb:ResourceTag condition.

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

Pour résoudre ce problème, remplacez la clé de condition dynamodb:ResourceTag par aws:ResourceTag, comme indiqué dans l’exemple suivant.

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

Si vous avez récemment activé Streams ABAC, la modification ne s'est peut-être pas encore propagée. La mise à jour de l'état de Streams ABAC est une opération asynchrone. Patientez quelques minutes, puis réessayez de faire votre demande.

Après la suppression d'une table parent, le flux continue d'exister pendant 24 heures avant d'être supprimé. Pendant cette fenêtre de 24 heures, vous pouvez gérer les balises de flux à l'aide des commandes CLI ou du SDK (tag-resourceuntag-resource, etlist-tags-of-resource) avec l'ARN du flux. Vous ne pouvez pas utiliser la console ni CloudFormation modifier les balises d'un flux dont la table parent n'existe plus.

Si vous recevez un message d'erreur lorsque vous tentez de baliser via la console, utilisez plutôt l'interface de ligne de commande :

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

Pour vérifier les balises existantes sur le flux dont la table parent a été supprimée :

aws dynamodb list-tags-of-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/DeletedTable/stream/2024-01-01T00:00:00.000

Si vous recevez unResourceNotFoundException, la période de rétention de 24 heures a expiré et le flux n'existe plus.

Vous pouvez vous désinscrire de Streams ABAC vous-même uniquement si les conditions suivantes sont remplies :

  • Vous avez utilisé la méthode en libre-service pour l’activer via la console DynamoDB.

  • Vous le désactiver dans les sept jours civils suivant son activation.

Si Streams ABAC a été activé pour votre compte via Support, vous ne pourrez pas vous désinscrire via la console DynamoDB. Pour vous désinscrire, contactez le support.

CloudFormation les déploiements qui créent ou mettent à jour une table contenant un flux peuvent échouer si le rôle IAM ne dispose pas des autorisations requises. Plus précisément, le rôle doit disposer d'dynamodb:UntagResourceautorisations dynamodb:TagResource et d'autorisations pour les ressources de flux. Cela s'applique à la fois aux types de AWS::DynamoDB::GlobalTable ressources AWS::DynamoDB::Table et affecte à la fois les balises de flux explicites et les balises héritées au niveau de la pile.

Pour résoudre ce problème, mettez à jour la politique IAM de votre rôle de CloudFormation service afin d'inclure des autorisations de balisage des flux :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:TagResource", "dynamodb:UntagResource" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*/stream/*" ] } ] }