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, è possibile concedere l'accesso ai dati di Amazon S3 a quanto segue:

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

  • identità IAM in altri account AWS

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

Innanzitutto, configurare l'accesso multi-account per l'altro account. Ciò include la concessione dell'accesso all'istanza S3 Access Grants utilizzando una policy di risorse. Quindi, concedere l'accesso ai dati S3 (bucket, prefissi o oggetti) utilizzando le concessioni.

Dopo aver configurato l'accesso multi-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 S3 multi-account tramite S3 Access Grants:

Flusso di utenti multi-account S3 Access Grants
  1. Gli utenti o le applicazioni di un secondo account (B) richiedono le credenziali all'istanza S3 Access Grants del tuo account (A), dove sono memorizzati i dati Amazon S3. Per ulteriori informazioni, consulta Richiedi l'accesso ai dati di Amazon S3 tramite S3 Access Grants.

  2. L'istanza S3 Access Grants dell'account (A) restituisce le credenziali temporanee se esiste una concessione che dà al secondo account l'accesso ai dati Amazon S3. Per ulteriori informazioni sulle concessioni di accesso, consulta Operazioni con le concessioni in S3 Access Grants.

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

Configurazione dell'accesso multi-account a S3 Access Grants

Per concedere l'accesso S3 multi-account tramite S3 Access Grants, procedere come segue:

  • Fase 1: Configurare un'istanza S3 Access Grants nel proprio account, ad esempio l'account ID 111122223333, dove vengono archiviati i dati S3.

  • Fase 2: configurare la policy delle risorse per l'istanza S3 Access Grants nell'account 111122223333 per consentire l'accesso al secondo account, ad esempio l'ID account 444455556666.

  • Fase 3: Configurare le autorizzazioni IAM per il Principale IAM nel secondo account 444455556666 per richiedere le credenziali dall'istanza S3 Access Grants nell'account 111122223333.

  • Fase 4: creare una concessione nell'account 111122223333 che dia al principale IAM del secondo account 444455556666 l'accesso ad alcuni dei dati S3 dell'account 111122223333.

Fase 1: Configurare un'istanza S3 Access Grants nel proprio account

Innanzitutto, è necessario disporre di un'istanza S3 Access Grants nel proprio account 111122223333 per gestire l'accesso ai dati Amazon S3. È necessario creare un'istanza di S3 Access Grants in ciascuna Regione AWS in cui sono memorizzati i dati S3 che si desidera condividere. Se condividi dati in più di uno 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 è stata configurata un'istanza S3 Access Grants, consulta Operazioni con le istanze S3 Access Grants per completare questo passaggio.

Fase 2: Configurare la policy delle risorse per l'istanza S3 Access Grants in modo da concedere l'accesso multi-account

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

  • s3:GetAccessGrantsInstanceForPrefix - l'utente, il ruolo o l'applicazione 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'applicazione possono richiedere credenziali temporanee in base all'accesso 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 policy di risorse sull'istanza S3 Access Grants è una normale policy basata sulle risorse e supporta tutto ciò che il linguaggio delle policy IAM supporta. Nella stessa policy, è possibile concedere l'accesso a identità IAM specifiche nell'account 111122223333, ad esempio, utilizzando la condizione aws:PrincipalArn, ma non è necessario farlo con S3 Access Grants. Invece, all'interno dell'istanza S3 Access Grants, è possibile creare concessioni per le singole identità IAM del proprio account e per l'altro account. Gestendo ogni concessione di accesso tramite S3 Access Grants, è possibile scalare le autorizzazioni.

Se si utilizza già AWS Resource Access Manager (AWS RAM), è possibile utilizzarlo per condividere le risorse s3:AccessGrants con altri account o all'interno dell'organizzazione. Per ulteriori informazioni, consulta Lavorare con risorse condivise AWS. Se non la utilizzi AWS RAM, puoi anche aggiungere la politica delle risorse utilizzando le operazioni dell'API 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 multi-account, procedi come segue:

Per configurare la policy 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 concessioni di accesso.

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

  5. Seleziona Crea condivisione 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 policy delle risorse utilizzando il comando CLI put-access-grants-instance-resource-policy.

Se si vuole concedere l'accesso multi-account per l'istanza S3 Access Grants nell'account 111122223333 al secondo account 444455556666, la policy delle risorse per l'istanza S3 Access Grants nell'account 111122223333 deve dare al secondo account 444455556666 il permesso di eseguire le seguenti azioni:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Nella policy delle risorse dell'istanza S3 Access Grants, specificare l'ARN dell'istanza S3 Access Grants come Resource, e il secondo account 444455556666 come Principal. Per utilizzare l'esempio seguente, sostituisci 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 policy delle risorse dell'istanza S3 Access Grants, utilizzare il comando seguente. Quando si utilizza il seguente esempio di comando, sostituisci user input placeholders con le tue informazioni.

Esempio Aggiungere o aggiornare la policy 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 Ottenere una policy per le risorse S3 Access Grants

È inoltre possibile utilizzare la CLI per ottenere o eliminare una policy di risorse per un'istanza S3 Access Grants.

Per ottenere una policy di risorse S3 Access Grants, utilizzare 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 Eliminare una policy di risorse S3 Access Grants

Per eliminare una policy di risorse S3 Access Grants, utilizzare il seguente esempio di comando. 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 l'PutAccessGrantsInstanceResourcePolicy API.

Se si vuole concedere l'accesso multi-account per l'istanza S3 Access Grants nell'account 111122223333 al secondo account 444455556666, la policy delle risorse per l'istanza S3 Access Grants nell'account 111122223333 deve dare al secondo account 444455556666 il permesso di eseguire le seguenti azioni:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Nella policy delle risorse dell'istanza S3 Access Grants, specificare l'ARN dell'istanza S3 Access Grants come Resource, e il secondo account 444455556666 come Principal. Per utilizzare l'esempio seguente, sostituisci 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 l'PutAccessGrantsInstanceResourcePolicy API per configurare la politica.

Per informazioni sul supporto della REST API per aggiornare, ottenere o eliminare una policy di risorse per un'istanza S3 Access Grants, consulta le seguenti sezioni della guida di riferimento API di Amazon Simple Storage Service:

Questa sezione fornisce esempi AWS SDK su 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 Aggiungere o aggiornare una policy per le risorse dell'istanza S3 Access Grants

Se si vuole concedere l'accesso multi-account per l'istanza S3 Access Grants nell'account 111122223333 al secondo account 444455556666, la policy delle risorse per l'istanza S3 Access Grants nell'account 111122223333 deve dare al secondo account 444455556666 il permesso di eseguire le seguenti azioni:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Nella policy delle risorse dell'istanza S3 Access Grants, specificare l'ARN dell'istanza S3 Access Grants come Resource, e il secondo account 444455556666 come Principal. Per utilizzare l'esempio seguente, sostituisci 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 di risorse dell'istanza S3 Access Grants, utilizzare 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 Ottenere una policy per le risorse S3 Access Grants

Per ottenere una policy di risorse S3 Access Grants, utilizzare 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 Eliminare una policy di risorse S3 Access Grants

Per eliminare una policy di risorse S3 Access Grants, utilizzare 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()

Fase 3: concedere alle identità IAM di un secondo account l'autorizzazione a chiamare l'istanza S3 Access Grants del proprio account

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

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

  • s3:ListCallerAccessGrants

Seguendo il modello di accesso multi-account AWS, gli utenti o i ruoli IAM del secondo account 444455556666 devono avere esplicitamente una o più di queste autorizzazioni. Ad esempio, concedere l'autorizzazione s3:GetDataAccess in modo che l'utente o il ruolo IAM possa chiamare l'istanza S3 Access Grants nell'account 111122223333 per richiedere le credenziali.

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 policy IAM basate sull'identità, consulta Modifica delle policy IAM nella Guida a AWS Identity and Access Management .

Fase 4: creare una concessione nell'istanza S3 Access Grants del proprio account, che dia all'identità IAM del secondo account l'accesso ad alcuni dei dati S3

Per l'ultima fase di configurazione, è possibile creare una concessione nell'istanza S3 Access Grants dell'account 111122223333 che dia accesso all'identità IAM del secondo account 444455556666 ad alcuni dei dati S3 dell'account. Puoi farlo utilizzando la console Amazon S3, la CLI, l'API e. SDKs Per ulteriori informazioni, consulta Creazione di concessioni.

Nella concessione, specifica l' AWS ARN dell'identità IAM del secondo account e specifica a quale posizione nei dati S3 (un bucket, un prefisso o un oggetto) a cui concedi l'accesso. Questa posizione deve essere già registrata con l'istanza S3 Access Grants. Per ulteriori informazioni, consulta Registrazione di una posizione. È possibile specificare facoltativamente un sottoprefisso. Ad esempio, se la posizione a cui si concede l'accesso è un bucket e si vuole limitare ulteriormente l'accesso a un oggetto specifico di quel bucket, si deve passare il nome della chiave dell'oggetto nel campo S3SubPrefix. Oppure, se si vuole limitare l'accesso agli oggetti del bucket con nomi di chiavi che iniziano con un prefisso specifico, come 2024-03-research-results/, trasmetti S3SubPrefix=2024-03-research-results/.

Di seguito è riportato un esempio di comando CLI per la creazione di una concessione di accesso per un'identità del 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 multi-account, l'utente o il ruolo del secondo account può eseguire le seguenti operazioni: