Come posso risolvere l'errore relativo alle credenziali IAM "The security token included in the request isn’t valid"?
Quando ho utilizzato le mie credenziali AWS Identity and Access Management (AWS IAM) per l'autenticazione, ho ricevuto un errore simile al seguente: "An error occurred (InvalidClientTokenId) when calling the ### operation: The security token included in the request is invalid".
Breve descrizione
Questo errore di autenticazione si verifica perché le credenziali IAM non sono configurate correttamente, sono scadute o sono state eliminate, si trovano in una posizione inaspettata o utilizzano una coppia di chiavi errata. Le credenziali utilizzate dipendono dall'ordine e dalla precedenza dei fornitori di credenziali. Per ulteriori informazioni, consulta Configurazione e precedenza delle credenziali.
Risoluzione
Per risolvere l'errore, trova la posizione delle credenziali dell'utente, verifica che le credenziali siano valide e aggiornale o sostituiscile.
Nel seguente esempio di caso d'uso, l'errore si verifica da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) perché le credenziali non sono valide.
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Trova la posizione delle credenziali dell'utente
Per ottenere le credenziali IAM utilizzate dall'istanza EC2, esegui il comando AWS CLI get-caller-identity:
aws sts get-caller-identity --debug
Esempio di output:
2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env 2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role 2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity 2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso 2024-06-04 11:28:22,588 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file 2024-06-04 11:28:22,588 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials
Nell'esempio di output precedente, le credenziali utilizzate dall'istanza EC2 si trovano all'interno del file ~/.aws/credentials.
Nota: il file .aws/credentials contiene i dettagli delle credenziali per le entità IAM. Quando gestisci le credenziali, assicurati di seguire le best practice di sicurezza in IAM.
Verifica che le credenziali siano valide
Per verificare che le credenziali siano valide per la posizione e l'azione della chiamata API, segui questi passaggi.
-
Per verificare le credenziali utilizzate dall'istanza EC2, esegui questi comandi:
cd ~/.aws cat credentialsEsempio di output:
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -
Per verificare che le autorizzazioni delle chiavi di accesso siano valide, utilizza la Console di gestione AWS o AWS CLI.
Nota: se utilizzi credenziali di sicurezza temporanee, le chiavi di accesso potrebbero essere scadute. Le chiavi temporanee scadute non possono consentire alcun tipo di richiesta di accesso, comprese le chiamate API.
Aggiorna o sostituisci le credenziali
Se le credenziali sono scadute o sono state eliminate, aggiornale. Se le credenziali non sono valide, segui questi passaggi per convalidarle e aggiornarle utilizzando AWS CLI.
Nota: se utilizzi credenziali a lungo termine, assicurati che l'ID della chiave di accesso sia valido. È consigliabile utilizzare credenziali di sicurezza temporanee anziché credenziali a lungo termine come chiavi di accesso. Per ulteriori informazioni, consulta Alternative alle chiavi di accesso a lungo termine.
Se utilizzi un profilo denominato con AWS CLI, assicurati che le impostazioni aws_access_key_id e aws_session_token abbiano i valori corretti. Le impostazioni del profilo sono memorizzate nel file ./aws/credentials o ./aws/config.
Se hai credenziali archiviate in variabili di ambiente che non sono valide, esegui questo comando per rimuoverle:
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
Se hai aggiornato le impostazioni del profilo, assicurati di reimpostare le variabili di ambiente.
Dopo aver aggiornato o sostituito le credenziali, esegui il comando AWS CLI get-caller-identity per verificare che le credenziali siano valide:
aws sts get-caller-identity --debug
Esempio di output:
2024-06-04 12:46:07,167 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: env 2024-06-04 12:46:07,167 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role 2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: assume-role-with-web-identity 2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: sso 2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: shared-credentials-file 2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: custom-process 2024-06-04 12:46:07,168 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: config-file 2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: ec2-credentials-file 2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: boto-config 2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: container-role 2024-06-04 12:46:07,169 - MainThread - botocore.credentials - DEBUG - Looking for credentials via: iam-role 2024-06-04 12:46:07,177 - MainThread - botocore.credentials - DEBUG - Found credentials from IAM Role: ec2_Role
Nell'output precedente, l'istanza utilizza le credenziali del profilo dell'istanza Amazon EC2 perché non ci sono altre credenziali archiviate con una precedenza maggiore.
Informazioni correlate
Perché la mia istanza Amazon EC2 utilizza le credenziali utente IAM anziché le credenziali di ruolo?
- Argomenti
- Security, Identity, & Compliance
- Lingua
- Italiano
