In che modo è possibile risolvere gli errori "AccessDenied" o "AccessDeniedException" nelle chiamate API di Amazon SQS?
Ho eseguito una chiamata API di Amazon Simple Queue Service (Amazon SQS) e ho ricevuto un errore "AccessDenied".
Breve descrizione
Quando eseguo una chiamata API di Amazon SQS, ricevo un errore "AccessDenied" o "AccessDeniedException" simile al seguente:
"Si è verificato un errore (AccessDenied) durante la chiamata dell'operazione SendMessage: l'accesso alla risorsa https://sqs.us-east-1.amazonaws.com/ è negato."
-oppure-
"Si è verificato un errore (KMS.AccessDeniedException) durante la chiamata dell'operazione SendMessage: l'utente: arn:aws:iam::xxxxx:user/xxxx non è autorizzato a eseguire: kms:GenerateDataKey sulla risorsa: arn:aws:kms:us-east-1:xxxx:key/xxxx con una negazione esplicita."
Risoluzione
Policy di accesso ad Amazon SQS e policy IAM
Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia a riga di comando di AWS (AWS CLI), consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
-
La policy di accesso di SQS o di AWS Identity and Access Management (IAM) devono includere le autorizzazioni per consentire esplicitamente l'accesso all'azione.
-
È consigliabile concedere il privilegio minimo solo per le autorizzazioni necessarie per eseguire un'attività. Per ulteriori informazioni, consulta la sezione Assegna le autorizzazioni con privilegi minimi.
-
Se la coda SQS si trova in un account diverso, sia la policy di accesso di SQS che la policy IAM devono consentire esplicitamente l'accesso.
Importante: una negazione esplicita in ciascuna delle policy sovrascrive un permesso esplicito.
-
Se la policy utilizza un elemento di condizione, verifica che la condizione limiti l'accesso.
-
Se l'utente o il ruolo fa parte di un'organizzazione AWS Organizations che utilizza SCP, verifica che la policy SCP non blocchi l'utente o il ruolo.
Per confermare l'identità IAM utilizzata per effettuare le chiamate API, esegui il comando AWS CLI get-caller-identity:
aws sts get-caller-identity
Per ulteriori informazioni sulle autorizzazioni di accesso di Amazon SQS, consulta la sezione Quali autorizzazioni mi occorrono per accedere alla coda Amazon SQS?
Autorizzazioni del Sistema AWS di gestione delle chiavi (AWS KMS)
Se la tua coda Amazon SQS ha la crittografia lato server (SSE) attivata, le autorizzazioni devono essere concesse sia ai produttori che ai consumatori. Le autorizzazioni richieste vengono fornite con una chiave AWS KMS gestita da AWS o una chiave gestita dal cliente. La policy della chiave gestita dal cliente deve includere le autorizzazioni di accesso per ogni produttore e consumatore della coda. In alternativa, aggiorna la policy IAM per includere le autorizzazioni AWS KMS richieste per la chiave AWS KMS.
- Autorizzazioni richieste per i produttori: GenerateDataKey e Decrypt
- Autorizzazioni richieste per i consumatori: Decrypt
Per accedere a una coda con crittografia lato server di Amazon SQS da un account diverso, la coda deve utilizzare una chiave gestita dal cliente. Non puoi usare una chiave gestita da AWS, perché è possibile modificare solo le policy delle chiavi gestite dai clienti. La policy delle chiavi AWS KMS deve consentire l'accesso da più account alla chiave AWS KMS. La policy IAM deve includere le autorizzazioni per accedere alla chiave AWS KMS.
Per ulteriori informazioni consulta la sezione Gestione delle chiavi.
Policy degli endpoint VPC
Se accedi a SQS tramite un endpoint Amazon Virtual Private Cloud (Amazon VPC), la policy degli endpoint VPC SQS deve consentire l'accesso.
Questo esempio di policy degli endpoint VPC specifica che l'utente IAM MyUser è autorizzato a inviare messaggi alla coda SQS MyQueue. Ad altre azioni, utenti IAM e risorse SQS viene negato l'accesso tramite l'endpoint VPC.
{ "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Principal": { "AWS": "arn:aws:iam:123456789012:user/MyUser" } } ] }
Nota: puoi usare solo VPC con endpoint HTTPS Amazon SQS.
Autorizzazioni della console SQS
Per visualizzare le code e gli attributi SQS dalla console SQS, gli utenti devono disporre delle autorizzazioni per effettuare le azioni ListQueues e GetQueueAttributes:
{ "Sid": "Statement1", "Effect": "Allow", "Action": [ "sqs:ListQueues", "sqs:GetQueueAttributes" ], "Resource": "*" }
Nota: non è possibile utilizzare l'azione API ListQueues con specifiche code. L'API ListQueues deve essere applicata alla risorsa "*" o "arn:aws:sqs:region:account_id:*".
Negare tutte le policy di coda
Potresti perdere l'accesso alla coda SQS se viene aggiunta una policy di negazione di tutte le code simile a questo esempio:
{ "Sid": "deny-sqs-actions", "Effect": "Deny", "Principal": "*", "Action": "SQS:*", "Resource": "queueName" }
Se hai perso l'accesso alla coda SQS, utilizza le credenziali dell'utente root per accedere alla coda e rimuovere la policy di negazione totale. Per ulteriori informazioni, consulta la sezione Come posso risolvere e prevenire i problemi di accesso alla coda di Amazon SQS quando utilizzo una policy di negazione di coda?
Informazioni correlate
Tutorial: Invio di un messaggio a una coda Amazon SQS da Amazon Virtual Private Cloud
Autorizzazioni API Amazon SQS: azioni e riferimento alle risorse
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 8 mesi fa
- AWS UFFICIALEAggiornata un anno fa