Esempio 2: il proprietario del bucket concede autorizzazioni per il bucket multiaccount - Amazon Simple Storage Service

Esempio 2: il proprietario del bucket concede autorizzazioni per il bucket multiaccount

Importante

Concedere le autorizzazioni ai ruoli IAM è una pratica migliore rispetto alla concessione delle autorizzazioni ai singoli utenti. Per informazioni su come effettuare questa operazione, consulta Comprendere le autorizzazioni multi-account e utilizzare i ruoli IAM.

Un Account AWS, ad esempio l'Account A, può concedere a un altro Account AWS, l'Account B, autorizzazioni per accedere alle proprie risorse, quali bucket e 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ò inoltre concedere le autorizzazioni a un utente dell'Account B mediante una policy 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 guidata:

Un Account AWS che concede a un altro Account AWS il permesso di accedere alle sue risorse.
  1. L'amministratore dell'Account A collega una policy di bucket che concede all'Account B autorizzazioni multiaccount per l'esecuzione di specifiche operazioni nel bucket.

    L'utente amministratore dell'Account B erediterà automaticamente le autorizzazioni.

  2. L'utente amministratore dell'account B collega una policy utente all'utente per delegare le autorizzazioni ricevute dall'Account A.

  3. 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 viene fatto riferimento a questi account e ai relativi utenti amministratori. 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. Viene invece creato un utente amministratore in ciascun account e le credenziali vengono utilizzate per la creazione di risorse e per concedere autorizzazioni a tali risorse.

Account AWSID Account denominato Utente amministratore nell'account

1111-1111-1111

Account A

AccountAadmin

2222-2222-2222

Account B

AccountBadmin

Tutte le attività di creazione degli utenti e assegnazione delle autorizzazioni vengono effettuate nella Console di gestione AWS. Per verificare le autorizzazioni, la spiegazione passo per passo utilizza gli strumenti a riga di comando, AWS Command Line Interface (CLI) e AWS Tools for Windows PowerShell. Non è pertanto necessario scrivere alcun codice.

Preparazione della spiegazione passo per passo

  1. Verifica di disporre di due Account AWS con un utente amministratore ciascuno, come illustrato nella tabella della sezione precedente.

    1. Registrare un Account AWS, se necessario.

    2. Utilizzando le credenziali dell'Account A, accedere alla console IAM per creare l'utente amministratore:

      1. Crea l'utente AccountAadmin e annota le credenziali di sicurezza. Per istruzioni, consulta Creazione di un utente IAM nell'Account AWS nella Guida per l'utente di IAM.

      2. Concedere i privilegi di amministratore ad AccountAadmin allegando una policy utente che dia accesso completo. Per istruzioni, consulta Gestione di policy IAM nella Guida per l'utente di IAM.

    3. Nella console IAM, annota l'URL di accesso dell'utente IAM nella Dashboard. Tutti gli utenti dell'account devono utilizzare questo URL per accedere alla Console di gestione AWS.

      Per ulteriori informazioni, consulta In che modo gli utenti effettuano l'accesso al tuo account nella Guida per l'utente IAM.

    4. Ripeti il passaggio precedente utilizzando le credenziali dell'account B e creare l'utente amministratore AccountBadmin.

  2. Imposta AWS Command Line Interface (AWS CLI) o AWS Tools for Windows PowerShell. Assicurati di salvare le credenziali dell'utente amministratore come segue:

    • Se utilizzi la AWS CLI, crea due profili, AccountAadmin e AccountBadmin, nel file di configurazione.

    • Se si utilizza AWS Tools for Windows PowerShell, assicurati di memorizzare le credenziali per la sessione come AccountAadmin e AccountBadmin.

    Per istruzioni, consulta Impostazione degli strumenti per le visite guidate.

  3. 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.

    1. Aggiungi i profili nel file delle credenziali di AWS CLI per ciascuno degli utenti amministratori, AccountAadmin e AccountBadmin, 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
    2. Se si utilizza AWS Tools for Windows PowerShell, esegui il seguente comando.

      set-awscredentials –AccessKey AcctA-access-key-ID –SecretKey AcctA-secret-access-key –storeas AccountAadmin set-awscredentials –AccessKey AcctB-access-key-ID –SecretKey AcctB-secret-access-key –storeas AccountBadmin

Fase 1: esecuzione delle attività per l'Account A

Fase 1.1: accesso alla Console di gestione AWS

Utilizzando l'URL di accesso dell'utente IAM per l'account A, accedi prima a Console di gestione AWS come utente AccountAadmin. Questo utente creerà un bucket e vi allegherà una policy.

Fase 1.2: creazione di un bucket

  1. Nella console di Amazon S3 creare 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 istruzioni, consulta Creazione di un bucket per uso generico.

  2. Caricare un oggetto campione nel bucket.

    Per istruzioni, vai su Fase 2: Carica un oggetto nel tuo bucket.

Fase 1.3: collegare una policy del bucket per concedere autorizzazioni tra account 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.

  1. Collegare la seguente policy di bucket a amzn-s3-demo-bucket. La policy concede all'Account B autorizzazioni per le operazioni s3:GetLifecycleConfiguration e s3:ListBucket.

    Per istruzioni, consulta Aggiunta di una policy di bucket utilizzando la console di Amazon S3.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Example permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }
  2. 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 --bucket amzn-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 -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBadmin

Fase 2: esecuzione delle attività per l'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: accesso alla Console di gestione AWS

Utilizzando l'URL di accesso dell'utente IAM per l'account B, accedi prima a Console di gestione AWS come utente AccountBadmin.

Fase 2.2: creazione dell'utente Dave nell'Account B

Nella console IAM, crea un utente, Dave.

Per le istruzioni, consulta Creazione di utenti IAM (console) nella Guida per l'utente di IAM.

Fase 2.3: delega delle autorizzazioni all'utente Dave

Creare una policy inline per l'utente Dave mediante la policy che segue. Sarà necessario aggiornare la policy specificando il nome del bucket.

Si presume che sia stato effettuato l'accesso alla console utilizzando le credenziali dell'utente AccountBadmin.

JSON
{ "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: testare le autorizzazioni

Ora l'utente Dave dell'Account B può elencare il contenuto di amzn-s3-demo-bucket di proprietà dell'Account A. È possibile verificare le autorizzazioni mediante una delle procedure descritte di seguito.

Testa le autorizzazioni usando il metodo AWS CLI
  1. 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
  2. Al prompt dei comandi, immettere il seguente comando AWS CLI per verificare che Dave possa ora ottenere un elenco di oggetti dal profilo amzn-s3-demo-bucket di proprietà dell'account A. Si noti che il comando specifica il profilo UserDave.

    aws s3 ls s3://amzn-s3-demo-bucket --profile UserDave

    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
  1. Memorizza le credenziali di Dave come AccountBDave.

    set-awscredentials -AccessKey AccessKeyID -SecretKey SecretAccessKey -storeas AccountBDave
  2. Provare a utilizzare il comando List Bucket.

    get-s3object -BucketName amzn-s3-demo-bucket -StoredCredentials AccountBDave

    Dave 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 un rifiuto esplicito

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.

  1. Utilizzando le credenziali dell'utente AccountAadmin nell'account A, sostituisci la policy del bucket con il seguente.

  2. 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

  1. Una volta terminato il test, è possibile eseguire le seguenti operazioni di pulizia:

    1. Accedere alla Console di gestione AWS (Console di gestione AWS) utilizzando le credenziali dell'Account A ed effettuare quanto segue:

      • Nella console di Amazon S3 rimuovere la policy del bucket collegata a amzn-s3-demo-bucket. Nelle Proprietà del bucket, elimina la policy nella sezione Autorizzazioni.

      • Se il bucket è stato creato per questo esercizio, nella console di Amazon S3 eliminare gli oggetti e quindi il bucket.

      • Nella Console IAM, rimuovi l'utente AccountAadmin.

  2. 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.