Richiedi l'accesso ai dati di Amazon S3 tramite S3 Access Grants - Amazon Simple Storage Service

Richiedi l'accesso ai dati di Amazon S3 tramite S3 Access Grants

Dopo aver creato una concessione di accesso utilizzando S3 Access Grants, gli assegnatari possono richiedere le credenziali per accedere ai dati S3 di cui dispongono delle autorizzazioni. Gli assegnatari possono essere principali AWS Identity and Access Management (IAM), identità delle directory aziendali o applicazioni autorizzate.

Un’applicazione o un Servizio AWS può utilizzare l’operazione API S3 Access Grants GetDataAccess per chiedere a S3 Access Grants l’accesso ai dati S3 per conto di un assegnatario. GetDataAccess verifica innanzitutto che a questa identità sia stato concesso l’accesso ai dati. Quindi, S3 Access Grants utilizza l'operazione AssumeRole per ottenere un token credenziale temporaneo e lo invia al richiedente. Questo token di credenziali temporaneo è un token AWS Security Token Service (AWS STS).

La richiesta GetDataAccess deve includere il parametro target, che specifica l'ambito dei dati S3 a cui si applicano le credenziali temporanee. Questo ambito target può essere lo stesso dell’ambito della concessione o di un sottoinsieme di tale ambito, ma l’ambito target deve rientrare nell’ambito della concessione accordata all’assegnatario. La richiesta deve inoltre specificare il parametro permission per indicare il livello di autorizzazione per le credenziali temporanee, READ, WRITE o READWRITE.

Privilegio

Il richiedente può specificare il livello di privilegio del token temporaneo nella richiesta di credenziali. Utilizzando il parametro privilege, il richiedente può ridurre o ingrandire l'ambito di accesso delle credenziali temporanee entro i limiti dell'ambito della concessione. Il valore predefinito del parametro privilege è Default, il che significa che l'ambito di destinazione della credenziale restituita è l'ambito della concessione originale. L'altro valore possibile per privilege è Minimal. Se l'ambito target viene ridotto rispetto all'ambito della concessione originale, la credenziale temporanea viene ridimensionata per corrispondere all'ambito target, purché l'ambito target rientri nell'ambito della concessione.

La tabella seguente descrive in dettaglio l'effetto del parametro privilege su due concessioni. Una concessione ha l'ambito S3://amzn-s3-demo-bucket1/bob/*, che include l'intero prefisso bob/ nel bucket amzn-s3-demo-bucket1. Una concessione ha l'ambito S3://amzn-s3-demo-bucket1/bob/reports/*, che include l'intero prefisso bob/reports/ nel bucket amzn-s3-demo-bucket1.

Ambito della concessione Ambito richiesto Privilegio Ambito restituito Effetto
S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/* Default amzn-s3-demo-bucket1/bob/*

Il richiedente ha accesso a tutti gli oggetti i cui nomi della chiave iniziano con il prefisso bob/ nel bucket amzn-s3-demo-bucket1.

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/ Minimal amzn-s3-demo-bucket1/bob/

Senza un carattere jolly * dopo il nome del prefisso bob/, il richiedente ha accesso solo all'oggetto denominato bob/ nel bucket amzn-s3-demo-bucket1. Non è comune avere un oggetto del genere. Il richiedente non ha accesso a nessun altro oggetto, compresi quelli con nomi chiave che iniziano con il prefisso bob/.

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/images/* Minimal amzn-s3-demo-bucket1/bob/images/*

Il richiedente ha accesso a tutti gli oggetti i cui nomi della chiave iniziano con il prefisso bob/images/* nel bucket amzn-s3-demo-bucket1.

S3://amzn-s3-demo-bucket1/bob/reports/* amzn-s3-demo-bucket1/bob/reports/file.txt Default amzn-s3-demo-bucket1/bob/reports/*

Il richiedente ha accesso a tutti gli oggetti i cui nomi della chiave iniziano con il prefisso bob/reports nel bucket amzn-s3-demo-bucket1, che è l'ambito della concessione corrispondente.

S3://amzn-s3-demo-bucket1/bob/reports/* amzn-s3-demo-bucket1/bob/reports/file.txt Minimal amzn-s3-demo-bucket1/bob/reports/file.txt

Il richiedente ha accesso solo all'oggetto con il nome della chiave bob/reports/file.txt nel bucket amzn-s3-demo-bucket1. Il richiedente non ha accesso a nessun altro oggetto.

Identità delle directory

GetDataAccess considera tutte le identità coinvolte in una richiesta quando corrispondono alle concessioni adeguate. Per le identità delle directory aziendali, GetDataAccess restituisce anche le concessioni dell’identità IAM utilizzata per la sessione con riconoscimento dell’identità. Per ulteriori informazioni sulle sessioni con riconoscimento dell’identità, consulta Concessione delle autorizzazioni per l’utilizzo di sessioni di console con riconoscimento dell’identità nella Guida per l’utente di AWS Identity and Access Management. GetDataAccess genera credenziali limitando l’ambito alla concessione più restrittiva, come illustrato nella tabella seguente:

Ambito di concessione per l’identità IAM Ambito di concessione per l’identità delle directory Ambito richiesto Ambito restituito Privilegio Effetto
S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/images/* S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg S3://amzn-s3-demo-bucket1/bob/images/* Default

Il richiedente ha accesso a tutti gli oggetti i cui nomi di chiave iniziano con il prefisso bob/ come parte della concessione per il ruolo IAM, ma è limitato ai prefissi bob/images/ come parte della concessione per l’identità delle directory. Sia il ruolo IAM sia l’identità delle directory forniscono l’accesso all’ambito richiesto, vale a dire bob/images/image1.jpeg, ma l’identità delle directory ha una concessione più restrittiva. Pertanto, l’ambito restituito è limitato alla concessione più restrittiva per l’identità delle directory.

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/images/* S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg Minimal

Poiché il privilegio è impostato su Minimal, anche se l’identità ha accesso a un ambito più ampio, viene restituito solo l’ambito richiesto bob/images/image1.jpeg.

S3://amzn-s3-demo-bucket1/bob/images/* amzn-s3-demo-bucket1/bob/* S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg S3://amzn-s3-demo-bucket1/bob/images/* Default

Il richiedente ha accesso a tutti gli oggetti i cui nomi di chiave iniziano con il prefisso bob/ come parte della concessione per l’identità delle directory, ma è limitato ai prefissi bob/images/ come parte della concessione per il ruolo IAM. Sia il ruolo IAM sia l’identità delle directory forniscono l’accesso all’ambito richiesto, vale a dire bob/images/image1.jpeg, ma il ruolo IAM ha una concessione più restrittiva. Pertanto, l’ambito restituito è limitato alla concessione più restrittiva per il ruolo IAM.

S3://amzn-s3-demo-bucket1/bob/images/* amzn-s3-demo-bucket1/bob/* S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg S3://amzn-s3-demo-bucket1/bob/images/image1.jpeg Minimal

Poiché il privilegio è impostato su Minimal, anche se l’identità ha accesso a un ambito più ampio, viene restituito solo l’ambito richiesto bob/images/image1.jpeg.

Durata

Il parametro durationSeconds imposta la durata della credenziale temporanea, in secondi. Il valore predefinito è 3600 secondi (1 ora), ma il richiedente (l'assegnatario) può specificare un intervallo da 900 secondi (15 minuti) a 43200 secondi (12 ore). Se l'assegnatario richiede un valore superiore a questo valore massimo, la richiesta ha esito negativo.

Nota

Nella richiesta di un token temporaneo, se la posizione è un oggetto, imposta il valore del parametro targetType nella richiesta a Object. Questo parametro è obbligatorio solo se la posizione è un oggetto e il livello di privilegio è Minimal. Se la posizione è un bucket o un prefisso, non devi specificare questo parametro.

Esempi

È possibile richiedere credenziali temporanee utilizzando AWS Command Line Interface (AWS CLI), la REST API di Amazon S3 e gli SDK AWS. Consulta questi esempi.

Per ulteriori informazioni, consulta GetDataAccess nella Guida di riferimento delle API di Amazon Simple Storage Service.

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

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

Esempio Richiesta di credenziali temporanee

Richiesta:

aws s3control get-data-access \ --account-id 111122223333 \ --target s3://amzn-s3-demo-bucket/prefixA* \ --permission READ \ --privilege Default \ --region us-east-2

Risposta:

{ "Credentials": { "AccessKeyId": "Example-key-id", "SecretAccessKey": "Example-access-key", "SessionToken": "Example-session-token", "Expiration": "2023-06-14T18:56:45+00:00"}, "MatchedGrantTarget": "s3://amzn-s3-demo-bucket/prefixA**", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::111122223333:role/role-name" } }

Per informazioni sul supporto REST API di Amazon S3 per la richiesta di credenziali temporanee da S3 Access Grants, consulta GetDataAccess nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Questa sezione fornisce un esempio di come gli assegnatari richiedono credenziali temporanee a S3 Access Grants utilizzando gli AWS SDK.

Java

Il seguente esempio di codice restituisce le credenziali temporanee utilizzate dall'assegnatario per accedere ai tuoi dati S3. Per utilizzare questo esempio di codice, sostituisci user input placeholders con le tue informazioni.

Esempio Ottenimento di credenziali temporanee

Richiesta:

public void getDataAccess() { GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder() .accountId("111122223333") .permission(Permission.READ) .privilege(Privilege.MINIMAL) .target("s3://amzn-s3-demo-bucket/prefixA*") .build(); GetDataAccessResponse getDataAccessResponse = s3Control.getDataAccess(getDataAccessRequest); LOGGER.info("GetDataAccessResponse: " + getDataAccessResponse); }

Risposta:

GetDataAccessResponse( Credentials=Credentials( AccessKeyId="Example-access-key-id", SecretAccessKey="Example-secret-access-key", SessionToken="Example-session-token", Expiration=2023-06-07T06:55:24Z ))