Esempio 3: il proprietario del bucket concede autorizzazioni per gli oggetti che non sono di sua proprietà - Amazon Simple Storage Service

Esempio 3: il proprietario del bucket concede autorizzazioni per gli oggetti che non sono di sua proprietà

In questo scenario di esempio, il proprietario del bucket vuole concedere autorizzazioni per accedere agli oggetti, sebbene non tutti gli oggetti nel bucket siano di sua proprietà. In questo esempio, il proprietario del bucket tenta di concedere autorizzazioni agli utenti nel proprio account.

Il proprietario del bucket può permettere ad altri Account AWS di caricare oggetti. Per impostazione predefinita, il proprietario del bucket non possiede oggetti scritti su un bucket da un altro Account AWS. Gli oggetti sono di proprietà degli account che li scrivono in un bucket S3. Se il proprietario del bucket non possiede oggetti nel bucket, il proprietario dell'oggetto dovrà per prima cosa concedere l'autorizzazione al proprietario del bucket utilizzando un'ACL dell'oggetto. Quindi, il proprietario del bucket può concedere autorizzazioni a un oggetto che non possiede. Per ulteriori informazioni, consultare Proprietà di bucket e oggetti di Amazon S3.

Se il proprietario del bucket esegue l'impostazione proprietario del bucket applicato per S3 Object Ownership per il bucket, il proprietario del bucket possiederà tutti gli oggetti nel bucket, inclusi gli oggetti scritti da un altro Account AWS. Questo risolverà il problema qualora gli oggetti non appartengano al proprietario del bucket. Quindi, puoi delegare le autorizzazioni agli utenti nel tuo account o ad altri Account AWS.

Nota

Per impostazione predefinita, quando un altro Account AWS carica un oggetto nel bucket S3, tale account (l'object writer) possiede l'oggetto, ne ha accesso e può concedere ad altri utenti l'accesso tramite ACL. È possibile utilizzare Object Ownership per modificare questo comportamento di default in modo che le ACL siano disabilitate e che tu, in qualità di proprietario del bucket, possieda automaticamente ogni oggetto nel tuo bucket. Di conseguenza, il controllo degli accessi per i tuoi dati è basato su policy, come policy IAM, policy bucket S3, policy endpoint del cloud privato virtuale (VPC) e policy di controllo dei servizi (SCP) di AWS Organizations.

La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di ACL ed è consigliabile disabilitarle tranne in circostanze straordinarie in cui è necessario controllare l'accesso individualmente per ciascun oggetto. Con Object Ownership, è possibile disabilitare le ACL e fare affidamento sulle policy per il controllo degli accessi. Quando si disabilitano le ACL, è possibile mantenere facilmente un bucket con oggetti caricati da diversi Account AWS. In qualità di proprietario del bucket, possiedi tutti gli oggetti nel bucket e puoi gestirne l'accesso utilizzando le policy. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket.

In questo esempio supponiamo che il proprietario del bucket non abbia applicato l'impostazione proprietario del bucket applicato per Object Ownership. Il proprietario del bucket delega queste autorizzazioni agli utenti nel suo account. Di seguito è riportato un riepilogo delle fasi della procedura guidata:

  1. L'utente amministratore dell'Account A collega una policy di bucket con due istruzioni.

    • Concedere all'Account B autorizzazioni multiaccount per caricare oggetti.

    • Consentire a un utente nel proprio account di accedere agli oggetti nel bucket.

  2. L'utente amministratore dell'account B carica gli oggetti nel bucket di proprietà dell'Account A.

  3. L'amministratore dell'Account B aggiorna l'ACL dell'oggetto e concede al proprietario del bucket l'autorizzazione al controllo completo sull'oggetto.

  4. L'utente dell'Account A fa una verifica accedendo agli oggetti nel bucket, indipendentemente da chi ne ha la proprietà.

Per questo utente, sono necessari due account. La tabella seguente mostra come viene fatto riferimento a questi account e agli utenti amministratori degli account: In questa spiegazione passo per passo, non si utilizzano le credenziali root dell'account, in base a quanto riportato nelle linee guida IAM consigliate. Per ulteriori informazioni, consulta Informazioni sull'uso di un utente amministratore per creare risorse e concedere autorizzazioni. 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 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 (AWS CLI) e AWS Tools for Windows PowerShell. Non è pertanto necessario scrivere alcun codice.

Fase 0: preparazione della procedura guidata

  1. Assicurati di disporre di due Account AWS, ognuno con un amministratore, come illustrato nella tabella della sezione precedente.

    1. Registrare un Account AWS, se necessario.

      1. Passa alla pagina di Amazon S3 e seleziona Crea un account AWS.

      2. Seguire le istruzioni visualizzate sullo schermo. AWS comunicherà via e-mail quando l'account è attivo e disponibile per l'utilizzo.

    2. Utilizzando le credenziali dell'Account A, accedere alla console IAM ed effettuare quanto segue per creare un utente amministratore:

      • Crea l'utente AccountAadmin e prendi nota delle credenziali di sicurezza. Per ulteriori informazioni sull'aggiunta di utenti, consulta Creazione di un utente IAM nell'Account AWS nella Guida per l'utente di IAM.

      • Concedi i privilegi di amministratore AccountAadmin collegando una policy utente per l'accesso completo. Per le istruzioni, consulta Gestione di policy IAM nella Guida per l'utente di IAM.

      • Nella console IAM, nel Dashboard (Pannello di controllo) prendere nota dell'URL di accesso dell'utente IAM. Gli utenti di questo 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.

    3. Ripeti la fase precedente utilizzando le credenziali dell'Account B e crea un utente amministratore AccountBadmin.

  2. Configura la AWS CLI o Tools for Windows PowerShell. Assicurati di salvare le credenziali di amministratore nel modo seguente:

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

    • Se utilizzi 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.

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

Esegui le operazioni riportate di seguito per l'Account A:

Fase 1.1: Accesso alla 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 e di un utente e aggiunta di una policy di bucket che concede le autorizzazioni utente

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

    Per istruzioni, consultare Creazione di un bucket.

  2. Nella console IAM, crea un utente Dave.

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

  3. Prendere nota delle credenziali dell'utente Dave.

  4. Nella console Amazon S3 collegare la seguente policy del bucket a DOC-EXAMPLE-BUCKET1. Per istruzioni, consultare Aggiunta di una policy di bucket utilizzando la console Amazon S3. Seguire le fasi per l'aggiunta di una policy di bucket. Per informazioni su come trovare gli ID account, consulta Ricerca del tuo ID Account AWS.

    La policy concede all'Account B le autorizzazioni s3:PutObject e s3:ListBucket. Inoltre, la policy concede all'utente Dave l'autorizzazione s3:GetObject.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:root" }, "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1" ] }, { "Sid": "Statement3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:user/Dave" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] } ] }

Fase 2: esecuzione delle attività per l'Account B

Ora che l'Account B dispone delle autorizzazioni per eseguire operazioni sul bucket dell'Account A, l'amministratore dell'Account B dovrà completare le seguenti operazioni:

  • Caricare un oggetto nel bucket dell'Account A

  • Aggiungere un'autorizzazione nell'ACL dell'oggetto per concedere controllo completo all'Account A, il proprietario del bucket.

Utilizzo di AWS CLI
  1. Utilizzando il comando della CLI di put-object, carica un oggetto. Il parametro --body nel comando identifica il file di origine da caricare. Se ad esempio il file si trova nell'unità C: di un computer Windows, specificare c:\HappyFace.jpg. Il parametro --key fornisce il nome della chiave dell'oggetto.

    aws s3api put-object --bucket DOC-EXAMPLE-BUCKET1 --key HappyFace.jpg --body HappyFace.jpg --profile AccountBadmin
  2. Aggiungere un'autorizzazione nell'ACL dell'oggetto per concedere controllo completo dell'oggetto al proprietario del bucket. Per informazioni su come trovare un ID utente canonico, consulta Ricerca dell'ID utente canonico per l'Account AWS.

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET1 --key HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBadmin
Utilizzo di Tools for Windows PowerShell
  1. Tramite il comando di Write-S3Object Tools for Windows PowerShell, carica un oggetto.

    Write-S3Object -BucketName DOC-EXAMPLE-BUCKET1 -key HappyFace.jpg -file HappyFace.jpg -StoredCredentials AccountBadmin
  2. Aggiungere un'autorizzazione nell'ACL dell'oggetto per concedere controllo completo dell'oggetto al proprietario del bucket.

    Set-S3ACL -BucketName DOC-EXAMPLE-BUCKET1 -Key HappyFace.jpg -CannedACLName "bucket-owner-full-control" -StoredCreden

Fase 3: testare le autorizzazioni

A questo punto, verifica se l'utente Dave nell'Account A ha accesso all'oggetto di proprietà dell'Account B.

Utilizzo di AWS CLI
  1. Aggiungi le credenziali dell'utente Dave al file di configurazione della AWS CLI e crea un nuovo profilo, UserDaveAccountA. Per ulteriori informazioni, consulta Configurazione degli strumenti per le procedure guidate di esempio.

    [profile UserDaveAccountA] aws_access_key_id = access-key aws_secret_access_key = secret-access-key region = us-east-1
  2. Esegui il comando della CLI di get-object per scaricare HappyFace.jpg e salvarlo in locale. Le credenziali dell'utente Dave vengono fornite aggiungendo il parametro --profile.

    aws s3api get-object --bucket DOC-EXAMPLE-BUCKET1 --key HappyFace.jpg Outputfile.jpg --profile UserDaveAccountA
Utilizzo di Tools for Windows PowerShell
  1. Archivia le credenziali AWS dell'utente Dave, come UserDaveAccountA, in uno storage persistente.

    Set-AWSCredentials -AccessKey UserDave-AccessKey -SecretKey UserDave-SecretAccessKey -storeas UserDaveAccountA
  2. Esegui il comando Read-S3Object per scaricare l'oggetto HappyFace.jpg e salvarlo in locale. Le credenziali dell'utente Dave vengono fornite aggiungendo il parametro -StoredCredentials.

    Read-S3Object -BucketName DOC-EXAMPLE-BUCKET1 -Key HappyFace.jpg -file HappyFace.jpg -StoredCredentials UserDaveAccountA

Fase 4: pulizia

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

    1. Accedi alla AWS Management Console utilizzando le credenziali dell'Account A e procedere come di seguito:

      • Nella console Amazon S3 rimuovere la policy del bucket collegata a DOC-EXAMPLE-BUCKET1. 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, rimuovi l'utente AccountAadmin.

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