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à.
Passaggio a un ruolo IAM (AWS CLI)
Un ruolo specifica un set di autorizzazioni da utilizzare per accedere alle risorse AWS necessarie. In questo senso, è simile a un utente in AWS Identity and Access Management (IAM). Quando effettui l'accesso come utente, ottieni uno specifico set di autorizzazioni. Tuttavia, non effettui l'accesso a un ruolo, ma dopo aver effettuato l'accesso come utente, puoi passare a un ruolo. Ciò consente di accantonare temporaneamente le autorizzazioni utente originali e usufruire invece delle autorizzazioni assegnate al ruolo. Il ruolo può trovarsi nel tuo account o in qualsiasi altro Account AWS. Per ulteriori informazioni sui ruoli e i relativi vantaggi e su come crearli e configurarli, consulta Ruoli IAM e Creazione di ruoli IAM. Per informazioni sui diversi metodi che si possono utilizzare per assumere un ruolo, consulta Metodi per assumere un ruolo.
Importante
Le autorizzazioni dell'utente IAM e di qualsiasi ruolo assunto non sono cumulative. Un solo set di autorizzazioni è attivo alla volta. Quando si assume un ruolo, si lascia temporaneamente l'utente precedente o le autorizzazioni del ruolo e si lavora con le autorizzazioni assegnate al ruolo. Quando lasci il ruolo, le autorizzazioni utente vengono automaticamente ripristinate.
Se collegato come utente IAM, puoi utilizzare un ruolo per eseguire un comando AWS CLI. Puoi utilizzare un ruolo anche per eseguire un comando AWS CLI se hai effettuato l'accesso come utente autenticato esternamente (SAML oppure OIDC) che sta già utilizzando un ruolo. Inoltre, puoi utilizzare un ruolo per eseguire un comando AWS CLI da un'istanza Amazon EC2 collegata a un ruolo tramite il relativo profilo. Non è possibile assumere un ruolo quando si è effettuato l'accesso come Utente root dell'account AWS.
Concatenamento del ruolo: puoi anche utilizzare la concatenamento dei ruoli che utilizza le autorizzazioni di un ruolo per accedere a un secondo ruolo.
Come impostazione predefinita, la sessione del ruolo dura un'ora. Quando si assume questo ruolo utilizzando le operazioni della CLI assume-role*
, è possibile specificare un valore per il parametro duration-seconds
. Questo valore può variare da 900 secondi (15 minuti) fino alla durata massima della sessione per il ruolo. Se cambi ruolo nella console, la durata della sessione è limitata a un massimo di un'ora. Per informazioni su come visualizzare il valore massimo per il ruolo, consulta Aggiornamento della durata massima della sessione per un ruolo.
Se si utilizza il concatenamento dei ruoli, la tua durata della sessione è limitata a un massimo di un'ora. Se successivamente utilizzi il parametro duration-seconds
per fornire un valore superiore a un'ora, l'operazione ha esito negativo.
Scenario di esempio: passaggio a un ruolo di produzione
Immagina di essere un utente IAM per utilizzare l'ambiente di sviluppo. In questo scenario, a volte è necessario utilizzare l'ambiente di produzione nella riga di comando con l'AWS CLI
Nota
Per motivi di sicurezza, gli amministratori possono esaminare i log AWS CloudTrail per sapere chi ha eseguito un'operazione in AWS. L'amministratore potrebbe richiedere di specificare una identità di origine o un nome della sessione del ruolo quando si assume il ruolo. Per ulteriori informazioni, consulta sts:SourceIdentity e sts:RoleSessionName.
Per passare a un ruolo di produzione (AWS CLI)
-
Se non è mai stata utilizzata AWS CLI, è necessario prima configurare il profilo predefinito della CLI. Apri un prompt dei comandi e imposta l'installazione AWS CLI in modo da utilizzare la chiave di accesso dall'utente IAM o dall'utente federato. Per ulteriori informazioni, consulta Configurazione della AWS Command Line Interface nella Guida per l'utente di AWS Command Line Interface.
Esegui il comando aws configure come riportato di seguito:
aws configure
Quando viene richiesto, fornire le seguenti informazioni:
AWS Access Key ID [None]:
AWS Secret Access Key [None]:AKIAIOSFODNN7EXAMPLE
Default region name [None]:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default output format [None]:us-east-2
json
-
Creare un nuovo profilo per il ruolo nel file
.aws/config
in Unix o Linux, oppure nel fileC:\Users\USERNAME\.aws\config
in Windows. L'esempio seguente crea un profilo denominatoprodaccess
che passa al ruolo
nell'accountProductionAccessRole
123456789012
. L'ARN del ruolo si ottiene dall'amministratore dell'account che ha creato il ruolo. Quando questo profilo viene richiamato, AWS CLI utilizza le credenziali disource_profile
per richiedere le credenziali per il ruolo. Per questo motivo, l'identità alla quale viene fatto riferimento comesource_profile
deve disporre delle autorizzazionists:AssumeRole
per il ruolo specificato inrole_arn
.[profile prodaccess] role_arn = arn:aws:iam::
123456789012
:role/ProductionAccessRole source_profile = default -
Dopo aver creato il nuovo profilo, qualsiasi comando AWS CLI che specifica il parametro
--profile prodaccess
viene eseguito con le autorizzazioni collegate al ruolo IAMProductionAccessRole
invece dell'utente di default.aws iam list-users --profile prodaccess
Questo comando funziona se le autorizzazioni assegnate a
ProductionAccessRole
permettono di elencare gli utenti nell'account attuale AWS. -
Per ripristinare le autorizzazioni concesse dalle credenziali originali, eseguire i comandi senza il parametro
--profile
. AWS CLI ritornerà a utilizzare le credenziali nel profilo predefinito, che è configurato in Passo 1.
Per ulteriori informazioni, consulta Assunzione di un ruolo nella Guida per l'utente di AWS Command Line Interface.
Scenario di esempio: consentire a un ruolo del profilo dell'istanza di passare a un ruolo in un altro account
Immaginiamo di utilizzare due Account AWS e di voler consentire a un'applicazione in esecuzione su un'istanza Amazon EC2 di eseguire i comandi AWS CLI111111111111
. Tale istanza include il ruolo del profilo dell'istanza abcd
che consente all'applicazione di eseguire attività Amazon S3 di sola lettura nel bucket amzn-s3-demo-bucket1
all'interno dello stesso account 111111111111
. Tuttavia, l'applicazione deve anche poter assumere il ruolo tra più account efgh
per eseguire attività nell'account 222222222222
. A questo scopo, il ruolo del profilo dell'istanza EC2 abcd
deve disporre della policy di autorizzazioni seguente:
Policy di autorizzazioni del ruolo abcd
111111111111 dell'account
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "AllowIPToAssumeCrossAccountRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/efgh" } ] }
Supponiamo che il ruolo tra account efgh
consenta attività Amazon S3 di sola lettura nel bucket amzn-s3-demo-bucket2
all'interno dello stesso account 222222222222
. A tale scopo, il ruolo tra account efgh
deve disporre della seguente policy di autorizzazioni:
Policy di autorizzazioni del ruolo efgh
222222222222 dell'account
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket2/*", "arn:aws:s3:::amzn-s3-demo-bucket2" ] } ] }
Il ruolo efgh
deve consentire al ruolo del profilo dell'istanza abcd
di assumerlo. A tale scopo, il ruolo efgh
deve disporre della seguente policy di attendibilità:
Policy di attendibilità del ruolo efgh
dell'account 222222222222
{ "Version": "2012-10-17", "Statement": [ { "Sid": "efghTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"} } ] }
Per eseguire i comandi AWS CLI nell'account 222222222222
, occorre quindi aggiornare il file di configurazione della CLI. Identifica il ruolo efgh
come il "profilo" e il ruolo del profilo dell'istanza EC2 abcd
come "origine delle credenziali" nel file di configurazione di AWS CLI. I comandi della CLI vengono quindi eseguiti con le autorizzazioni del ruolo efgh
, non il ruolo abcd
originale.
Nota
Per finalità di sicurezza, puoi utilizzare AWS CloudTrail per controllare l'uso dei ruoli nell'account. Per distinguere le sessioni del ruolo quando un ruolo viene utilizzato da entità diverse nei log CloudTrail, puoi utilizzare il nome della sessione del ruolo. Quando AWS CLI assume un ruolo a nome di un utente come descritto in questo argomento, il nome di una sessione di ruolo viene creato automaticamente come AWS-CLI-session-
. Di seguito nnnnnnnn
nnnnnnnn
è un intero che rappresenta il tempo in Tempo Unix epoch
Per consentire a un ruolo del profilo dell'istanza EC2 di passare a un ruolo tra account (AWS CLI)
-
Non è necessario configurare un profilo predefinito della CLI. Al contrario, puoi caricare le credenziali dai metadati del profilo dell'istanza EC2. Crea un nuovo profilo per il ruolo nel file
.aws/config
. L'esempio seguente crea un profiloinstancecrossaccount
che passa al ruolo
nell'accountefgh
222222222222
. Quando questo profilo viene richiamato, AWS CLI utilizza le credenziali dei metadati del profilo dell'istanza EC2 per richiedere le credenziali per il ruolo. Per questo motivo, il ruolo del profilo dell'istanza EC2 deve disporre delle autorizzazionists:AssumeRole
per il ruolo specificato nelrole_arn
.[profile instancecrossaccount] role_arn = arn:aws:iam::
222222222222
:role/efgh credential_source = Ec2InstanceMetadata -
Dopo aver creato il nuovo profilo, l'eventuale comando AWS CLI che specifica il parametro
--profile instancecrossaccount
viene eseguito con le autorizzazioni collegate al ruoloefgh
nell'account222222222222
.aws s3 ls amzn-s3-demo-bucket2 --profile instancecrossaccount
Questo comando funziona se le autorizzazioni che vengono assegnate al ruolo
efgh
consentono di elencare gli utenti nell'Account AWS corrente. -
Per tornare alle autorizzazioni del profilo dell'istanza EC2 originale nell'account
111111111111
, esegui i comandi della CLI senza il parametro--profile
.
Per ulteriori informazioni, consulta Assunzione di un ruolo nella Guida per l'utente di AWS Command Line Interface.