Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso risolvere gli errori di accesso negato o di operazione non autorizzata con una policy IAM?
Sto cercando di eseguire un'azione su una risorsa AWS e ho ricevuto un errore di accesso negato o operazione non autorizzata.
Breve descrizione
Per risolvere i problemi relativi alle policy di AWS Identity and Access Management (IAM):
- Identifica il chiamante API
- Controlla le autorizzazioni della policy IAM
- Valuta le policy di controllo dei servizi (SCP)
- Rivedi le policy basate sull’identità e sulle risorse
- Verifica i limiti delle autorizzazioni
- Valuta le policy delle sessioni
- Assicurati che le chiavi di condizione nella policy siano supportate dalle API
- Esamina gli errori delle policy IAM e gli esempi di risoluzione dei problemi
Risoluzione
Identifica il chiamante API e comprendi i messaggi di errore
Importante:
- Prima di iniziare, assicurati di avere installato e configurato l'interfaccia della linea di comando AWS (AWS CLI).
- Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente di AWS CLI.
Assicurati che le chiamate API siano effettuate per conto dell'entità IAM corretta prima di esaminare le policy IAM. Se il messaggio di errore non include le informazioni sul chiamante, segui questi passaggi per identificare il chiamante dell'API:
- Apri la Console di gestione AWS.
- Nell'angolo in alto a destra della pagina, scegli la freccia accanto alle informazioni sull'account.
- Se hai effettuato l'accesso come ruolo IAM, consulta "Attualmente attivo come" per il nome del ruolo assunto e "ID account" per l'ID dell'account.
- Se hai effettuato l'accesso come utente federato, fai riferimento a “Utente federato” per il nome del ruolo federativo e il nome della sessione del ruolo.
-oppure-
Usa il comando AWS CLI get-caller-identity per identificare il chiamante API. Puoi anche utilizzare il comando AWS CLI con il flag \ --debug per identificare l'origine delle credenziali dall'output in modo simile al seguente:
2018-03-13 16:23:57,570 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials
Controlla le autorizzazioni della policy IAM
Verifica se le autorizzazioni necessarie sono concesse al chiamante API controllando le policy IAM allegate. Per ulteriori informazioni, consulta Determining whether a request is allowed or denied within an account.
Valuta gli SCP di AWS Organizations
Se l'account AWS fa parte di un'organizzazione AWS, gli SCP possono essere applicati a livello gerarchico per consentire o negare azioni. Le autorizzazioni SCP vengono ereditate da tutte le entità IAM nell'account AWS. Assicurati che il chiamante API non sia esplicitamente negato nell'SCP.
Assicurati che l'API chiamata non sia esplicitamente negata in una policy SCP organizzativa che ha un impatto sul chiamante
Rivedi le policy basate sull'identità e sulle risorse
Assicurati che sia presente un'istruzione ALLOW esplicita nella policybasata sull'identità delle entità IAM per il chiamante API. Quindi, assicurati che l'API supporti le autorizzazioni a livello di risorsa. Se il chiamante dell'API non supporta le autorizzazioni a livello di risorsa, assicurati che il carattere jolly "*" sia specificato nell'elemento risorsa della dichiarazione della policy IAM.
Puoi allegare policy basate sulle risorse a una risorsa all'interno del servizio AWS per fornire l'accesso. Per ulteriori informazioni, consulta Identity-based policies and resource-based policies.
Per visualizzare il riepilogo della policy IAM:
- Apri la console IAM.
- Nel riquadro di navigazione, scegli Policy.
- Scegli la freccia accanto al nome della policy per visualizzare i dettagli della policy.
Nel seguente esempio, la policy non funziona perché non tutte le azioni API Amazon Elastic Compute Cloud (Amazon EC2) supportano le autorizzazioni a livello di risorsa:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SorryThisIsNotGoingToWorkAsExpected", "Effect": "Allow", "Action": ["ec2:*"], "Resource": "arn:aws:ec2:us-east-1:accountid:instance/*" } ] }
Gli utenti IAM che tentano di avviare un'istanza Amazon EC2 nella Regione us-east-1 con il comando run-instances AWS CLI ricevono un messaggio di errore simile al seguente:
"An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message:…"
Per risolvere questo problema, cambia la risorsa in un carattere jolly "*". Ciò si verifica perché Amazon EC2 supporta solo autorizzazioni parziali a livello di risorsa.
Per decodificare il messaggio di errore di autorizzazione e ottenere maggiori dettagli sulla causa dell’errore, utilizza un'azione API DecodeAuthorizationMessage simile alla seguente:
$ aws sts decode-authorization-message --encoded-message <encoded-message-from-the-error>
Verifica i limiti delle autorizzazioni
Se all'entità IAM è associato un limite di autorizzazione, il limite imposta le autorizzazioni massime di cui dispone l'entità.
Valuta le policy delle sessioni
Se il chiamante API è un ruolo IAM o un utente federato, le policy di sessione vengono passate per la durata della sessione. Le autorizzazioni per una sessione sono l'intersezione delle policy basate sull'identità dell'entità IAM utilizzata per creare la sessione e le policy di sessione. Assicurati che la chiamata API esista nella policy e nell'entità IAM.
Assicurati che le chiavi di condizione nella policy siano supportate dalle API
Le chiavi di condizione AWS possono essere utilizzate per confrontare gli elementi di una richiesta API effettuata ad AWS con i valori chiave specificati in una policy IAM. Le chiavi di condizione possono essere chiavi di condizione globali o definite dal servizio AWS. Le chiavi di condizione specifiche del servizio AWS possono essere utilizzate solo all'interno di quel servizio (ad esempio condizioni EC2 sulle azioni API EC2). Per ulteriori informazioni, consulta Actions, resources, and condition context keys for AWS services.
Un elemento di condizione può contenere più condizioni e all'interno di ogni blocco di condizioni può contenere più coppie chiave-valore. Per ulteriori informazioni, consulta Creating a condition with multiple keys or values.
In questa policy di esempio, l'elemento condizione viene abbinato se una richiesta API IAM viene richiamata dall'amministratore dell'utente IAM e l'indirizzo IP di origine è 1.1.1.0/24 o 2.2.2.0/24.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:*", "Resource": "*", "Condition": { "StringEquals": { "aws:username": "admin" }, "IpAddress": { "aws:SourceIp": [ "1.1.1.0/24", "2.2.2.0/24" ] } } } ] }
Errori delle policy IAM ed esempi di risoluzione dei problemi
Guarda i seguenti esempi per identificare il messaggio di errore, il chiamante API, l'API e le risorse chiamate:
Esempio di messaggio di errore | Chiamante API | API | Risorse | Quando |
A: "An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation." | sconosciuto | DescribeInstances | sconosciuto | ora in cui si verifica l'errore |
B: "An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::123456789012:user/test is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::123456789012:role/EC2-FullAccess" | arn:aws:iam::123456789012:user/test | AssumeRole | arn:aws:iam::123456789012:role/EC2-FullAccess | ora in cui si verifica l'errore |
C: "An error occurred (AccessDenied) when calling the GetSessionToken operation: Cannot call GetSessionToken with session credentials" | sconosciuto | GetSessionToken | sconosciuto | ora in cui si verifica l'errore |
D: "An error occurred (UnauthorizedOperation) when calling the AssociateIamInstanceProfile operation: You are not authorized to perform this operation. Encoded authorization failure message: ...." | sconosciuto | AssociateIamInstanceProfile | sconosciuto | ora in cui si verifica l'errore |
Utilizzando questo metodo di valutazione, puoi identificare la causa dei messaggi di errore dovuti a problemi di autorizzazione per diversi servizi AWS. Per maggiori dettagli, consulta i seguenti messaggi di errore e le procedure per la risoluzione dei problemi:
Esempio di messaggio di errore A:
Questo messaggio di errore indica che non disponi dell'autorizzazione per chiamare l'API DescribeInstances.
Per risolvere questo errore, procedi come segue:
- Identifica il chiamante API.
- Verifica che l'azione API ec2:DescribeInstances non sia inclusa in nessuna dichiarazione di rifiuto.
- Verifica che l'azione API ec2:DescribeInstances sia inclusa nelle istruzioni ALLOW.
- Conferma che non sia stata specificata alcuna risorsa per questa azione API. Nota: questa azione API non supporta le autorizzazioni a livello di risorsa.
- Verifica che tutte le condizioni IAM specificate nell'istruzione ALLOW siano supportate dall'azione DescribeInstances e che le condizioni siano soddisfatte.
Per ulteriori informazioni, consulta DescribeInstanceStatus.
Esempio di messaggio di errore B:
Questo messaggio di errore include il nome dell'API, il chiamante API e la risorsa di destinazione. Assicurati che l'identità IAM che ha chiamato l'API abbia l'accesso corretto alle risorse. Rivedi le policy IAM utilizzando il metodo di valutazione precedente.
Per risolvere questo errore, segui questi passaggi per confermare la policy di attendibilità del ruolo IAM: EC2-FullAccess:
- Conferma che arn:aws:iam::123456789012:user/test o arn:aws:iam::123456789012:root non sia incluso in nessuna dichiarazione di rifiuto della policy di attendibilità.
- Verifica che arn:aws:iam::123456789012:user/test o arn:aws:iam::123456789012:root sia incluso nell'istruzione ALLOW della policy di attendibilità.
- Verifica che tutte le condizioni IAM specificate in tale istruzione ALLOW siano supportate dall'azione dell'API sts:AssumeRole e corrispondano.
Segui questi passaggi per confermare le policy IAM associate al chiamante API (arn:aws:iam::123456789012:user/test):
- Conferma che arn:aws:iam::123456789012:role/EC2-FullAccess non sia incluso in nessuna dichiarazione di rifiuto con l'azione dell'API sts:AssumeRole.
- Se arn:aws:iam::123456789012:root è presente nell'istruzione ALLOW della policy di attendibilità, verifica che arn:aws:iam::123456789012:role/EC2-FullAccess sia incluso nell'istruzione ALLOW delle policy IAM con l'azione API sts:AssumeRole.
- Verifica che tutte le condizioni IAM specificate in tale istruzione ALLOW siano supportate dall'azione dell'API sts:AssumeRole e che corrispondano.
Esempio di messaggio di errore C:
Questo messaggio di errore indica che get-session-token non è supportato dalle credenziali temporanee. Per ulteriori informazioni, consulta Comparing the AWS STS API operations.
Esempio di messaggio di errore D:
Questo messaggio di errore restituisce un messaggio codificato che può fornire dettagli sull'errore di autorizzazione. Per decodificare il messaggio di errore e ottenere i dettagli dell'errore di autorizzazione, consulta DecodeAuthorizationMessage. Dopo avere decodificato il messaggio di errore, identifica il chiamante API e rivedi le autorizzazioni e le condizioni a livello di risorsa.
Per risolvere questo errore, segui questi passaggi per rivedere le autorizzazioni delle policy IAM:
- Se il messaggio di errore indica che l'API è stata rifiutata esplicitamente, rimuovi le azioni API ec2:AssociateIamInstanceProfile o iam:PassRole dalla dichiarazione corrispondente.
- Verifica che ec2:AssociateIamInstanceProfile e iam:PassRole siano presenti nell'istruzione ALLOW con destinazioni di risorse supportate e corrette. Ad esempio, conferma che le destinazioni delle risorse dell'azione API ec2:AssociateIamInstanceProfile siano istanze EC2 e le destinazioni delle risorse di iam:PassRole siano ruoli IAM.
- Se le azioni API ec2:AssociateIamInstanceProfile e iam:PassRole sono incluse nella stessa istruzione ALLOW, conferma che tutte le condizioni siano supportate dalle azioni API ec2:AssociateIamInstanceProfile e iam:PassRole e che le condizioni corrispondano.
- Se le azioni API ec2:AssociateIamInstanceProfile e iam:PassRole sono contenute in istruzioni ALLOW separate, conferma che tutte le condizioni in ciascuna istruzione ALLOW siano supportate da un'azione e che le condizioni corrispondano.
Per ulteriori informazioni, consulta Policy evaluation logic e Determining whether a request is allowed or denied within an account.
Informazioni correlate
Video correlati



Contenuto pertinente
- AWS UFFICIALEAggiornata 4 mesi fa
- AWS UFFICIALEAggiornata 5 mesi fa
- AWS UFFICIALEAggiornata un anno fa