Salta al contenuto

Come posso utilizzare l'interfaccia della linea di comando AWS per autenticare l'accesso alle risorse AWS con un token MFA?

4 minuti di lettura
0

Desidero utilizzare un token di autenticazione a più fattori (MFA) con l'interfaccia della linea di comando AWS (AWS CLI) per autenticare l'accesso alle mie risorse AWS.

Breve descrizione

Puoi attivare fino a otto dispositivi MFA per ogni utente AWS Identity and Access Management (IAM).

Nota: l'attivazione della MFA per l'utente root influisce solo sulle credenziali dell'utente root. Ogni identità IAM nell'account AWS dispone di una propria configurazione MFA.

Per attivare l'autenticazione a più fattori, consulta Abilita l'autenticazione a più fattori (MFA) per la sicurezza dell'utente root e Autenticazione a più fattori AWS in IAM.

Risoluzione

Se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per eseguire l'autenticazione alle risorse AWS con AWS CLI, ottieni credenziali temporanee tramite l'azione API GetSessionToken. Per impostazione predefinita, le credenziali temporanee sono valide per 12 ore. Utilizza il parametro duration-seconds per configurare la durata delle credenziali temporanee per un tempo compreso tra 15 minuti e 36 ore.

Nota: l'utente ha bisogno delle autorizzazioni IAM appropriate per utilizzare GetSessionToken. Per ulteriori informazioni, consulta Come posso applicare l'autenticazione MFA per gli utenti IAM che utilizzano la Console di gestione AWS e l'Interfaccia della linea di comando AWS?

ARN del dispositivo MFA

Per ottenere il nome della risorsa Amazon (ARN) del dispositivo MFA, completa questi passaggi:

  1. Apri la console IAM.
  2. Nel pannello di navigazione, scegli Utenti, quindi seleziona l'utente IAM.
  3. Nella pagina Riepilogo, scegli la scheda Credenziali di sicurezza.
  4. In Dispositivo MFA assegnato, copia l'ARN del dispositivo MFA.

Utilizzo dell'interfaccia della linea di comando AWS per ottenere credenziali temporanee

Esegui il comando get-session-token:

aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

Output di esempio:

{    "Credentials": {  
        "SecretAccessKey": "secret-access-key",  
        "SessionToken": "temporary-session-token",  
        "Expiration": "expiration-date-time",  
        "AccessKeyId": "access-key-id"  
    }  
}

Importante: assicurati che il numero di serie, il token e l'ARN del dispositivo MFA siano corretti. In caso contrario, potresti ricevere un messaggio di errore simile al seguente:

"An error occurred (AccessDenied) when calling the GetSessionToken operation: MultiFactorAuthentication failed, unable to validate MFA code. Please verify your MFA serial number is valid and associated with this user."

Per autenticare un dispositivo hardware MFA, il numero di serie si trova in genere sul retro del dispositivo ed è simile a GAHT12345678. Per autenticare un dispositivo virtuale MFA, il valore è simile a arn:aws:iam::123456789012:mfa/user.

Nota: l'interfaccia della linea di comando AWS supporta l'autenticazione MFA solo con un dispositivo MFA virtuale o hardware. L'interfaccia della linea di comando AWS non supporta l'autenticazione MFA con la chiave di sicurezza FIDO.

Per ulteriori informazioni, consulta Assign MFA devices in the AWS CLI or AWS API (Assegnazione di dispositivi MFA nell'interfaccia della linea di comando AWS o API AWS.

Utilizzo delle credenziali temporanee per esportare i valori in variabili di ambiente

Esegui i seguenti comandi per il sistema operativo (OS):

Linux

export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-outputexport AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output  
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Windows

set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-outputset AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output  
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output

Prima di eseguire nuovamente il comando get-session-token, esegui i seguenti comandi per annullare l'impostazione delle variabili di ambiente:

Linux

unset AWS_ACCESS_KEY_IDunset AWS_SECRET_ACCESS_KEY  
unset AWS_SESSION_TOKEN

Windows

set AWS_ACCESS_KEY_ID=set AWS_SECRET_ACCESS_KEY=  
set AWS_SESSION_TOKEN=

Utilizzo di credenziali temporanee con profili denominati

Puoi anche utilizzare profili denominati per specificare i comandi che richiedono l'autenticazione MFA. Nel file delle credenziali che si trova nella cartella .aws della home directory dell'utente, aggiungi una nuova configurazione del profilo per emettere comandi autenticati.
Esempio di configurazione del profilo:

[mfa]aws_access_key_id = example-access-key-as-in-returned-outputaws_secret_access_key = example-secret-access-key-as-in-returned-output  
aws_session_token = example-session-token-as-in-returned-output

Dopo la scadenza delle credenziali, esegui nuovamente il comando get-session-token. Quindi esporta i valori restituiti nelle variabili di ambiente o nella configurazione del profilo.

È consigliabile eseguire uno script o un cron job in background che verifichi la scadenza nell'output del comando get-session-token. Se il token MFA è scaduto, assicurati che lo script o il cron job richieda una nuova autenticazione.

Quando utilizzi profili denominati per l'autenticazione, specifica l'opzione profile seguita dal nome del profilo. Questo verifica che le chiamate API utilizzino la MFA per l'autenticazione.

Informazioni correlate

Come posso ripristinare un dispositivo MFA smarrito o danneggiato per il mio utente IAM o l'utente root dell'account AWS?

Come posso applicare l'autenticazione MFA per gli utenti IAM che utilizzano la Console di gestione AWS e l'interfaccia della linea di comando AWS?