Questa documentazione è valida AWS CLI solo per la versione 1. Per la documentazione relativa alla versione 2 di AWS CLI, consulta la Guida per l'utente della versione 2.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di un IAM ruolo in AWS CLI
Un ruolo AWS Identity and Access Management (IAM) è uno strumento di autorizzazione che consente a un utente di ottenere autorizzazioni aggiuntive (o diverse) o di ottenere le autorizzazioni per eseguire azioni in un account diverso AWS .
Argomenti
- Prerequisiti
- Panoramica sull'utilizzo dei IAM ruoli
- Configurazione e utilizzo di un ruolo
- Utilizzo dell'autenticazione a più fattori
- Ruoli per più account e ID esterno
- Specifica di un nome di sessione del ruolo per semplificare l'audit
- Assunzione di un ruolo con un'identità Web
- Cancellazione delle credenziali nella cache
Prerequisiti
Per eseguire i iam
comandi, è necessario installare e configurare. AWS CLI Per ulteriori informazioni, consulta Installazione, aggiornamento e disinstallazione di AWS CLI.
Panoramica sull'utilizzo dei IAM ruoli
È possibile configurare AWS Command Line Interface (AWS CLI) per l'utilizzo di un IAM ruolo definendo un profilo per il ruolo nel ~/.aws/config
file.
L'esempio seguente mostra un profilo del ruolo denominato marketingadmin
. Se esegui comandi con --profile marketingadmin
(o li specifichi con la variabile di AWS_PROFILE ambiente), AWS CLI utilizza le credenziali definite in un profilo separato user1
per assumere il ruolo con Amazon Resource Name (ARN)arn:aws:iam::
. Puoi eseguire tutte le operazioni consentite dalle autorizzazioni assegnate a tale ruolo.123456789012
:role/marketingadminrole
[profile
marketingadmin
] role_arn = arn:aws:iam::123456789012
:role/marketingadminrole
source_profile = user1
Puoi quindi specificare un profilo con nome separato source_profile
che contenga le credenziali utente con l'autorizzazione a utilizzare il ruolo. Nell'esempio precedente il profilo marketingadmin
utilizza le credenziali del profilo user1
. Quando si specifica che un AWS CLI comando deve utilizzare il profilomarketingadmin
, cerca AWS CLI automaticamente le credenziali per il user1
profilo collegato e le utilizza per richiedere credenziali temporanee per il ruolo specificato. IAM A tale scopo CLI utilizza l'AssumeRoleoperazione sts: in background. Queste credenziali temporanee vengono quindi utilizzate per eseguire il comando richiesto AWS CLI . Al ruolo specificato devono essere associate politiche di IAM autorizzazione che consentano l'esecuzione del AWS CLI comando richiesto.
Per eseguire un AWS CLI comando da un'istanza Amazon Elastic Compute Cloud (AmazonEC2) o da un contenitore Amazon Elastic Container Service (AmazonECS), puoi utilizzare un IAM ruolo collegato al profilo dell'istanza o al contenitore. Se non specifichi alcun profilo o non imposti variabili di ambiente, tale ruolo viene utilizzato direttamente. In questo modo, potrai evitare di archiviare chiavi di accesso di lunga durata nelle istanze. Puoi anche utilizzare i ruoli dell'istanza o del container solo per ottenere le credenziali per un altro ruolo. A tale scopo, usa credential_source
(anziché source_profile
) per specificare come trovare le credenziali. L'attributo credential_source
supporta i seguenti valori:
-
Environment
— Recupera le credenziali di origine dalle variabili di ambiente. -
Ec2InstanceMetadata
— Utilizza il IAM ruolo associato al profilo dell'EC2istanza Amazon. -
EcsContainer
— Utilizza il IAM ruolo associato al ECS contenitore Amazon.
L'esempio seguente mostra lo stesso marketingadminrole
ruolo utilizzato facendo riferimento a un profilo di EC2 istanza Amazon.
[profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole credential_source = Ec2InstanceMetadata
Quando si richiama un ruolo, sono disponibili opzioni aggiuntive che è possibile richiedere, ad esempio l'utilizzo dell'autenticazione a più fattori e di un ID esterno (utilizzato da società terze per accedere alle risorse dei client). Puoi anche specificare nomi di sessione di ruolo univoci che possono essere controllati più facilmente nei AWS CloudTrail log.
Configurazione e utilizzo di un ruolo
Quando esegui comandi utilizzando un profilo che specifica un IAM ruolo, AWS CLI utilizza le credenziali del profilo di origine per chiamare AWS Security Token Service (AWS STS) e richiedere credenziali temporanee per il ruolo specificato. L'utente nel profilo di origine deve disporre dell'autorizzazione per chiamare sts:assume-role
per il ruolo nel profilo specificato. Il ruolo deve disporre di una relazione di trust che consente all'utente nel profilo di origine di usare il ruolo. Il processo di recupero e quindi di utilizzo delle credenziali temporanee per un ruolo è spesso definito come assunzione del ruolo.
Puoi creare un ruolo IAM con le autorizzazioni che desideri che gli utenti assumano seguendo la procedura riportata in Creazione di un ruolo per delegare le autorizzazioni a un utente nella Guida per l'utente. IAM AWS Identity and Access Management Se il ruolo e l'utente del profilo di origine appartengono allo stesso account, puoi immettere il tuo ID account durante la configurazione della relazione di trust del ruolo.
Dopo aver creato il ruolo, modifica la relazione di fiducia per consentire all'utente di assumerlo.
L'esempio seguente mostra una policy di trust che può essere collegata a un ruolo. Questa politica consente a qualsiasi utente dell'account 123456789012 di assumere il ruolo, se l'amministratore di tale account concede esplicitamente l'autorizzazione all'utente. sts:AssumeRole
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Action": "sts:AssumeRole" } ] }
La policy di trust non concede attualmente autorizzazioni. L'amministratore dell'account deve delegare l'autorizzazione per assumere il ruolo a singoli utenti collegando una policy con le autorizzazioni appropriate. L'esempio seguente mostra una politica che è possibile allegare a un utente che consente all'utente di assumere solo il ruolo. marketingadminrole
Per ulteriori informazioni sulla concessione a un utente dell'accesso per assumere un ruolo, vedere Concessione dell'autorizzazione di un utente a cambiare ruolo nella Guida per l'IAMutente.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
123456789012
:role/marketingadminrole
" } ] }
L'utente non deve disporre di autorizzazioni aggiuntive per eseguire AWS CLI i comandi utilizzando il profilo del ruolo. Al contrario, le autorizzazioni per eseguire il comando provengono da quelle associate al ruolo. Si allegano politiche di autorizzazione al ruolo per specificare quali azioni possono essere eseguite su quali AWS risorse. Per ulteriori informazioni sull'assegnazione delle autorizzazioni a un ruolo (che funziona in modo identico a un utente), consulta Modifica delle autorizzazioni per un IAM utente nella Guida per l'utente. IAM
Ora che il profilo del ruolo, le autorizzazioni del ruolo, la relazione di trust del ruolo e le autorizzazioni utente sono configurate correttamente, puoi utilizzare il ruolo nella riga di comando richiamando l'opzione --profile
. Ad esempio, quanto segue chiama il ls
comando Amazon S3 utilizzando le autorizzazioni associate al marketingadmin
ruolo come definito nell'esempio all'inizio di questo argomento.
$
aws s3 ls --profile
marketingadmin
Per utilizzare il ruolo per diverse chiamate, puoi impostare la variabile di ambiente AWS_PROFILE
per la sessione corrente dalla riga di comando. Sebbene la variabile di ambiente sia definita, non è necessario specificare l'opzione --profile
su ogni comando.
Linux o macOS
$
export AWS_PROFILE=marketingadmin
Windows
C:\>
setx AWS_PROFILE marketingadmin
Per ulteriori informazioni sulla configurazione di utenti e ruoli, consulta IAMIdentità (utenti, gruppi di utenti e ruoli) e IAMruoli nella Guida per l'IAMutente.
Utilizzo dell'autenticazione a più fattori
Per una maggiore sicurezza, puoi richiedere che gli utenti forniscano una chiave monouso generata da un dispositivo di autenticazione a più fattori (MFA), un dispositivo U2F o un'app mobile quando tentano di effettuare una chiamata utilizzando il profilo del ruolo.
Innanzitutto, puoi scegliere di modificare la relazione di fiducia in base al ruolo da richiedere. IAM MFA Ciò impedisce a chiunque di utilizzare il ruolo senza prima autenticarsi utilizzando. MFA Per un esempio, consulta la riga Condition
nel seguente esempio. Questa politica consente all'utente denominato di anika
assumere il ruolo a cui è associata la politica, ma solo se si autentica utilizzando. MFA
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:multifactorAuthPresent": true } } } ] }
Quindi, aggiungi una riga al profilo del ruolo che specifica il ARN dispositivo dell'MFAutente. Le seguenti voci di config
file di esempio mostrano due profili di ruolo che utilizzano entrambi le chiavi di accesso per consentire anika
all'utente di richiedere credenziali temporanee per il ruolo. cli-role
L'utente anika
ha le autorizzazioni per assumere quel ruolo concesse dalla policy di trust del ruolo.
[profile role-without-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile=cli-user [profile role-with-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile = cli-user mfa_serial = arn:aws:iam::128716708097:mfa/cli-user [profile cli-user] region = us-west-2 output = json
L'mfa_serial
impostazione può richiedereARN, come illustrato, il numero di serie di un MFA token hardware.
Il primo profilo non richiedeMFA. role-without-mfa
Tuttavia, poiché la policy di fiducia dell'esempio precedente allegata al ruolo richiedeMFA, qualsiasi tentativo di eseguire un comando con questo profilo ha esito negativo.
$
aws iam list-users --profile role-without-mfa
An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
La seconda voce del profilorole-with-mfa
, identifica un MFA dispositivo da utilizzare. Quando l'utente tenta di eseguire un AWS CLI comando con questo profilo, AWS CLI richiede all'utente di inserire la password monouso (OTP) fornita dal dispositivo. MFA Se l'MFAautenticazione ha esito positivo, il comando esegue l'operazione richiesta. Non OTP viene visualizzato sullo schermo.
$
aws iam list-users --profile role-with-mfa
Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user: { "Users": [ { ...
Ruoli per più account e ID esterno
Puoi abilitare gli utenti in modo che assumano ruoli appartenenti ad account diversi configurando il ruolo come ruolo per più account. Durante la creazione del ruolo, imposta il tipo di ruolo su Un altro AWS account, come descritto in Creazione di un ruolo per delegare le autorizzazioni a un IAM utente. Facoltativamente, seleziona Richiedi. MFA MFARequire configura la condizione appropriata nella relazione di trust, come descritto in. Utilizzo dell'autenticazione a più fattori
Se utilizzi un ID esterno per fornire ulteriore controllo su chi può usare un ruolo per diversi account, devi aggiungere il parametro external_id
al profilo del ruolo. Ciò viene utilizzato in genere solo quando l'altro account è controllato da qualcuno esterno all'azienda o organizzazione.
[profile crossaccountrole] role_arn = arn:aws:iam::
234567890123
:role/SomeRole
source_profile = default mfa_serial = arn:aws:iam::123456789012
:mfa/saanvi
external_id =
123456
Specifica di un nome di sessione del ruolo per semplificare l'audit
Quando molti individui condividono un ruolo, l'audit diventa più difficile. Si supponga che tu voglia associare ogni operazione richiamata alla persona che ha richiamato l'operazione. Tuttavia, quando la persona utilizza un ruolo, l'assunzione del ruolo da parte dell'individuo è un'operazione distinta rispetto alla chiamata di un'operazione ed è pertanto necessario correlare manualmente le due cose.
Puoi semplificare questa operazione specificando nomi univoci delle sessioni del ruolo quando gli utenti assumono un ruolo. A tale scopo, aggiungi un parametro role_session_name
a ogni profilo denominato nel file config
che specifica un ruolo. Il role_session_name
valore viene passato all'AssumeRole
operazione e diventa parte della sessione ARN per il ruolo. È inoltre incluso nei AWS CloudTrail registri di tutte le operazioni registrate.
Ad esempio, puoi creare un profilo basato su ruoli come segue.
[profile namedsessionrole] role_arn = arn:aws:iam::
234567890123
:role/SomeRole
source_profile = default role_session_name =Session_Maria_Garcia
Ciò fa sì che la sessione di ruolo abbia quanto segue. ARN
arn:aws:iam::
234567890123
:assumed-role/SomeRole
/Session_Maria_Garcia
Inoltre, tutti i AWS CloudTrail log includono il nome della sessione di ruolo nelle informazioni acquisite per ogni operazione.
Assunzione di un ruolo con un'identità Web
È possibile configurare un profilo per indicare che AWS CLI devono assumere un ruolo utilizzando la federazione delle identità Web e Open ID Connect (OIDC). Quando lo specificate in un profilo, effettua AWS CLI
automaticamente la AWS STS AssumeRoleWithWebIdentity
chiamata corrispondente per voi.
Nota
Quando si specifica un profilo che utilizza un IAM ruolo, AWS CLI effettua le chiamate appropriate per recuperare le credenziali temporanee. Queste credenziali sono memorizzate in ~/.aws/cli/cache
. AWS CLI I comandi successivi che specificano lo stesso profilo utilizzano le credenziali temporanee memorizzate nella cache fino alla scadenza. A quel punto, aggiorna AWS CLI automaticamente le credenziali.
Per recuperare e utilizzare le credenziali temporanee utilizzando la federazione delle identità Web, puoi specificare i seguenti valori di configurazione in un profilo condiviso.
- role_arn
-
Speciifica il ruolo ARN da assumere.
- web_identity_token_file
-
Speciifica il percorso di un file che contiene un token di accesso OAuth 2.0 o un token OpenID Connect ID fornito dal provider di identità. L' AWS CLI carica questo file e passa il relativo contenuto come argomento
WebIdentityToken
all'operazioneAssumeRoleWithWebIdentity
. - role_session_name
-
Specifica un nome facoltativo applicato a questa sessione assume-role.
Di seguito è riportato un esempio di configurazione per la quantità minima di configurazione necessaria per configurare un profilo del ruolo assunto con un'identità Web:
# In ~/.aws/config [profile web-identity] role_arn=arn:aws:iam:
123456789012
:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token
Puoi anche fornire questa configurazione utilizzando variabili di ambiente:
- AWS_ROLE_ARN
-
Il ARN ruolo da assumere.
- AWS_WEB_IDENTITY_TOKEN_FILE
-
Il percorso del file del token dell'identità Web.
- AWS_ROLE_SESSION_NAME
-
Il nome applicato a questa sessione assume-role.
Nota
Queste variabili di ambiente attualmente si applicano solo al ruolo assumere con provider di identità Web. Non si applicano alla configurazione generale del provider dell'assunzione di ruoli.
Cancellazione delle credenziali nella cache
Quando si utilizza un ruolo, le credenziali temporanee vengono memorizzate nella AWS CLI cache locale fino alla loro scadenza. La prossima volta che provi a utilizzarle, AWS CLI tenta di rinnovarle per tuo conto.
Se le credenziali temporanee del ruolo vengono revocate, non vengono rinnovate automaticamente e i tentativi di utilizzarle non vanno a buon fine. Tuttavia, puoi eliminare la cache per AWS CLI forzare il recupero di nuove credenziali.
Linux o macOS
$
rm -r ~/.aws/cli/cache
Windows
C:\>
del /s /q %UserProfile%\.aws\cli\cache