Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi più comuni di ABAC per DynamoDB Streams
Se ricevi AccessDeniedException o le condizioni basate su tag non si comportano come previsto dopo aver abilitato ABAC for DynamoDB Streams, utilizza questo argomento per diagnosticare e risolvere le cause più comuni.
Service-specific le chiavi di condizione non sono considerate chiavi di condizione valide. Se hai utilizzato tali chiavi nelle tue politiche, queste chiavi generano un errore. È necessario sostituire le chiavi delle condizioni specifiche del servizio con una chiave di condizione appropriata per implementare ABAC for DynamoDB Streams.
Ad esempio, supponiamo di aver utilizzato la chiave dynamodb:ResourceTag condition in una policy che esegue la richiesta su uno stream. GetRecords La richiesta ha esito negativo con unAccessDeniedException. L'esempio seguente mostra la politica errata con la chiave di dynamodb:ResourceTag condizione.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "dynamodb:ResourceTag/Team": "Analytics" } } } ] }
Per risolvere questo problema, sostituisci la chiave di condizione dynamodb:ResourceTag con aws:ResourceTag, come illustrato nell’esempio seguente.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Analytics" } } } ] }
Se di recente hai abilitato Streams ABAC, la modifica potrebbe non essere ancora stata propagata. L'aggiornamento dello stato di Streams ABAC è un'operazione asincrona. Attendi qualche minuto e riprova la richiesta.
Dopo l'eliminazione di una tabella principale, lo stream continua a esistere per 24 ore prima di essere rimosso. Durante questa finestra di 24 ore, puoi gestire i tag dello stream utilizzando i comandi CLI o SDK (tag-resourceuntag-resource, elist-tags-of-resource) con lo stream ARN. Non puoi usare la console o CloudFormation modificare i tag su uno stream la cui tabella principale non esiste più.
Se ricevi un errore durante il tentativo di taggare tramite la console, utilizza invece la 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
Per verificare i tag esistenti nello stream con la tabella principale eliminata:
aws dynamodb list-tags-of-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/DeletedTable/stream/2024-01-01T00:00:00.000
Se ricevi unoResourceNotFoundException, il periodo di conservazione di 24 ore è scaduto e lo stream non esiste più.
Puoi disattivare personalmente Streams ABAC solo se sono soddisfatte le seguenti condizioni:
-
È stata utilizzata la modalità self-service di adesione tramite la console DynamoDB.
-
La disattivazione avviene entro sette giorni di calendario dall’adesione.
Se Streams ABAC è stato abilitato per il tuo account tramite Support, non potrai disattivarlo tramite la console DynamoDB. Per annullare l'iscrizione, contatta l'assistenza.
CloudFormation le distribuzioni che creano o aggiornano una tabella con uno stream potrebbero fallire se al ruolo IAM mancano le autorizzazioni richieste. In particolare, il ruolo deve disporre di autorizzazioni dynamodb:TagResource e dynamodb:UntagResource autorizzazioni per le risorse di streaming. Ciò vale sia per i tipi di AWS::DynamoDB::GlobalTable risorse, AWS::DynamoDB::Table sia per i tag stream espliciti che per i tag ereditati a livello di stack.
Per risolvere questo problema, aggiorna la policy IAM del tuo ruolo CloudFormation di servizio in modo da includere le autorizzazioni per lo stream tagging:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:TagResource", "dynamodb:UntagResource" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*/stream/*" ] } ] }