Esempio 4: il proprietario del bucket concede l'autorizzazione di più account a oggetti di cui non è proprietario - Amazon Simple Storage Service

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

Esempio 4: il proprietario del bucket concede l'autorizzazione di più account a oggetti di cui non è proprietario

In questo scenario di esempio, possiedi un bucket e ne hai abilitati altri Account AWS per caricare oggetti. Se hai applicato l'impostazione imposta dal proprietario del bucket per S3 Object Ownership per il bucket, sarai proprietario di tutti gli oggetti nel bucket, inclusi gli oggetti scritti da un altro utente Account AWS. Questo approccio risolve il problema che gli oggetti non sono di proprietà dell'utente, il proprietario del bucket. Quindi, puoi delegare l'autorizzazione agli utenti del tuo account o ad altri Account AWS. Supponiamo che l'impostazione applicata dal proprietario del bucket per S3 Object Ownership non sia abilitata. Cioè, il tuo bucket può contenere oggetti diversi Account AWS proprio.

Ora, si supponga che, in qualità di proprietario del bucket, si debbano concedere autorizzazioni multiaccount per gli oggetti a un utente di un altro account, indipendentemente dall'utente a cui appartengono. Ad esempio, l'utente potrebbe essere un'applicazione per la fatturazione che deve accedere ai metadata dell'oggetto. Esistono due problemi principali:

  • Il proprietario del bucket non ha autorizzazioni su quegli oggetti creati da altri Account AWS. Affinché il proprietario del bucket conceda le autorizzazioni su oggetti che non possiede, deve prima concedere l'autorizzazione al proprietario del bucket. Il proprietario dell'oggetto è il Account AWS che ha creato gli oggetti. Il proprietario del bucket può quindi delegare tali autorizzazioni.

  • L'account proprietario del bucket può delegare le autorizzazioni agli utenti nel proprio account (vedi). Esempio 3: il proprietario del bucket concede autorizzazioni per gli oggetti che non sono di sua proprietà Tuttavia, l'account proprietario del bucket non può delegare le autorizzazioni ad altri Account AWS perché la delega tra account non è supportata.

In questo scenario, il proprietario del bucket può creare un AWS Identity and Access Management (IAM) ruolo con autorizzazione ad accedere agli oggetti Quindi, il proprietario del bucket può concederne un altro Account AWS autorizzazione ad assumere il ruolo, consentendogli temporaneamente di accedere agli oggetti nel bucket.

Nota

S3 Object Ownership è un'impostazione a livello di bucket di Amazon S3 che puoi utilizzare sia per controllare la proprietà degli oggetti caricati nel tuo bucket sia per disabilitarli o abilitarli. ACLs Per impostazione predefinita, Object Ownership è impostata sull'impostazione imposta dal proprietario del Bucket e tutti sono disabilitati. ACLs Quando ACLs sono disabilitati, il proprietario del bucket possiede tutti gli oggetti nel bucket e ne gestisce l'accesso esclusivamente utilizzando le politiche di gestione degli accessi.

La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di. ACLs Ti consigliamo di rimanere ACLs disabilitato, tranne in circostanze insolite in cui devi controllare l'accesso per ogni oggetto singolarmente. ACLsDisabilitando, puoi utilizzare le policy per controllare l'accesso a tutti gli oggetti nel tuo bucket, indipendentemente da chi ha caricato gli oggetti nel tuo bucket. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disattivazione del ACLs bucket.

Comprensione delle autorizzazioni tra account e utilizzo dei ruoli IAM

IAMi ruoli consentono diversi scenari per delegare l'accesso alle risorse e l'accesso tra account diversi è uno degli scenari chiave. In questo esempio, il proprietario del bucket, l'Account A, utilizza un IAM ruolo per delegare temporaneamente l'accesso agli oggetti tra più account agli utenti di un altro account Account AWS, Account C. A ogni IAM ruolo creato sono associate le due politiche seguenti:

  • Una politica di fiducia che ne identifica un'altra Account AWS che può assumere il ruolo.

  • Una policy di accesso per la definizione delle autorizzazioni consentite quando qualcuno assume il ruolo, ad esempio s3:GetObject. Per un elenco delle autorizzazioni che è possibile specificare in una policy, consulta Azioni politiche per Amazon S3.

Il Account AWS identificato nella politica di fiducia concede quindi all'utente il permesso di assumere il ruolo. L'utente può quindi accedere agli oggetti nel modo seguente:

  • Assumere il ruolo e, in risposta, ottenere le credenziali di sicurezza temporanee.

  • Accedere agli oggetti nel bucket utilizzando le credenziali di sicurezza temporanee.

Per ulteriori informazioni sui IAM ruoli, vedere IAMRuoli nella Guida per l'IAMutente.

Di seguito è riportato un riepilogo dei passaggi dettagliati:

Autorizzazioni per più account utilizzando i ruoli. IAM
  1. L'utente amministratore dell'account A collega una policy di bucket che concede all'Account B un'autorizzazione condizionale per caricare gli oggetti.

  2. L'amministratore dell'account A crea un IAM ruolo, stabilendo un rapporto di fiducia con l'account C, in modo che gli utenti di quell'account possano accedere all'account A. La politica di accesso allegata al ruolo limita ciò che l'utente può fare nell'account C quando l'utente accede all'account A.

  3. L'amministratore dell'Account B carica un oggetto nel bucket di proprietà dell'Account A, concedendo al proprietario del bucket un'autorizzazione al controllo completo.

  4. L'amministratore dell'account C crea un utente e collega una policy utente che gli consente di assumere il ruolo.

  5. L'utente nell'Account C per prima cosa assume il ruolo, che restituisce all'utente credenziali di sicurezza temporanee. Mediante tali credenziali temporanee, l'utente accede quindi agli oggetti nel bucket.

Per questo esempio sono necessari tre account. La tabella seguente mostra come viene fatto riferimento a questi account e agli utenti amministratori degli account: In conformità con le IAM linee guida (vediInformazioni sull'uso di un utente amministratore per creare risorse e concedere autorizzazioni), non utilizziamo il Utente root dell'account AWS credenziali in questa procedura dettagliata. 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 AWS ID Account denominato Utente amministratore nell'account

1111-1111-1111

Account A

AccountAadmin

2222-2222-2222

Account B

AccountBadmin

3333-3333-3333

Account C

AccountCadmin

Fase 0: preparazione della procedura guidata

Nota

Potresti voler aprire un editor di testo e annotare alcune informazioni man mano che esegui i passaggi. In particolare, avrai bisogno di accountIDs, utente canonicoIDs, accesso IAM utente URLs per ogni account per connetterti alla console e Amazon Resource Names (ARNs) IAM degli utenti e dei ruoli.

  1. Assicurati di averne tre Account AWS e ogni account ha un utente amministratore, come mostrato nella tabella nella sezione precedente.

    1. Registrati per Account AWS, se necessario. Si fa riferimento a questi account come Account A, Account B e Account C.

    2. Utilizzando le credenziali dell'Account A, accedi alla IAMconsole ed esegui le seguenti operazioni per creare un utente amministratore:

      • Crea l'utente AccountAadmin e annota le sue credenziali di sicurezza. Per ulteriori informazioni sull'aggiunta di utenti, vedi Creazione di un IAM utente in Account AWS nella Guida per l'utente di IAM.

      • Concedi i privilegi di amministratore AccountAadminallegando una politica utente che dia accesso completo. Per istruzioni, consulta la sezione Gestione delle IAM politiche nella Guida per l'IAMutente.

      • Nella dashboard della IAM console, annota l'accesso IAM URL dell'utente. Gli utenti di questo account devono utilizzarlo URL quando accedono a AWS Management Console. Per ulteriori informazioni, consulta Accedere a AWS Management Console come IAM utente nella Guida per l'IAMutente.

    3. Ripetere la fase precedente per creare utenti amministratore nell'Account B e nell'Account C.

  2. Per l'Account C, annota l'ID utente canonico.

    Quando crei un IAM ruolo nell'Account A, la politica di fiducia concede all'Account C l'autorizzazione ad assumere il ruolo specificando l'ID dell'account. È possibile trovare informazioni sull'account come indicato di seguito:

    1. Usa il tuo Account AWS ID o alias IAM dell'account, nome utente e password per accedere alla console Amazon S3.

    2. Scegliere il nome di un bucket Amazon S3 per visualizzare i relativi dettagli.

    3. Selezionare la scheda Permissions (Autorizzazioni) e selezionare Access Control List (Lista di controllo accessi).

    4. Nella sezione Access for your Account AWSnella colonna Account, nella colonna Account è presente un identificatore lungo, ad esempioc1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6. Questo è il tuo ID utente canonico.

  3. Quando si crea una policy di bucket, è necessario disporre delle informazioni seguenti. Nota questi valori:

    • ID utente canonico dell'Account A – Quando l'amministratore dell'Account A concede all'amministratore dell'Account B l'autorizzazione condizionale per il caricamento degli oggetti, la condizione specifica l'ID utente canonico dell'utente dell'Account A che deve ottenere controllo completo degli oggetti.

      Nota

      L'ID utente canonico è un concetto esclusivo di Amazon S3. Si tratta di una versione offuscata dell'ID account, composta da 64 caratteri.

    • Utente ARN per amministratore dell'account B: puoi trovare l'utente ARN nella IAMconsole. Devi selezionare l'utente e trovare quello dell'utente ARN nella scheda Riepilogo.

      Nella policy bucket, concedi AccountBadmin l'autorizzazione a caricare oggetti e specifichi l'utente utilizzando il. ARN Ecco un esempio di ARN valore:

      arn:aws:iam::AccountB-ID:user/AccountBadmin
  4. Configura uno dei due AWS Command Line Interface (CLI) o AWS Tools for Windows PowerShell. Assicurati di salvare le credenziali dell'utente amministratore come segue:

    • Se si utilizza il AWS CLI, crea profili AccountAadmin eAccountBadmin, nel file di configurazione.

    • Se si utilizza il AWS Tools for Windows PowerShell, assicurati di archiviare le credenziali per la sessione come AccountAadmin eAccountBadmin.

    Per istruzioni, consulta Configurazione degli strumenti per le procedure dettagliate.

Fase 1: eseguire le attività per l'Account A

In questo esempio, l'Account A è il proprietario del bucket. Quindi l'utente dell'Account AccountAadmin A farà quanto segue:

  • Creare un bucket.

  • Allega una policy bucket che conceda all'amministratore dell'Account B l'autorizzazione a caricare oggetti.

  • Crea un IAM ruolo che conceda all'Account C l'autorizzazione ad assumere il ruolo in modo che possa accedere agli oggetti nel bucket.

Passaggio 1.1: accedi a AWS Management Console

Utilizzando l'IAMutente Accedi URL all'Account A, accedi prima a AWS Management Console come AccountAadmin utente. L'utente creerà un bucket e allegherà ad esso una policy.

Fase 1.2: creare un bucket e allegarlo alla policy di bucket

Nella console di Amazon S3 effettuare quanto segue:

  1. Creare un bucket. In questo esercizio si presume che il nome del bucket sia amzn-s3-demo-bucket1.

    Per istruzioni, consulta Creazione di un bucket.

  2. Allega la seguente policy sui bucket. La politica concede l'autorizzazione condizionata all'amministratore dell'Account B per caricare oggetti.

    Aggiorna la politica fornendo i tuoi valori per amzn-s3-demo-bucket1AccountB-ID, e il. CanonicalUserId-of-AWSaccountA-BucketOwner

    { "Version": "2012-10-17", "Statement": [ { "Sid": "111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" }, { "Sid": "112", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "StringNotEquals": { "s3:x-amz-grant-full-control": "id=CanonicalUserId-of-AWSaccountA-BucketOwner" } } } ] }

Passaggio 1.3: Creare un IAM ruolo per consentire l'accesso da più account all'Account C all'Account A

Nella IAMConsole, crea un IAM ruolo (examplerole) che conceda all'Account C l'autorizzazione ad assumere il ruolo. Assicurati di aver ancora effettuato l'accesso come amministratore dell'Account A perché il ruolo deve essere creato nell'Account A.

  1. Prima di creare il ruolo, preparare la policy gestita che definisce le autorizzazioni richieste dal ruolo. La policy verrà collegata al ruolo in una fase successiva.

    1. Nel riquadro di navigazione a sinistra, scegli Politiche, quindi scegli Crea politica.

    2. Accanto a Create Your Own Policy (Crea la tua policy) scegli Select (Seleziona).

    3. Immettere access-accountA-bucket nel campo Policy Name (Nome policy).

    4. Copiare la seguente policy di accesso e incollarla nel campo Policy Document (Documento policy). La politica di accesso concede l's3:GetObjectautorizzazione al ruolo, quindi, quando l'utente dell'Account C assume il ruolo, può solo eseguire l's3:GetObjectoperazione.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }
    5. Scegliere Create Policy (Crea policy).

      La nuova policy viene inserita nell'elenco delle policy gestite.

  2. Nel riquadro di navigazione a sinistra, scegli Ruoli, quindi scegli Crea nuovo ruolo.

  3. In Seleziona tipo di ruolo, seleziona Ruolo per l'accesso su più account, quindi scegli il pulsante Seleziona accanto a Fornisci accesso tra Account AWS sei il proprietario.

  4. Immettere l'ID account dell'Account C.

    Per questa procedura dettagliata, non è necessario richiedere agli utenti di disporre dell'autenticazione a più fattori (MFA) per assumere il ruolo, quindi lascia questa opzione deselezionata.

  5. Scegliete Passaggio successivo per impostare le autorizzazioni che verranno associate al ruolo.

  6. Seleziona la casella di controllo accanto alla policy Access-AccountA-Bucket che hai creato, quindi scegli Passaggio successivo.

    Viene visualizzata la pagina Review (Revisione) che consente di confermare le impostazioni per il ruolo prima che venga creato. Questa pagina contiene una voce molto importante, ossia il collegamento che è possibile inviare agli utenti che hanno necessità di utilizzare questo ruolo. Gli utenti che utilizzano il link accedono direttamente alla pagina Cambia ruolo con i campi ID account e Nome ruolo già compilati. Puoi anche vedere questo link più avanti nella pagina di riepilogo del ruolo per qualsiasi ruolo tra account.

  7. Immetti examplerole il nome del ruolo, quindi scegli Passaggio successivo.

  8. Dopo aver esaminato il ruolo, scegli Crea ruolo.

    Il ruolo examplerole viene visualizzato nell'elenco dei ruoli.

  9. Scegli il nome del ruoloexamplerole.

  10. Selezionare la scheda Trust Relationships (Relazioni di trust).

  11. Scegli Mostra il documento della politica e verifica che la politica di fiducia mostrata corrisponda alla seguente politica.

    Le seguente policy di attendibilità stabilisce l'attendibilità con l'Account C, consentendogli di eseguire l'operazione sts:AssumeRole. Per ulteriori informazioni, consulta AssumeRole nella AWS Security Token Service APIRiferimento.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountC-ID:root" }, "Action": "sts:AssumeRole" } ] }
  12. Annota l'Amazon Resource Name (ARN) del examplerole ruolo che hai creato.

    Più avanti nei passaggi seguenti, alleghi una policy utente per consentire a un IAM utente di assumere questo ruolo e identifichi il ruolo in base al ARN valore.

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

Il bucket di esempio di proprietà dell'Account A necessita di oggetti di proprietà di altri account. In questa fase, l'amministratore dell'Account B carica un oggetto mediante gli strumenti a riga di comando.

  • Utilizzo di put-object AWS CLI comando, carica un oggetto suamzn-s3-demo-bucket1.

    aws s3api put-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --body HappyFace.jpg --grant-full-control id="canonicalUserId-ofTheBucketOwner" --profile AccountBadmin

    Tieni presente quanto segue:

    • Il --Profile parametro specifica il AccountBadmin profilo, quindi l'oggetto è di proprietà dell'account B.

    • Il parametro grant-full-control concede al proprietario del bucket l'autorizzazione al controllo completo sull'oggetto, come richiesto dalla policy di bucket.

    • Il parametro --body identifica il file di origine da caricare. Ad esempio, se il file si trova nell'unità C: di un Windows computer, si specificac:\HappyFace.jpg.

Fase 3: Esegui le attività relative all'Account C

Nei passaggi precedenti, l'Account A ha già creato un ruoloexamplerole, stabilendo un rapporto di fiducia con l'Account C. Questo ruolo consente agli utenti dell'Account C di accedere all'Account A. In questa fase, l'amministratore dell'Account C crea un utente (Dave) e gli delega l'sts:AssumeRoleautorizzazione ricevuta dall'Account A. Questo approccio consente a Dave di assumere examplerole e ottenere temporaneamente l'accesso all'Account A. La politica di accesso che l'Account A ha associato al ruolo limita ciò che Dave può fare quando accede all'Account A—In particolare, inserisci oggettiamzn-s3-demo-bucket1.

Passaggio 3.1: Creare un utente nell'account C e delegare l'autorizzazione ad assumere examplerole

  1. Utilizzando l'accesso IAM utente URL per l'Account C, accedi prima a AWS Management Console come AccountCadmin utente.

  2. Nella IAMconsole, crea un utente, Dave.

    Per step-by-step istruzioni, consulta Creazione di IAM utenti (AWS Management Console) nella Guida IAM per l'utente.

  3. Nota le credenziali di Dave. Dave dovrà utilizzare queste credenziali per assumere il ruolo examplerole.

  4. Crea una policy in linea per consentire all'IAMutente Dave di delegare l'sts:AssumeRoleautorizzazione a Dave per il ruolo nell'Account A. examplerole

    1. Nel riquadro di navigazione sinistro, scegli Utenti.

    2. Scegli il nome utente Dave.

    3. Nella pagina dei dettagli dell'utente, selezionare la scheda Permissions (Autorizzazioni), quindi espandere la sezione Inline Policies (Policy inline).

    4. Scegliere click here (fai clic qui) oppure Create User Policy (Crea policy di utente).

    5. Scegliere Custom Policy (Policy personalizzata) quindi Select (Seleziona).

    6. Immettere un nome per la policy nel campo Policy Name (Nome policy).

    7. Copiare la seguente policy nel campo Policy Document (Documento policy).

      È necessario aggiornare la politica fornendo ilAccountA-ID.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::AccountA-ID:role/examplerole" } ] }
    8. Scegli Apply Policy (Applica policy).

  5. Salva le credenziali di Dave nel file di configurazione di AWS CLI aggiungendo un altro profilo,. AccountCDave

    [profile AccountCDave] aws_access_key_id = UserDaveAccessKeyID aws_secret_access_key = UserDaveSecretAccessKey region = us-west-2

Fase 3.2: Assumere il ruolo (examplerole) e accedere agli oggetti

Ora Dave può accedere agli oggetti nel bucket di proprietà dell'Account A nel modo seguente:

  • Per prima cosa, Dave assume il ruolo examplerole utilizzando le sue credenziali personali. Questa operazione restituirà le credenziali temporanee.

  • Dave utilizzerà le credenziali temporanee per accedere agli oggetti nel bucket dell'Account A.

  1. Al prompt dei comandi, esegui quanto segue AWS CLI assume-rolecomando che utilizza il AccountCDave profilo.

    È necessario aggiornare il ARN valore nel comando specificando AccountA-ID dove examplerole è definito.

    aws sts assume-role --role-arn arn:aws:iam::AccountA-ID:role/examplerole --profile AccountCDave --role-session-name test

    In risposta, AWS Security Token Service (AWS STS) restituisce credenziali di sicurezza temporanee (ID della chiave di accesso, chiave di accesso segreta e un token di sessione).

  2. Salvare le credenziali di sicurezza temporanee nella AWS CLI file di configurazione sotto il TempCred profilo.

    [profile TempCred] aws_access_key_id = temp-access-key-ID aws_secret_access_key = temp-secret-access-key aws_session_token = session-token region = us-west-2
  3. Al prompt dei comandi, esegui quanto segue AWS CLI comando per accedere agli oggetti utilizzando le credenziali temporanee. Ad esempio, il comando specifica l'oggetto head-object API per recuperare i metadati dell'oggetto. HappyFace.jpg

    aws s3api get-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg SaveFileAs.jpg --profile TempCred

    Dal momento che la policy di accesso collegata a examplerole consente l'esecuzione delle operazioni, Amazon S3 elabora la richiesta. È possibile provare ad eseguire un'altra operazione su qualsiasi altro oggetto nel bucket.

    Se provi qualsiasi altra azione, ad esempio, get-object-acl ti verrà negata l'autorizzazione perché al ruolo non è consentita quell'azione.

    aws s3api get-object-acl --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --profile TempCred

    È stato utilizzato l'utente Dave per assumere il ruolo e accedere all'oggetto mediante le credenziali temporanee. L'accesso agli oggetti in amzn-s3-demo-bucket1 può essere effettuato anche da un'applicazione nell'Account C. L'applicazione può ottenere credenziali di sicurezza temporanee e l'Account C può delegare all'applicazione le autorizzazioni per assumere examplerole.

Fase 4: pulizia

  1. Dopo aver terminato il test, puoi effettuare le seguenti operazioni per ripulire:

    1. Accedi a AWS Management Consoleutilizzando le credenziali dell'Account A ed esegui le seguenti operazioni:

      • Nella console di Amazon S3 rimuovere la policy del bucket collegata a amzn-s3-demo-bucket1. Nella sezione Properties (Proprietà) del bucket, eliminare la policy nella sezione Permissions (Autorizzazioni).

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

      • Nella IAMConsole, rimuovi le creazioni examplerole che hai creato nell'Account A. Per step-by-step istruzioni, consulta Eliminazione di un IAM utente nella Guida per l'IAMutente.

      • Nella IAMconsole, rimuovi l'AccountAadminutente.

  2. Accedi alla IAMconsole utilizzando le credenziali dell'account B. Eliminare l'utente AccountBadmin.

  3. Accedi alla IAMconsole utilizzando le credenziali dell'account C. Delete AccountCadmine l'utente Dave.

Risorse correlate

Per ulteriori informazioni relative a questa procedura dettagliata, consulta le seguenti risorse nella Guida per l'IAMutente: