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

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 delle autorizzazioni dell'account padre a cui appartiene, l'Account B, anche se l'Account B non dispone delle autorizzazioni da parte dell'Account A. L'utente sarà in grado di accedere alle risorse purché disponga delle autorizzazioni da parte del proprietario della risorsa e dell'account padre.

Di seguito è riportato un riepilogo delle fasi della procedura guidata:

  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. Per le linee guida IAM (vedere Informazioni sull'uso di un utente amministratore per creare risorse e concedere autorizzazioni) non vengono utilizzate le credenziali account root in questa procedura guidata. 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.

ID Account AWS 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 AWS Management Console. 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.

Fase 0: preparazione della procedura guidata

  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.

      1. Passa a https://aws.amazon.com/s3/ e fai clic su Crea un account AWS.

      2. Seguire le istruzioni su schermo.

        AWS comunicherà via e-mail quando l'account è attivo e pronto all'uso.

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

      1. Creare l'utente AccountAadmin e prendere nota delle 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 AccountAadmin collegando una policy utente per l'accesso completo. Per istruzioni, consulta Gestione di policy IAM nella Guida per l'utente di IAM.

    3. Nella console IAM, prendere nota dell'URL di accesso dell'utente IAM nel Dashboard (Pannello di controllo). Tutti gli utenti dell'account devono utilizzare questo URL per accedere alla AWS Management Console.

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

    4. Ripetere la fase precedente utilizzando le credenziali dell'Account B e creare un utente amministratore AccountBadmin.

  2. Imposta AWS Command Line Interface (CLI) o AWS Tools for Windows PowerShell. Assicurarsi di salvare le credenziali dell'utente amministratore nel modo seguente:

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

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

    Per istruzioni, consultare Configurazione degli strumenti per le procedure guidate di esempio.

  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 Configurazione degli strumenti per le procedure guidate di esempio.

    1. Aggiungi profili nel file delle credenziali della AWS CLI per ciascun utente amministratore dei 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 stai usando la AWS Tools for Windows PowerShell

      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 AWS Management Console

Mediante l'URL di accesso dell'utente IAM per l'Account A, per prima cosa accedere alla AWS Management Console come utente AccountAadmin. L'utente creerà un bucket e allegherà ad esso una policy.

Fase 1.2: creazione di un bucket

  1. Nella console Amazon S3 creare un bucket. In questo esercizio si presume che il bucket sia creato nella regione Stati Uniti orientali (Virginia settentrionale) e che sia denominato DOC-EXAMPLE-BUCKET.

    Per istruzioni, consultare Creazione di un bucket.

  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 di bucket concede le autorizzazioni s3:GetLifecycleConfiguration e s3:ListBucket all'Account B. Si presume che l'utente sia ancora collegato alla console mediante le credenziali utente AccountAadmin.

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

    Per istruzioni, consultare Aggiunta di una policy di 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:::DOC-EXAMPLE-BUCKET" ] } ] }
  2. Verificare che l'Account B (e quindi il relativo utente amministratore) possa eseguire le operazioni.

    • Utilizzo di AWS CLI

      aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin aws s3api get-bucket-lifecycle-configuration --bucket DOC-EXAMPLE-BUCKET --profile AccountBadmin
    • Utilizzo di AWS Tools for Windows PowerShell

      get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBadmin get-s3bucketlifecycleconfiguration -BucketName DOC-EXAMPLE-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 AWS Management Console

Mediante l'URL di accesso dell'utente IAM per l'Account B, per prima cosa accedere alla AWS Management Console come utente AccountBadmin.

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

Nella console IAM, creare un utente, Dave.

Per le istruzioni, consulta Creazione di utenti IAM (AWS Management 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 l'utente abbia effettuato l'accesso alla console utilizzando le credenziali AccountBadmin.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Example", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }

Per istruzioni, consulta Gestione di policy inline nella Guida per l'utente di IAM.

Fase 2.4: testare le autorizzazioni

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

Test tramite la AWS CLI
  1. Aggiungi il profilo UserDave al file di configurazione della AWS CLI. Per ulteriori informazioni sul file di configurazione, consulta Configurazione degli strumenti per le procedure guidate di esempio.

    [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 della AWS CLI per verificare che Dave possa ottenere un elenco di oggetti dal DOC-EXAMPLE-BUCKET di proprietà dell'Account A. Il comando specifica il profilo UserDave.

    aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile UserDave

    Dave non dispone di altre autorizzazioni. Pertanto, se prova qualsiasi altra operazione, ad esempio la configurazione di get bucket lifecycle, Amazon S3 nega l'autorizzazione.

    aws s3api get-bucket-lifecycle-configuration --bucket DOC-EXAMPLE-BUCKET --profile UserDave
Test tramite AWS Tools for Windows PowerShell
  1. Archiviare 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 DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

    Dave non dispone di altre autorizzazioni. Pertanto, se prova qualsiasi altra operazione, ad esempio la configurazione di get bucket lifecycle, Amazon S3 nega l'autorizzazione.

    get-s3bucketlifecycleconfiguration -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Fase 3: (facoltativo) provare un rifiuto esplicito

Le autorizzazioni possono essere concesse mediante una ACL, una policy di bucket e una policy utente. Tuttavia, se è stato impostato un rifiuto esplicito tramite una policy di bucket o una policy utente, questo rifiuto esplicito ha la precedenza su qualsiasi altra autorizzazione. Per l'esecuzione del test, occorre aggiornare la policy di bucket e rifiutare esplicitamente l'autorizzazione s3:ListBucket per l'Account B. La policy concede inoltre l'autorizzazione s3:ListBucket, ma il rifiuto esplicito ha la precedenza e l'Account B o i relativi utenti non saranno in grado di elencare gli oggetti in DOC-EXAMPLE-BUCKET.

  1. Utilizzando le credenziali dell'utente AccountAadmin dell'Account A, sostituire la policy di bucket come segue.

    { "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:::DOC-EXAMPLE-BUCKET" ] }, { "Sid": "Deny permission", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }
  2. Se si tenta di ottenere un elenco di bucket utilizzando le credenziali AccountBadmin, l'accesso verrà rifiutato.

    • Utilizzo di AWS CLI:

      aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile AccountBadmin
    • Utilizzo di AWS Tools for Windows PowerShell:

      get-s3object -BucketName DOC-EXAMPLE-BUCKET -StoredCredentials AccountBDave

Fase 4: pulizia

  1. Dopo aver completato il test, è possibile eseguire la pulizia nel modo seguente:

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

      • Nella console Amazon S3 rimuovere la policy del bucket collegata a DOC-EXAMPLE-BUCKET. Nella sezione Properties (Proprietà) del bucket, eliminare la policy nella sezione Permissions (Autorizzazioni).

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

      • Nella console IAM, rimuovere l'utente AccountAadmin.

  2. Accedere alla AWS Management Console (AWS Management Console) tramite le credenziali dell'Account B. Nella console IAM, eliminare l'utente AccountBadmin.