Esempio 2: il proprietario del bucket concede autorizzazioni per il bucket multiaccount
Importante
La concessione di autorizzazioni ai ruoli IAM è una pratica migliore rispetto alla concessione di autorizzazioni ai singoli utenti. Per sapere come fare, consulta Comprendere le autorizzazioni multi-account e utilizzare i ruoli IAM.
Argomenti
Un Account AWS- ad esempio, l'account A - può concedere a un altro Account AWS, l'account B, il permesso di accedere alle sue risorse, come i bucket e gli oggetti. L'Account B può quindi delegare queste autorizzazioni agli utenti nel proprio account. In questo scenario di esempio, il proprietario del bucket concede a un altro account le autorizzazioni multiaccount per eseguire specifiche operazioni nel bucket.
Nota
L'account A può anche concedere direttamente le autorizzazioni a un utente dell'account B utilizzando un criterio di bucket. Tuttavia, l'utente avrà comunque bisogno dell'autorizzazione dell'account padre, l'account B, a cui appartiene, anche se l'account B non ha le autorizzazioni dell'account A. Finché l'utente ha l'autorizzazione sia del proprietario della risorsa che dell'account padre, potrà accedere alla risorsa.
Di seguito è riportato un riepilogo delle fasi della procedura:
![Un Account AWS che concede a un altro Account AWS il permesso di accedere alle sue risorse.](images/access-policy-ex2.png)
-
L'utente amministratore dell'account A allega un criterio del bucket che concede all'account B autorizzazioni trasversali per eseguire operazioni specifiche sul bucket.
L'utente amministratore dell'Account B erediterà automaticamente le autorizzazioni.
-
L'utente amministratore dell'account B collega una policy utente all'utente per delegare le autorizzazioni ricevute dall'Account A.
-
L'utente dell'Account B fa quindi una verifica delle autorizzazioni accedendo a un oggetto nel bucket di proprietà dell'Account A.
Per questo utente, sono necessari due account. La tabella seguente mostra come ci si riferisce a questi account e agli utenti amministratori in essi contenuti. In conformità alle linee guida IAM (consulta Informazioni sull'uso di un utente amministratore per creare risorse e concedere autorizzazioni), in questa guida non utilizzeremo le credenziali dell'utente root. Invece, si crea un utente amministratore in ogni account e si usano queste credenziali quando si creano le risorse e si concedono loro le autorizzazioni.
ID Account AWS | Account denominato | Utente amministratore nell'account |
---|---|---|
|
Account A |
AccountAadmin |
|
Account B |
AccountBadmin |
Tutte le operazioni di creazione degli utenti e di concessione dei permessi vengono eseguite in AWS Management Console. Per verificare i permessi, la guida utilizza gli strumenti a riga di comando AWS Command Line Interface (CLI) e AWS Tools for Windows PowerShell, quindi non è necessario scrivere alcun codice.
Preparazione della procedura guidata
-
Assicurati di avere due Account AWS e che ogni account abbia un utente amministratore, come mostrato nella tabella della sezione precedente.
-
Accedi a Account AWS, se necessario.
-
Utilizzando le credenziali dell'account A, accedere alla console IAM
per creare l'utente amministratore: -
Crea l'utente
AccountAadmin
e annota le credenziali di sicurezza. Per istruzioni, consulta Creazione di un utente IAM in Account AWS nella Guida all'utente IAM. -
Concedere i privilegi di amministratore ad AccountAadmin allegando una policy utente che dia accesso completo. Per istruzioni, consulta Operazioni con i criteri nella Guida dell'utente IAM.
-
-
Nella console IAM, annota l'URL di accesso dell'utente IAM nella Dashboard. Tutti gli utenti dell'account devono utilizzare questo URL quando accedono a AWS Management Console.
Per ulteriori informazioni, consulta Come gli utenti accedono al tuo account nella Guida all'utente IAM.
-
Ripeti il passaggio precedente utilizzando le credenziali dell'account B e creare l'utente amministratore
AccountBadmin
.
-
-
Imposta AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell. Assicurati di salvare le credenziali dell'utente amministratore come segue:
-
Se si utilizza AWS CLI, crea due profili,
AccountAadmin
eAccountBadmin
, nel file di configurazione. -
Se si utilizza AWS Tools for Windows PowerShell, assicurati di memorizzare le credenziali per la sessione come
AccountAadmin
eAccountBadmin
.
Per le istruzioni, consulta Impostazione degli strumenti per le visite guidate.
-
-
Salvare le credenziali dell'utente amministratore, chiamate anche profili. È possibile utilizzare il nome del profilo anziché specificare le credenziali per ciascun comando immesso. Per ulteriori informazioni, consulta Impostazione degli strumenti per le visite guidate.
-
Aggiungi i profili nel file delle credenziali di AWS CLI per ciascuno degli utenti amministratori,
AccountAadmin
eAccountBadmin
, nei due account.[AccountAadmin] aws_access_key_id =
access-key-ID
aws_secret_access_key =secret-access-key
region = us-east-1 [AccountBadmin] aws_access_key_id =access-key-ID
aws_secret_access_key =secret-access-key
region = us-east-1 -
Se si utilizza AWS Tools for Windows PowerShell, esegui il seguente comando.
set-awscredentials –AccessKey
AcctA-access-key-ID
–SecretKeyAcctA-secret-access-key
–storeas AccountAadmin set-awscredentials –AccessKeyAcctB-access-key-ID
–SecretKeyAcctB-secret-access-key
–storeas AccountBadmin
-
Fase 1: Eseguire le attività dell'Account A
Fase 1.1: Accedere a AWS Management Console
Utilizzando l'URL di accesso dell'utente IAM per l'account A, accedi prima a AWS Management Console come utente AccountAadmin. Questo utente creerà un bucket e vi allegherà una policy.
Fase 1,2: creare un bucket
-
Nella console Amazon S3, crea un bucket. Questo esercizio presuppone che il bucket sia stato creato nella zona est della Regione AWS Stati Uniti orientali (Virginia settentrionale) e sia denominato
.amzn-s3-demo-bucket
Per le istruzioni, consulta Creazione di un bucket.
-
Caricare un oggetto campione nel bucket.
Per le istruzioni, visita Fase 2: Carica un oggetto nel tuo bucket.
Fase 1.3: allegare un criterio del bucket per concedere autorizzazioni trasversali all'account B
La policy del bucket concede le autorizzazioni s3:GetLifecycleConfiguration
e s3:ListBucket
all'account B. Si presume che si sia ancora connessi alla console utilizzando le credenziali dell'utente AccountAadmin.
-
Allega il seguente criterio del bucket a
. Il criterio concede all'Account B l'autorizzazione per le azioniamzn-s3-demo-bucket
s3:GetLifecycleConfiguration
es3:ListBucket
.Per le istruzioni, consulta Aggiunta di un criterio per il bucket utilizzando la console Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountB-ID
:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] } ] } -
Verifica che l'account B (e quindi il suo utente amministratore) possa eseguire le operazioni.
-
Verifica con il tasto AWS CLI
aws s3 ls s3://
amzn-s3-demo-bucket
--profile AccountBadmin aws s3api get-bucket-lifecycle-configuration --bucketamzn-s3-demo-bucket
--profile AccountBadmin -
Verifica con il tasto AWS Tools for Windows PowerShell
get-s3object -BucketName
amzn-s3-demo-bucket
-StoredCredentials AccountBadmin get-s3bucketlifecycleconfiguration -BucketNameamzn-s3-demo-bucket
-StoredCredentials AccountBadmin
-
Fase 2: Eseguire le attività dell'Account B
A questo punto l'amministratore dell'Account B crea un utente, Dave, al quale delega le autorizzazioni ricevute dall'Account A.
Fase 2.1: Accedere a AWS Management Console
Utilizzando l'URL di accesso dell'utente IAM per l'account B, accedi prima a AWS Management Console come utente AccountBadmin.
Fase 2.2: Creare l'utente Dave nell'account B
Nella console IAMDave
.
Per istruzioni, consulta Creazione di utenti IAM (console) nella Guida all'utente IAM.
Fase 2.3: delegare le autorizzazioni all'utente Dave
Creare una policy inline per l'utente Dave mediante la policy che segue. È necessario aggiornare la policy fornendo il nome del proprio bucket.
Si presume che sia stato effettuato l'accesso alla console utilizzando le credenziali dell'utente AccountBadmin.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
" ] } ] }
Per istruzioni, consulta Gestione delle policy IAM nella Guida all'utente IAM.
Fase 2.4: Verifica delle autorizzazioni
Ora Dave nell'account B può elencare il contenuto di
di proprietà dell'account A. È possibile verificare le autorizzazioni utilizzando una delle seguenti procedure. amzn-s3-demo-bucket
Testa le autorizzazioni usando il metodo AWS CLI
-
Aggiungi il profilo
UserDave
al file di configurazione AWS CLI. Per ulteriori informazioni sul file di configurazione, consulta Impostazione degli strumenti per le visite guidate.[profile UserDave] aws_access_key_id =
access-key
aws_secret_access_key =secret-access-key
region =us-east-1
-
Al prompt dei comandi, immettere il seguente comando AWS CLI per verificare che Dave possa ora ottenere un elenco di oggetti dal profilo
di proprietà dell'account A. Si noti che il comando specifica il profiloamzn-s3-demo-bucket
UserDave
.aws s3 ls s3://
--profile UserDaveamzn-s3-demo-bucket
Dave non ha altri permessi. Quindi, se si tenta qualsiasi altra operazione, ad esempio la seguente configurazione
get-bucket-lifecycle
, Amazon S3 restituisce l'autorizzazione negata.aws s3api get-bucket-lifecycle-configuration --bucket
amzn-s3-demo-bucket
--profile UserDave
Testa le autorizzazioni utilizzando AWS Tools for Windows PowerShell
-
Memorizza le credenziali di Dave come
AccountBDave
.set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
-
Prova il comando Elenca bucket.
get-s3object -BucketName
amzn-s3-demo-bucket
-StoredCredentials AccountBDaveDave non ha altri permessi. Quindi, se si tenta un'altra operazione, ad esempio la seguente
get-s3bucketlifecycleconfiguration
-Amazon S3 restituisce Autorizzazione negata.get-s3bucketlifecycleconfiguration -BucketName
amzn-s3-demo-bucket
-StoredCredentials AccountBDave
Fase 3: (facoltativo) Provare a negare esplicitamente
Le autorizzazioni possono essere concesse utilizzando una lista di controllo degli accessi (ACL), una policy di bucket o una policy utente. Tuttavia, se c'è un rifiuto esplicito impostato da una policy del bucket o da una policy dell'utente, il rifiuto esplicito ha la precedenza su qualsiasi altra autorizzazione. Per i test, aggiornare la policy del bucket e negare esplicitamente all'account B l'autorizzazione s3:ListBucket
. La policy concede anche il permesso di s3:ListBucket
. Tuttavia, il rifiuto esplicito ha la precedenza e l'account B o gli utenti dell'account B non potranno elencare gli oggetti in
.amzn-s3-demo-bucket
-
Utilizzando le credenziali dell'utente
AccountAadmin
nell'account A, sostituisci la policy del bucket con il seguente.{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
AccountB-ID
:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] }, { "Sid": "Deny permission", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID
:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] } ] } -
Ora, se si cerca di ottenere un elenco di bucket utilizzando le credenziali di
AccountBadmin
, l'accesso viene negato.-
Utilizzando AWS CLI, esegui il seguente comando:
aws s3 ls s3://
amzn-s3-demo-bucket
--profile AccountBadmin -
Utilizzando AWS Tools for Windows PowerShell, esegui il seguente comando:
get-s3object -BucketName
amzn-s3-demo-bucket
-StoredCredentials AccountBDave
-
Fase 4: pulizia
-
Una volta terminato il test, è possibile eseguire le seguenti operazioni di pulizia:
-
Accedere a AWS Management Console (AWS Management Console
) utilizzando le credenziali dell'account A ed eseguendo le seguenti operazioni: -
Nella console di Amazon S3 rimuovere la policy del bucket collegata a
. Nelle Proprietà del bucket, elimina la policy nella sezione Autorizzazioni.amzn-s3-demo-bucket
-
Se il bucket è stato creato per questo esercizio, nella console Amazon S3, eliminare gli oggetti e quindi eliminare il bucket.
-
Nella Console IAM
, rimuovi l'utente AccountAadmin
.
-
-
-
Accedi alla Console IAM
utilizzando le credenziali dell'Account B. Cancella l'utente AccountBadmin
. Per istruzioni dettagliate, consulta Eliminazione di un utente IAM nella Guida all'utente IAM.