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 degli errori ABAC comuni per DynamoDB Streams
Se ricevi uno AccessDeniedException o le condizioni basate sui tag non si comportano come previsto dopo aver abilitato ABAC per 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 di condizione specifiche del servizio con una chiave di condizione appropriata per implementare ABAC per DynamoDB Streams.
Ad esempio, supponiamo di aver utilizzato la chiave di dynamodb:ResourceTag condizione in una policy che esegue la richiesta su uno stream. GetRecords La richiesta ha esito negativo con unAccessDeniedException. L'esempio seguente mostra la policy 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-resource,untag-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 quando tenti di etichettare 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 unResourceNotFoundException, il periodo di conservazione di 24 ore è scaduto e lo stream non esiste più.
Puoi disattivare personalmente Streams ABAC solo se si verificano 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 avere esito negativo se al ruolo IAM mancano le autorizzazioni richieste. In particolare, il ruolo deve disporre delle dynamodb:UntagResource autorizzazioni necessarie per dynamodb:TagResource le risorse di streaming. Ciò vale sia per i AWS::DynamoDB::Table tipi di AWS::DynamoDB::GlobalTable risorse che per i tag di flusso espliciti che per i tag ereditati a livello di stack.
Per risolvere questo problema, aggiorna la policy IAM del tuo ruolo CloudFormation di servizio per includere le autorizzazioni di tagging degli stream:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:TagResource", "dynamodb:UntagResource" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*/stream/*" ] } ] }