In che modo posso utilizzare un token MFA per autenticare l'accesso alle mie risorse AWS tramite l'AWS CLI?
Voglio utilizzare un token MFA per autenticare l'accesso alle mie risorse AWS tramite l'interfaccia della linea di comando AWS (AWS CLI).
Risoluzione
Una best practice consiste nel proteggere il tuo account e le sue risorse utilizzando un dispositivo di autenticazione a più fattori (MFA). Se desideri interagire con le tue risorse utilizzando l'AWS CLI quando utilizzi un dispositivo MFA, devi creare una sessione temporanea. Se utilizzi un dispositivo hardware MFA, il valore è simile a GAHT12345678. Se utilizzi un MFA virtuale, il valore può essere trovato visualizzando le credenziali di sicurezza. Sembra simile a arn:aws:iam::123456789012:mfa/user. Per ulteriori informazioni, consulta Verifica dello stato MFA.
Importante:
- il supporto per le chiavi di sicurezza è disponibile solo con la Console di gestione AWS. Per ulteriori informazioni, consulta Abilitazione di una chiave di sicurezza FIDO (console). Come soluzione alternativa, è possibile utilizzare un dispositivo MFA virtuale. Per ulteriori informazioni, consulta Abilitazione e gestione dei dispositivi MFA virtuali (AWS CLI o API AWS).
- Tutti gli utenti IAM devono disporre di autorizzazioni sufficienti per creare, visualizzare e disabilitare i dispositivi MFA assegnati al proprio utente. Devono inoltre avere un dispositivo MDA acceso e assegnato al proprio utente prima di iniziare.
- Se ricevi un messaggio di errore durante l’esecuzione dei comandi AWS CLI, assicurati di usare la versione più recente di AWS CLI.
Esegui il comando sts get-session-token di AWS CLI, sostituendo le variabili con le informazioni del tuo account, risorse e dispositivo MFA:
$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token
Riceverai un output con credenziali temporanee e scadenza (per impostazione predefinita, 12 ore) simile al seguente:
{ "Credentials": { "SecretAccessKey": "secret-access-key", "SessionToken": "temporary-session-token", "Expiration": "expiration-date-time", "AccessKeyId": "access-key-id" } }
Nota: puoi specificare una scadenza (in secondi) utilizzando l'opzione --duration-seconds nel comando sts get-session-token in cui il valore può variare da 900 secondi (15 minuti) a 129.600 secondi (36 ore). Se si utilizzano le credenziali dell'utente root, l'intervallo è compreso tra 900 secondi (15 minuti) e 3.600 secondi (1 ora).
Utilizzo di credenziali temporanee con variabili di ambiente
Puoi utilizzare delle credenziali temporanee esportando i loro valori nelle variabili di ambiente utilizzando questi comandi.
Linux:
export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output export 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-output set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output
Se imposti le variabili d'ambiente, assicurati di annullarle prima di effettuare nuovamente la chiamata get-session-token utilizzando questi comandi.
Linux:
unset AWS_ACCESS_KEY_ID unset 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
Per specificare i comandi che richiedono l'autenticazione MFA puoi utilizzare anche profili denominati. A tale scopo, modifica il file delle credenziali nella cartella .aws nella directory home dell'utente in modo da aggiungere una nuova configurazione del profilo per l'emissione di comandi autenticati tramite MFA. Di seguito viene riportato un esempio di configurazione del profilo:
[mfa] aws_access_key_id = example-access-key-as-in-returned-output aws_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.
Suggerimento: prendi in considerazione l'esecuzione di uno script o di un processo cron in background che controlla la "scadenza" dall'output del comando get-session-token e quindi richiede una nuova autenticazione.
Se l'AWS CLI è configurata utilizzando il comando configure, esiste una configurazione predefinita con credenziali utente AWS Identity and Access Management (IAM) permanenti. Questo utente IAM può utilizzare comandi che non richiedono l'autenticazione MFA.
Configurazione di esempio:
.aws/credentials
[default] aws_access_key_id = example-access-Key-for-an-IAM-user aws_secret_access_key = example-secret-access-key-for-IAM-user
Nota: non è possibile utilizzare il parametro mfa_serial con credenziali IAM permanenti.
Se utilizzi i profili per autenticare i comandi tramite l'AWS CLI, specifica l'opzione --profile seguita dal nome del profilo per verificare che le chiamate vengano autenticate tramite MFA.
Ad esempio, questo comando utilizza le credenziali di profilo predefinite e non è autenticato con MFA.
$ aws s3 ls
Importante: assicurati di aver compreso la precedenza delle credenziali in modo da poter verificare che vengano utilizzate le credenziali corrette quando si effettuano chiamate API. Questa operazione può essere eseguita utilizzando il comando GetCallerIdentity.
$ aws s3 ls --profile mfa
Puoi anche richiedere che un utente si autentichi con un dispositivo MFA per effettuare particolari operazioni API con le condizioni aws:MultiFactorAuthPresent o aws:MultiFactorAuthAge in una policy IAM.
Informazioni correlate
Abilitazione dei dispositivi MFA per gli utenti su AWS
Dispositivo di autenticazione a più fattori (MFA) perso o inutilizzabile
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa