Accesso multi-account S3 Access Grants - 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à.

Accesso multi-account S3 Access Grants

Con S3 Access Grants, puoi concedere l'accesso ai dati di Amazon S3 a quanto segue:

  • AWS Identity and Access Management (IAM) identità all'interno del tuo account

  • IAMidentità in altri account AWS

  • utenti o gruppi di elenchi nella tua istanza AWS IAM Identity Center

Innanzitutto, configura l'accesso tra account per l'altro account. Ciò include la concessione dell'accesso alla tua istanza S3 Access Grants utilizzando una politica delle risorse. Quindi, concedi l'accesso ai tuoi dati S3 (bucket, prefissi o oggetti) utilizzando le concessioni.

Dopo aver configurato l'accesso tra account, l'altro account può richiedere credenziali di accesso temporanee ai dati Amazon S3 da S3 Access Grants. L'immagine seguente mostra il flusso di utenti per l'accesso a S3 tra account diversi tramite S3 Access Grants:

Flusso di utenti tra account S3 Access Grants
  1. Gli utenti o le applicazioni in un secondo account (B) richiedono le credenziali dall'istanza S3 Access Grants nel tuo account (A), dove sono archiviati i dati di Amazon S3. Per ulteriori informazioni, consulta Richiedi l'accesso ai dati di Amazon S3 tramite S3 Access Grants.

  2. L'istanza S3 Access Grants nel tuo account (A) restituisce credenziali temporanee se esiste una concessione che consente al secondo account di accedere ai tuoi dati Amazon S3. Per ulteriori informazioni sulle concessioni di accesso, consulta. Utilizzo delle sovvenzioni in S3 Access Grants

  3. Gli utenti o le applicazioni del secondo account (B) utilizzano le credenziali fornite da S3 Access Grants per accedere ai dati S3 nel tuo account (A).

La configurazione di S3 Access concede l'accesso a più account

Per concedere l'accesso a S3 su più account tramite S3 Access Grants, segui questi passaggi:

  • Passaggio 1: configura un'istanza di S3 Access Grants nel tuo account, ad esempio l'ID 111122223333 dell'account, in cui sono archiviati i dati S3.

  • Passaggio 2: configura la politica delle risorse per l'istanza S3 Access Grants nel tuo account 111122223333 per consentire l'accesso al secondo account, ad esempio l'ID dell'account. 444455556666

  • Passaggio 3: configura le IAM autorizzazioni per il IAM Principal nel secondo account 444455556666 per richiedere le credenziali dall'istanza S3 Access Grants del tuo account. 111122223333

  • Passaggio 4: crea una concessione nel tuo account 111122223333 che consenta al IAM Principal del secondo account di 444455556666 accedere ad alcuni dati S3 del tuo account. 111122223333

Fase 1: configura un'istanza S3 Access Grants nel tuo account

Innanzitutto, devi avere un'istanza S3 Access Grants nel tuo account 111122223333 per gestire l'accesso ai tuoi dati Amazon S3. Devi creare un'istanza S3 Access Grants in ciascuna delle Regione AWS quali sono archiviati i dati S3 che desideri condividere. Se condividi dati in più di un'unità Regione AWS, ripeti ciascuno di questi passaggi di configurazione per ciascuno. Regione AWS Se hai già un'istanza S3 Access Grants nel luogo in Regione AWS cui sono archiviati i dati S3, procedi al passaggio successivo. Se non hai configurato un'istanza S3 Access Grants, consulta Utilizzo delle istanze S3 Access Grants per completare questo passaggio.

Passaggio 2: configura la politica delle risorse per la tua istanza S3 Access Grants per concedere l'accesso su più account

Dopo aver creato un'istanza S3 Access Grants nel tuo account 111122223333 per l'accesso tra account, configura la politica basata sulle risorse per l'istanza S3 Access Grants nel tuo account per concedere l'accesso a più account. 111122223333 L'istanza S3 Access Grants supporta da sola le policy basate sulle risorse. Con la politica corretta basata sulle risorse, puoi concedere l'accesso a AWS Identity and Access Management (IAM) utenti o ruoli di altri utenti alla tua istanza S3 Access Grants. Account AWS L'accesso tra account diversi concede solo queste autorizzazioni (azioni):

  • s3:GetAccessGrantsInstanceForPrefix— l'utente, il ruolo o l'app possono recuperare l'istanza S3 Access Grants che contiene un particolare prefisso.

  • s3:ListAccessGrants

  • s3:ListAccessLocations

  • s3:ListCallerAccessGrants

  • s3:GetDataAccess— l'utente, il ruolo o l'app possono richiedere credenziali temporanee in base all'accesso che ti è stato concesso tramite S3 Access Grants. Usa queste credenziali per accedere ai dati S3 a cui ti è stato concesso l'accesso.

Puoi scegliere quali di queste autorizzazioni includere nella policy della risorsa. Questa politica delle risorse sull'istanza S3 Access Grants è una normale politica basata sulle risorse e supporta tutto ciò che supporta il linguaggio delle policy. IAM Nella stessa politica, puoi concedere l'accesso a IAM identità specifiche nel tuo account111122223333, ad esempio, utilizzando la aws:PrincipalArn condizione, ma non è necessario farlo con S3 Access Grants. Invece, all'interno dell'istanza S3 Access Grants, puoi creare sovvenzioni per IAM identità individuali dal tuo account e per l'altro account. Gestendo ogni concessione di accesso tramite S3 Access Grants, puoi ridimensionare le tue autorizzazioni.

Se utilizzi già AWS Resource Access Manager(AWS RAM), puoi usarlo per condividere s3:AccessGrantsle tue risorse con altri account o all'interno della tua organizzazione. Per ulteriori informazioni, consulta Lavorare con AWS risorse condivise. Se non la utilizzi AWS RAM, puoi anche aggiungere la politica delle risorse utilizzando le API operazioni S3 Access Grants o il AWS Command Line Interface ()AWS CLI.

Ti consigliamo di utilizzare la console AWS Resource Access Manager (AWS RAM) per condividere s3:AccessGrants le tue risorse con altri account o all'interno della tua organizzazione. Per condividere S3 Access Grants su più account, procedi come segue:

Per configurare la politica delle risorse dell'istanza S3 Access Grants:
  1. Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/

  2. Seleziona il Regione AWS dal Regione AWS selettore.

  3. Dal riquadro di navigazione a sinistra, seleziona Access Grants.

  4. Nella pagina dell'istanza di Access Grants, nella sezione Istanza in questo account, seleziona Condividi istanza. Questo ti reindirizzerà alla AWS RAM console.

  5. Seleziona Crea condivisione di risorse.

  6. Segui i AWS RAM passaggi per creare la condivisione di risorse. Per ulteriori informazioni, vedere Creazione di una condivisione di risorse in AWS RAM.

Per installare AWS CLI, vedere Installazione di AWS CLI nella Guida per l'AWS Command Line Interface utente.

È possibile aggiungere la politica delle risorse utilizzando il put-access-grants-instance-resource-policy CLI comando.

Se desideri concedere l'accesso multiaccount all'istanza di S3 Access Grants presente nel tuo account 111122223333 al secondo account444455556666, la politica delle risorse per l'istanza di S3 Access Grants del tuo account 111122223333 dovrebbe 444455556666 autorizzare il secondo account a eseguire le seguenti azioni:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Nella politica delle risorse dell'istanza S3 Access Grants, specifica l'ARNistanza S3 Access Grants come e il secondo account come. Resource 444455556666 Principal Per utilizzare l'esempio seguente, sostituisci il user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Per aggiungere o aggiornare la politica delle risorse dell'istanza S3 Access Grants, usa il comando seguente. Quando usi il comando di esempio seguente, sostituiscilo user input placeholders con le tue informazioni.

Esempio Aggiungi o aggiorna la politica delle risorse dell'istanza S3 Access Grants
aws s3control put-access-grants-instance-resource-policy \ --account-id 111122223333 \ --policy file://resourcePolicy.json \ --region us-east-2 { "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"444455556666\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\",\n \"s3:GetAccessGrantsInstanceForPrefix\",\n \"s3:ListCallerAccessGrants"\n ],\n \"Resource\": \"arn:aws:s3:us-east-2:111122223333:access-grants/default\"\n }\n ]\n }\n", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
Esempio Ottieni una policy sulla risorsa S3 Access Grants

Puoi anche utilizzare la CLI per ottenere o eliminare una politica delle risorse per un'istanza S3 Access Grants.

Per ottenere una politica delle risorse di S3 Access Grants, usa il seguente comando di esempio. Per utilizzare questo comando di esempio, sostituisci user input placeholders con le tue informazioni.

aws s3control get-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 { "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\",\"s3:GetAccessGrantsInstanceForPrefix\",\"s3:ListCallerAccessGrants\"],\"Resource\":\"arn:aws: s3:us-east-2:111122223333:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
Esempio Elimina una policy della risorsa S3 Access Grants

Per eliminare una politica delle risorse di S3 Access Grants, usa il seguente comando di esempio. Per utilizzare questo comando di esempio, sostituisci user input placeholders con le tue informazioni.

aws s3control delete-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 // No response body

È possibile aggiungere la politica delle risorse utilizzando PutAccessGrantsInstanceResourcePolicy API.

Se desideri concedere l'accesso su più account all'istanza di S3 Access Grants presente nel tuo account 111122223333 al secondo account444455556666, la politica delle risorse per l'istanza S3 Access Grants del tuo account 111122223333 dovrebbe 444455556666 autorizzare il secondo account a eseguire le seguenti azioni:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Nella politica delle risorse dell'istanza S3 Access Grants, specifica l'ARNistanza S3 Access Grants come e il secondo account come. Resource 444455556666 Principal Per utilizzare l'esempio seguente, sostituisci il user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

È quindi possibile utilizzare il PutAccessGrantsInstanceResourcePolicy APIper configurare la politica.

Per informazioni sul REST API supporto per l'aggiornamento, l'ottenimento o l'eliminazione di una politica delle risorse per un'istanza S3 Access Grants, consulta le seguenti sezioni in Amazon Simple Storage Service API Reference:

Questa sezione fornisce AWS SDK esempi di come configurare la politica delle risorse di S3 Access Grants per concedere a un secondo AWS account l'accesso ad alcuni dei tuoi dati S3.

Java

Aggiungi, aggiorna, ottieni o elimina una policy della risorsa per gestire l'accesso multi-account alla tua istanza S3 Access Grants.

Esempio Aggiungi o aggiorna una politica delle risorse dell'istanza S3 Access Grants

Se desideri concedere l'accesso multiaccount all'istanza di S3 Access Grants presente nel tuo account 111122223333 al secondo account444455556666, la politica delle risorse per l'istanza S3 Access Grants del tuo account 111122223333 dovrebbe autorizzare il secondo account 444455556666 a eseguire le seguenti azioni:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Nella politica delle risorse dell'istanza S3 Access Grants, specifica l'ARNistanza S3 Access Grants come e il secondo account come. Resource 444455556666 Principal Per utilizzare l'esempio seguente, sostituisci il user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Per aggiungere o aggiornare una policy sulle risorse dell'istanza S3 Access Grants, usa il seguente esempio di codice:

public void putAccessGrantsInstanceResourcePolicy() { PutAccessGrantsInstanceResourcePolicyRequest putRequest = PutAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .policy(RESOURCE_POLICY) .build(); PutAccessGrantsInstanceResourcePolicyResponse putResponse = s3Control.putAccessGrantsInstanceResourcePolicy(putRequest); LOGGER.info("PutAccessGrantsInstanceResourcePolicyResponse: " + putResponse); }

Risposta:

PutAccessGrantsInstanceResourcePolicyResponse( Policy={ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix", "s3:ListCallerAccessGrants" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" }] } )
Esempio Ottieni una policy sulla risorsa S3 Access Grants

Per ottenere una politica delle risorse di S3 Access Grants, usa il seguente esempio di codice. Per utilizzare il seguente comando di esempio, sostituisci user input placeholders con le tue informazioni.

public void getAccessGrantsInstanceResourcePolicy() { GetAccessGrantsInstanceResourcePolicyRequest getRequest = GetAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); GetAccessGrantsInstanceResourcePolicyResponse getResponse = s3Control.getAccessGrantsInstanceResourcePolicy(getRequest); LOGGER.info("GetAccessGrantsInstanceResourcePolicyResponse: " + getResponse); }

Risposta:

GetAccessGrantsInstanceResourcePolicyResponse( Policy={"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::444455556666:root"},"Action":["s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess","s3:GetAccessGrantsInstanceForPrefix","s3:ListCallerAccessGrants"],"Resource":"arn:aws:s3:us-east-2:111122223333:access-grants/default"}]}, CreatedAt=2023-06-15T22:54:44.319Z )
Esempio Elimina una policy della risorsa S3 Access Grants

Per eliminare una policy relativa alle risorse di S3 Access Grants, usa il seguente esempio di codice. Per utilizzare il seguente comando di esempio, sostituisci user input placeholders con le tue informazioni.

public void deleteAccessGrantsInstanceResourcePolicy() { DeleteAccessGrantsInstanceResourcePolicyRequest deleteRequest = DeleteAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); DeleteAccessGrantsInstanceResourcePolicyResponse deleteResponse = s3Control.putAccessGrantsInstanceResourcePolicy(deleteRequest); LOGGER.info("DeleteAccessGrantsInstanceResourcePolicyResponse: " + deleteResponse); }

Risposta:

DeleteAccessGrantsInstanceResourcePolicyResponse()

Passaggio 3: Concedi IAM alle identità di un secondo account l'autorizzazione a chiamare l'istanza S3 Access Grants nel tuo account

Dopo che il proprietario dei dati di Amazon S3 ha configurato la policy cross-account per l'istanza S3 Access Grants nell'account111122223333, il proprietario del secondo account 444455556666 deve creare una policy basata sull'identità per i suoi IAM utenti o ruoli e il proprietario deve concedere loro l'accesso all'istanza S3 Access Grants. Nella politica basata sull'identità, includi una o più delle seguenti azioni, a seconda di ciò che è concesso nella politica delle risorse dell'istanza S3 Access Grants e delle autorizzazioni che desideri concedere:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

  • s3:ListCallerAccessGrants

Seguendo lo schema di accesso AWS tra account, IAM gli utenti o i ruoli del secondo account 444455556666 devono disporre esplicitamente di una o più di queste autorizzazioni. Ad esempio, concedi l's3:GetDataAccessautorizzazione in modo che l'IAMutente o il ruolo possa chiamare l'istanza S3 Access Grants nell'account per richiedere le credenziali. 111122223333

Per utilizzare questo comando di esempio, sostituisci user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetDataAccess", ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Per informazioni sulla modifica delle politiche IAM basate sull'identità, consulta Modifica delle politiche nella guida. IAM AWS Identity and Access Management

Passaggio 4: crea una concessione nell'istanza S3 Access Grants del tuo account che consenta all'IAMidentità del secondo account di accedere ad alcuni dei tuoi dati S3

Per la fase finale di configurazione, puoi creare una concessione nell'istanza S3 Access Grants del tuo account 111122223333 che dia accesso all'IAMidentità del secondo account 444455556666 ad alcuni dati S3 del tuo account. Puoi farlo utilizzando la console Amazon S3, CLIAPI, e. SDKs Per ulteriori informazioni, consulta Creazione di concessioni.

Nella concessione, specifica l'IAMidentità AWS ARN del secondo account e specifica a quale posizione nei dati S3 (un bucket, un prefisso o un oggetto) a cui concedere l'accesso. Questa posizione deve essere già registrata con la tua istanza S3 Access Grants. Per ulteriori informazioni, consulta Registrazione di una posizione. Facoltativamente, puoi specificare un sottoprefisso. Ad esempio, se la posizione a cui concedi l'accesso è un bucket e desideri limitare ulteriormente l'accesso a un oggetto specifico in quel bucket, passa il nome della chiave dell'oggetto nel campo. S3SubPrefix Oppure, se desideri limitare l'accesso agli oggetti nel bucket con nomi di chiave che iniziano con un prefisso specifico, ad esempio, then pass. 2024-03-research-results/ S3SubPrefix=2024-03-research-results/

Di seguito è riportato un CLI comando di esempio per creare una concessione di accesso per un'identità nel secondo account. Per ulteriori informazioni, consulta Creazione di concessioni. Per utilizzare questo comando di esempio, sostituisci user input placeholders con le tue informazioni.

aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix=prefixA* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666:role/data-consumer-1

Dopo aver configurato l'accesso tra più account, l'utente o il ruolo nel secondo account può eseguire le seguenti operazioni: