Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
Come posso risolvere l'errore AccessDeniedException quando accedo a una tabella Amazon DynamoDB?
Voglio accedere a una tabella Amazon DynamoDB, ma ricevo un errore AccessDeniedException.
Breve descrizione
Potresti ricevere questo errore per i motivi seguenti:
- Il ruolo AWS Identity and Access Management (IAM) che hai usato per accedere alla tabella DynamoDB non dispone delle autorizzazioni necessarie.
- L'accesso alla tabella DynamoDB è limitato a livello di organizzazione.
- La policy associata all'endpoint Amazon Virtual Private Cloud (Amazon VPC) per DynamoDB limita l'operazione.
- Hai attivato l'autenticazione a più fattori (MFA) e non hai utilizzato l'MFA per accedere alla tabella.
- Utilizzi una chiave gestita dal cliente o una chiave gestita da AWS per proteggere le tue tabelle DynamoDB.
- Non puoi accedere a Contributor Insights di Amazon CloudWatch per DynamoDB.
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Risolvi gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Risoluzione
Il ruolo IAM non dispone delle necessarie autorizzazioni
Quando crei una tabella DynamoDB, concedi le necessarie autorizzazioni al ruolo IAM che usi per accedere alla tabella. Puoi collegare le policy a utenti, gruppi o ruoli IAM per concedere le necessarie autorizzazioni. Per ulteriori informazioni, vedi Utilizzo di policy basate su identità con Amazon DynamoDB.
Per risolvere gli errori di chiamata alle API di autorizzazione IAM, utilizza uno script AWS CLI:
( echo "Time,Identity ARN,Event ID,Service,Action,Error,Message";> aws cloudtrail lookup-events --start-time "2022-08-04T13:23:00Z" --end-time "2022-08-04T13:27:00Z" --query "Events[*].CloudTrailEvent" --output text \ > | jq -r ". | select(.userIdentity.arn == \"your-ARN\" and .eventType == \"AwsApiCall\" and .errorCode != null > and (.errorCode | ascii_downcase | (contains(\"accessdenied\") or contains(\"unauthorized\")))) > | [.eventTime, .userIdentity.arn, .eventID, .eventSource, .eventName, .errorCode, .errorMessage] | @csv" > ) | column -t -s'",'
Sostituisci your-ARN con il valore ARN IAM per le tue risorse.
Nota: lo script AWS CLI richiede il processore JSON della riga di comando jq. Per il tutorial e le istruzioni per il download, consulta Formato di output JSON.
Per le distribuzioni che utilizzano il pacchetto yum, esegui questo comando:
$ sudo yum install jq
L'output del comando sarà simile al seguente:
Time Identity ARN Event ID Service Action Error Message 2022-08-04T13:24:14Z arn:aws:iam::111122223333:user/article 42f420fe-ef06-43be-98a6-d5a0a90d7b4c dynamodb.amazonaws.com ListTables AccessDenied User: arn:aws:iam::111122223333:user/article is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:111122223333:table/* with an explicit deny in an identity-based policy 2022-08-04T13:51:22Z arn:aws:iam::111122223333:user/article b174e4e1-94a7-403e-a15f-1234aec796a6 dynamodb.amazonaws.com ListTables AccessDenied User: arn:aws:iam::111122223333:user/article is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:111122223333:table/* because no identity-based policy allows the dynamodb:ListTables action
L'output precedente ti informa che non è possibile eseguire l'azione ListTables perché hai assegnato all'utente 111122223333 un'autorizzazione che rifiuta l'operazione. Il secondo messaggio indica che nessuna policy basata sull'identità consente l'azione dynamodb:ListTables.
Le best practice riportate di seguito ti aiutano ad assicurarti che il tuo ruolo IAM abbia le autorizzazioni necessarie ad accedere alla tabella DynamoDB:
- Non includere il ruolo IAM in nessuna istruzione DENY della policy di attendibilità.
- Includi il ruolo IAM nell'istruzione ALLOW della policy di attendibilità.
- Verifica che tutte le condizioni IAM specificate nell'istruzione ALLOW siano supportate dall'azione API sts:AssumeRole.
- Se utilizzi AWS CLI per accedere alla tabella DynamoDB, utilizza l'ID della chiave di accesso e la chiave di accesso segreta corretti.
Per ulteriori informazioni, vedi Come posso ottenere dati per la risoluzione dei problemi relativi all'accesso negato o non autorizzato alle autorizzazioni IAM?
L'accesso alla tabella DynamoDB è limitato a livello di organizzazione
Se ricevi l'errore seguente quando provi ad accedere alla tabella DynamoDB, una policy di controllo dei servizi ti ha negato l'accesso:
"User: arn:aws:iam::11111222333:user/Admin is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:11111222333:table with an explicit deny in a service control policy"
Per risolvere questo problema, aggiorna la policy definita a livello di organizzazione.
**Nota:**Se rifiuti le operazioni di DynamoDB a livello di organizzazione, tutti i ruoli IAM presenti in tale organizzazione o account AWS verranno rifiutati. Anche se il ruolo o l'account dispone delle autorizzazioni richieste, verrà rifiutato.
La policy sull'endpoint Amazon VPC limita l'operazione
Per migliorare la privacy e la sicurezza dei dati trasferiti tra la tabella DynamoDB e la tua applicazione, puoi utilizzare un Amazon VPC. Se l'endpoint VPC ha una policy delle risorse IAM che limita l'accesso degli utenti IAM alla tabella, verrà visualizzato l'errore seguente:
"An error occurred (AccessDeniedException) when calling the ListTables operation: User: arn:aws:iam::111222333444:user/Admin is not authorized to perform: dynamodb:ListTables on resource: arn:aws:dynamodb:us-east-1:11111222333:table/* with an explicit deny in a VPC endpoint policy"
Se ricevi questo errore, è presente un'istruzione DENY esplicita nella policy dell'endpoint VPC che rifiuta l'operazione ListTables per l'utente Admin.
Per visualizzare la policy dell'endpoint VPC, esegui il comando AWS CLI describe-vpc-endpoints. In alternativa, segui questi passaggi per visualizzare la policy nella console:
- Apri la console Amazon VPC.
- Nel pannello di navigazione, scegli Endpoint.
- Seleziona l'endpoint VPC.
- Scegli la scheda Policy per visualizzare la policy dell'endpoint.
Per risolvere il problema, aggiorna la policy dell'endpoint VPC.
Non hai utilizzato l'autenticazione a più fattori per accedere alla tabella
Supponiamo che tu abbia configurato l'autenticazione a più fattori nel tuo account con la seguente policy basata sull'identità:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }
In questo caso, tutte le azioni tranne quelle che richiedono l'utilizzo dell'MFA per l'autenticazione vengono rifiutate. Se l'utente IAM non ha effettuato l'accesso con l'MFA, tutte le azioni non elencate nella policy precedente vengono rifiutate, incluse le azioni DynamoDB.
Per risolvere questo problema, utilizza l'autenticazione a più fattori per accedere.
La tua tabella DynamoDB utilizza la chiave gestita dal cliente o la chiave gestita da AWS
Le tabelle DynamoDB che utilizzano una chiave gestita dal cliente o una chiave del Servizio AWS di gestione delle chiavi (AWS KMS) devono avere le autorizzazioni corrette. Le policy relative alla chiave KMS devono concedere a DynamoDB l'autorizzazione a utilizzare la chiave per tuo conto. L'utente IAM che accede alla tabella deve disporre delle seguenti autorizzazioni minime sulla chiave AWS KMS:
- DynamoDB utilizza la chiave AWS KMS per generare e crittografare una chiave dati univoca per la tabella, detta chiave della tabella. Per generare e crittografare questa chiave, devi avere l'autorizzazione kms:GenerateDataKey.
- Per accedere alle chiavi crittografate, la chiave AWS KMS deve avere le autorizzazioni kms:Encrypt e kms:Decrypt.
- La chiave della tabella viene utilizzata per proteggere le chiavi di crittografia dei dati utilizzate per crittografare i dati della tabella. Se per una tabella viene modificata la chiave gestita dal cliente, DynamoDB produce una nuova chiave della tabella. Quindi, DynamoDB utilizza la nuova chiave della tabella per crittografare nuovamente le chiavi di crittografia dei dati. Per eseguire questa operazione, devi avere l'autorizzazione kms:ReEncrypt.
- DynamoDB utilizza l'operazione kms:DescribeKey per determinare se la chiave gestita dal cliente che hai selezionato esiste all'interno dell'account e della Regione. Se la chiave viene rimossa in modo casuale, la chiamata DescribeKey restituisce un errore.
- DynamoDB utilizza le concessioni per configurare le autorizzazioni su una chiave gestita dal cliente. Queste autorizzazioni delle concessioni vengono utilizzate quando DynamoDB esegue attività in background per la manutenzione del sistema e la protezione continua dei dati. Le autorizzazioni delle concessioni vengono utilizzate anche per generare le chiavi delle tabelle. Pertanto, assicurati di disporre dell'autorizzazione kms:CreateGrant.
Per ulteriori informazioni, vedi Come Amazon DynamoDB usa AWS KMS.
Non puoi accedere a Contributor Insights di CloudWatch per DynamoDB
Se ricevi un errore quando provi ad accedere a Contributor Insights di CloudWatch per DynamoDB, potresti non disporre delle autorizzazioni IAM corrette. Per accedere a Contributor Insights di CloudWatch, devi disporre delle autorizzazioni seguenti:
Per ulteriori informazioni, vedi Contributor Insights di CloudWatch per DynamoDB: come funziona
**Nota:**DynamoDB non supporta il controllo degli accessi basato sugli attributi (ABAC). Inoltre, non si possono utilizzare condizioni basate su tag per controllare l'accesso alle tabelle. Utilizza invece le condizioni delle policy IAM per il controllo granulare degli accessi (FGAC).
Informazioni correlate
IAM: consente e rifiuta l'accesso a più servizi a livello di programmazione e nella console
- Argomenti
- Database
- Lingua
- Italiano

Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa