Salta al contenuto

Come posso risolvere l'errore relativo alle credenziali IAM "The security token included in the request isn’t valid"?

5 minuti di lettura
0

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.

  1. Per verificare le credenziali utilizzate dall'istanza EC2, esegui questi comandi:

    cd ~/.aws
    cat credentials

    Esempio di output:

    [default]
    aws_access_key_id=AKIAIOSFODNN7EXAMPLE
    aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  2. 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?

Come posso risolvere l'errore IAM "AWS was not able to validate the provided access credentials" in alcune Regioni AWS?

Gestisci AWS STS in un Regione AWS