Configurazione delle ACL - 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à.

Configurazione delle ACL

Questa sezione descrive come gestire le autorizzazioni di accesso per bucket e oggetti S3 tramite le liste di controllo accessi (ACL). Puoi aggiungere sovvenzioni all'ACL della tua risorsa utilizzando, ( AWS Command Line Interface CLI) AWS Management Console, l'API REST o gli SDK. AWS

Le autorizzazioni per il bucket e gli oggetti sono indipendenti l'una dall'altra. Un oggetto non eredita le autorizzazioni dal bucket a cui appartiene. Se ad esempio si crea un bucket e si concede l'accesso in scrittura a un utente, non sarà possibile accedere agli oggetti di tale utente a meno che questi non conceda esplicitamente l'accesso.

Puoi concedere autorizzazioni ad altri Account AWS utenti o a gruppi predefiniti. L'utente o il gruppo a cui si concedono le autorizzazioni è denominato assegnatario. Per default, il proprietario, ossia l' Account AWS che ha creato il bucket, dispone di tutte le autorizzazioni.

Ogni autorizzazione concessa a un utente o a un gruppo aggiunge una voce all'ACL associata al bucket. Nell'ACL sono elencate le assegnazioni, che identificano l'assegnatario e l'autorizzazione concessa.

S3 Proprietà dell'oggetto è un'impostazione a livello di bucket Amazon S3 che è possibile utilizzare per controllare la proprietà degli oggetti caricati nel bucket e per disabilitare o abilitare le liste di controllo degli accessi (ACL). Per impostazione predefinita, Proprietà dell'oggetto è impostata su Proprietario del bucket applicato e tutte le liste di controllo degli accessi (ACL) sono disabilitate. Quando le ACL sono disabilitate, il proprietario del bucket dispone di tutti gli oggetti nel bucket e gestisce l'accesso ad essi in maniera esclusiva utilizzando policy di gestione dell'accesso.

La maggior parte degli attuali casi d'uso in Amazon S3 non richiede più l'uso delle ACL. È consigliabile mantenere le ACL disabilitate, tranne nelle circostanze in cui è necessario controllare individualmente l'accesso per ciascun oggetto. Con le ACL disabilitate, puoi utilizzare le policy per controllare l'accesso a tutti gli oggetti nel bucket, a prescindere da chi ha caricato gli oggetti nel bucket. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione degli ACL per il bucket.

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione Proprietario del bucket applicato abilitata, le richieste per impostare liste di controllo degli accessi (ACL) e aggiornare le ACL non vanno a buon fine e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

avvertimento

Si consiglia vivamente di evitare di concedere l'accesso in scrittura ai gruppi Everyone (accesso pubblico) o Authenticated Users (tutti gli utenti AWS autenticati). Per maggiori informazioni sugli effetti della concessione dell'accesso in scrittura a questi gruppi, consulta Gruppi predefiniti di Amazon S3.

La console visualizza le concessioni di accesso combinate per gli assegnatari duplicati. Per visualizzare l'elenco completo degli ACL, utilizza l'API REST AWS CLI o gli SDK di Amazon S3. AWS

Nella tabella seguente vengono illustrate le autorizzazioni ACL che è possibile configurare per i bucket nella console di Amazon S3.

Autorizzazioni ACL della console di Amazon S3 per i bucket
Autorizzazione console Autorizzazione ACL Accesso
Oggetti – Elenco READ Consente all'assegnatario di elencare gli oggetti del bucket.
Oggetti - Scrittura WRITE Consente all'assegnatario di creare nuovi oggetti del bucket. Per i proprietari di bucket e oggetti di oggetti esistenti, consente anche di eliminare e sovrascrivere tali oggetti.
ACL del bucket – Lettura READ_ACP Consente all'assegnatario di leggere l'ACL del bucket.
ACL del bucket – Scrittura WRITE_ACP Consente all'assegnatario di scrivere l'ACL del bucket interessato.
Everyone (Tutti) (accesso pubblico): Oggetti - Elenco READ Concede l'accesso pubblico in lettura per gli oggetti nel bucket. Quando si concede l'accesso all'elenco a Everyone (Tutti) (accesso pubblico), chiunque al mondo può accedere agli oggetti nel bucket.
Everyone (Tutti) (accesso pubblico): ACL del bucket - Lettura READ_ACP Concede l'accesso pubblico in lettura per l'ACL del bucket. Quando si concede l'accesso in lettura a Everyone (Tutti) (accesso pubblico), chiunque al mondo può accedere all'ACL del bucket.

Per ulteriori informazioni sulle autorizzazioni ACL, consulta Panoramica delle liste di controllo accessi (ACL).

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione Proprietario del bucket applicato abilitata, le richieste per impostare liste di controllo degli accessi (ACL) e aggiornare le ACL non vanno a buon fine e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

Come impostare le autorizzazioni ACL per un bucket
  1. Accedi AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Buckets (Bucket) scegliere il nome del bucket per cui impostare le autorizzazioni.

  3. Seleziona Autorizzazioni.

  4. In Lista di controllo degli accessi (ACL), seleziona Modifica.

    Puoi modificare le seguenti autorizzazioni ACL per il bucket:

    Oggetti
    • List: consente all'assegnatario di elencare gli oggetti nel bucket.

    • Scrittura – Consente all'assegnatario di creare nuovi oggetti nel bucket. Per i proprietari di bucket e oggetti di oggetti esistenti, consente anche di eliminare e sovrascrivere tali oggetti.

      Nella console S3, puoi concedere l'accesso in scrittura solo al gruppo di consegna dei log S3 e al proprietario del bucket (il tuo). Account AWS Ti consigliamo vivamente di non concedere l'accesso in scrittura ad altri utenti. Tuttavia, se devi concedere l'accesso in scrittura, puoi utilizzare gli AWS SDK o l' AWS CLI API REST.

    ACL del bucket
    • Read: consente all'assegnatario di leggere l'ACL del bucket.

    • Write: consente all'assegnatario di scrivere l'ACL del bucket interessato.

  5. Per modificare le autorizzazioni del proprietario del bucket, oltre a Bucket owner (il tuo Account AWS), deseleziona o seleziona una delle seguenti autorizzazioni ACL:

    • OggettiElenco o scrittura

    • ACL del bucketLettura o scrittura

    Il proprietario si riferisce a Utente root dell'account AWS, non a un utente IAM. AWS Identity and Access Management Per ulteriori informazioni sull'utente root, consulta Utente root dell'account AWS nella Guida per l'utente di IAM.

  6. Per concedere o annullare le autorizzazioni per il pubblico generale (tutti su Internet), accanto a Tutti (accesso pubblico), deseleziona o seleziona una delle seguenti autorizzazioni ACL:

    • OggettiElenco

    • ACL del bucketLettura

    avvertimento

    Prestare attenzione nel concedere l'accesso pubblico al bucket S3 al gruppo Everyone (Tutti). Quando si concede l'accesso a questo gruppo, qualsiasi persona al mondo può accedere al bucket. Si consiglia di non concedere mai alcun tipo di accesso in scrittura pubblico al bucket S3.

  7. Per concedere o annullare le autorizzazioni a chiunque disponga di un gruppo Account AWS, oltre al gruppo Authenticated Users (chiunque disponga di un Account AWS), deseleziona o seleziona una delle seguenti autorizzazioni ACL:

    • OggettiElenco

    • ACL del bucketLettura

  8. Per concedere o annullare le autorizzazioni per Amazon S3 a scrivere i log di accesso al server nel bucket, in gruppo di recapito log S3 deseleziona o seleziona una delle seguenti autorizzazioni ACL:

    • OggettiElenco o scrittura

    • ACL del bucketLettura o scrittura

      Se un bucket è configurato come bucket target per la ricezione dei log di accesso, le autorizzazioni del bucket devono permettere al gruppo Log Delivery (Distribuzione log) l'accesso in scrittura al bucket. Quando si abilita la registrazione degli accessi al server in un bucket, la console di Amazon S3 concede l'accesso in scrittura al gruppo Log Delivery (Distribuzione log) per il bucket di destinazione scelto per la ricezione dei log. Per ulteriori informazioni sulla registrazione degli accessi al server, consulta Abilitazione della registrazione degli accessi al server Amazon S3.

  9. Per concedere l'accesso a un altro utente, procedi come segue Account AWS:

    1. Scegli Aggiungi assegnatario.

    2. Nella casella Assegnatario, inserisci l'ID canonico dell'altro Account AWS.

    3. Seleziona una delle seguenti autorizzazioni ACL:

      • OggettiElenco o scrittura

      • ACL del bucketLettura o scrittura

    avvertimento

    Quando concedi ad altri Account AWS l'accesso alle tue risorse, tieni presente che Account AWS possono delegare le proprie autorizzazioni agli utenti tramite i rispettivi account. Questa operazione è nota con il nome di accesso multiaccount. Per informazioni sull'utilizzo dell'accesso multiaccount, consulta Creazione di un ruolo per delegare le autorizzazioni a un utente IAM nella Guida per l'utente di IAM.

  10. Per rimuovere l'accesso a un altro utente Account AWS, in Accesso per altri Account AWS, scegli Rimuovi.

  11. Per salvare le modifiche, scegliere Save changes (Salva modifiche).

La console visualizza le concessioni di accesso combinate per gli assegnatari duplicati. Per visualizzare l'elenco completo degli ACL, utilizza l'API REST AWS CLI o gli SDK di Amazon S3. AWS Nella tabella seguente vengono illustrate le autorizzazioni ACL che è possibile configurare per gli oggetti nella console di Amazon S3.

Autorizzazioni ACL della console di Amazon S3 per gli oggetti
Autorizzazione console Autorizzazione ACL Accesso
Oggetto - Lettura READ Consente all'assegnatario di leggere i dati dell'oggetto e i relativi metadati.
ACL dell'oggetto - Lettura READ_ACP Consente all'assegnatario di leggere l'ACL dell'oggetto.
ACL dell'oggetto - Scrittura WRITE_ACP Consente all'assegnatario di scrivere l'ACL dell'oggetto interessato

Per ulteriori informazioni sulle autorizzazioni ACL, consulta Panoramica delle liste di controllo accessi (ACL).

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione Proprietario del bucket applicato abilitata, le richieste per impostare liste di controllo degli accessi (ACL) e aggiornare le ACL non vanno a buon fine e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

Come impostare le autorizzazioni ACL per un oggetto
  1. Accedi AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco Buckets (Bucket) scegliere il nome del bucket contenente l'oggetto.

  3. Nell'elenco Oggetti, scegli il nome dell'oggetto per il quale si desidera impostare le autorizzazioni.

  4. Seleziona Autorizzazioni.

  5. In Lista di controllo degli accessi (ACL), seleziona Modifica.

    Puoi modificare le seguenti autorizzazioni ACL per l'oggetto:

    Oggetto
    • Read: consente all'assegnatario di leggere i dati dell'oggetto e i relativi metadati.

    ACL dell'oggetto
    • Read: consente all'assegnatario di leggere l'ACL dell'oggetto.

    • Write: consente all'assegnatario di scrivere l'ACL per l'oggetto interessato. Nella console S3, puoi concedere l'accesso in scrittura solo al proprietario del bucket (il tuo). Account AWS Ti consigliamo vivamente di non concedere l'accesso in scrittura ad altri utenti. Tuttavia, se devi concedere l'accesso in scrittura, puoi utilizzare gli AWS SDK o l' AWS CLI API REST.

  6. È possibile gestire le autorizzazioni di accesso all'oggetto per i seguenti tipi di accesso:

    1. Accesso per il proprietario dell'oggetto

      Il proprietario si riferisce all' Utente root dell'account AWS utente IAM e non a un utente AWS Identity and Access Management IAM. Per ulteriori informazioni sull'utente root, consulta Utente root dell'account AWS nella Guida per l'utente di IAM.

      Per modificare le autorizzazioni di accesso agli oggetti del proprietario, in Accesso per il proprietario dell'oggetto, scegli Il tuo AWS account (proprietario).

      Selezionare le caselle di controllo per le autorizzazioni da modificare, quindi selezionare Save (Salva).

    2. Accesso per altri Account AWS

      Per concedere le autorizzazioni a un AWS utente di un altro utente Account AWS, in Accesso per altri Account AWS, scegli Aggiungi account. Nel campo Inserisci un ID, inserisci l'ID canonico dell' AWS utente a cui desideri concedere le autorizzazioni relative all'oggetto. Per informazioni su come trovare un ID canonico, consultare la pagina relativa agli identificatori di Account AWS nella Riferimenti generali di Amazon Web Services. È possibile aggiungere fino a 99 utenti.

      Selezionare le caselle di controllo relative alle autorizzazioni da concedere all'utente, quindi selezionare Save (Salva). Per visualizzare informazioni sulle autorizzazioni, scegliere le icone della Guida in linea.

    3. Accesso pubblico

      Per concedere al pubblico (chiunque al mondo) l'accesso all'oggetto, in Public access (Accesso pubblico) scegliere Everyone (Tutti). La concessione delle autorizzazioni di accesso pubblico consente a chiunque di accedere all'oggetto.

      Selezionare le caselle di controllo per le autorizzazioni da concedere, quindi selezionare Save (Salva).

      avvertimento
      • Prestare attenzione quando si concede al gruppo Everyone (Tutti) l'accesso anonimo agli oggetti Amazon S3. Quando si concede l'accesso a questo gruppo, qualsiasi persona al mondo può accedere all'oggetto. Se è necessario concedere l'accesso a chiunque, è vivamente consigliato farlo solo per autorizzazioni di tipo Read objects (Leggi oggetti).

      • È vivamente sconsigliato autorizzare il gruppo Everyone (Tutti) alla scrittura dell'oggetto, perché questo consentirebbe a chiunque di sovrascrivere le autorizzazioni ACL per l'oggetto.

Questa sezione fornisce esempi di come configurare le autorizzazioni relative alla lista di controllo degli accessi (ACL) per i bucket e gli oggetti.

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione Proprietario del bucket applicato abilitata, le richieste per impostare liste di controllo degli accessi (ACL) e aggiornare le ACL non vanno a buon fine e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

Java

Questa sezione fornisce esempi di come configurare le autorizzazioni relative alla lista di controllo degli accessi (ACL) per i bucket e gli oggetti. Il primo esempio crea un bucket con un'ACL predefinita (consulta ACL predefinita), crea una lista di autorizzazioni personalizzate e poi sostituisce l'ACL predefinita con l'ACL contenente le autorizzazioni personalizzate. Il secondo esempio mostra come modificare un'ACL utilizzando il metodo AccessControlList.grantPermission().

Esempio Creare un bucket e specificare una ACL predefinita che concede l'autorizzazione al gruppo di recapito log S3

Questo esempio crea un bucket. Nella richiesta, l'esempio specifica un'ACL predefinita che concede al Gruppo Log Delivery l'autorizzazione di scrittura dei log sul bucket.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.ArrayList; public class CreateBucketWithACL { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String userEmailForReadPermission = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .build(); // Create a bucket with a canned ACL. This ACL will be replaced by the // setBucketAcl() // calls below. It is included here for demonstration purposes. CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName, clientRegion.getName()) .withCannedAcl(CannedAccessControlList.LogDeliveryWrite); s3Client.createBucket(createBucketRequest); // Create a collection of grants to add to the bucket. ArrayList<Grant> grantCollection = new ArrayList<Grant>(); // Grant the account owner full control. Grant grant1 = new Grant(new CanonicalGrantee(s3Client.getS3AccountOwner().getId()), Permission.FullControl); grantCollection.add(grant1); // Grant the LogDelivery group permission to write to the bucket. Grant grant2 = new Grant(GroupGrantee.LogDelivery, Permission.Write); grantCollection.add(grant2); // Save grants by replacing all current ACL grants with the two we just created. AccessControlList bucketAcl = new AccessControlList(); bucketAcl.grantAllPermissions(grantCollection.toArray(new Grant[0])); s3Client.setBucketAcl(bucketName, bucketAcl); // Retrieve the bucket's ACL, add another grant, and then save the new ACL. AccessControlList newBucketAcl = s3Client.getBucketAcl(bucketName); Grant grant3 = new Grant(new EmailAddressGrantee(userEmailForReadPermission), Permission.Read); newBucketAcl.grantAllPermissions(grant3); s3Client.setBucketAcl(bucketName, newBucketAcl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
Esempio Aggiornamento di un'ACL su un oggetto esistente

Questo esempio aggiorna l'ACL su un oggetto. L'esempio esegue le seguenti operazioni:

  • Recupera l'ACL di un oggetto

  • Elimina l'ACL rimuovendo tutte le autorizzazioni esistenti

  • Aggiunge due autorizzazioni: accesso completo al proprietario e WRITE_ACP (consulta Quali autorizzazioni è possibile concedere?) per un utente identificato tramite un indirizzo email

  • Salva l'ACL sull'oggetto

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AccessControlList; import com.amazonaws.services.s3.model.CanonicalGrantee; import com.amazonaws.services.s3.model.EmailAddressGrantee; import com.amazonaws.services.s3.model.Permission; import java.io.IOException; public class ModifyACLExistingObject { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; String emailGrantee = "*** user@example.com ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Get the existing object ACL that we want to modify. AccessControlList acl = s3Client.getObjectAcl(bucketName, keyName); // Clear the existing list of grants. acl.getGrantsAsList().clear(); // Grant a sample set of permissions, using the existing ACL owner for Full // Control permissions. acl.grantPermission(new CanonicalGrantee(acl.getOwner().getId()), Permission.FullControl); acl.grantPermission(new EmailAddressGrantee(emailGrantee), Permission.WriteAcp); // Save the modified ACL back to the object. s3Client.setObjectAcl(bucketName, keyName, acl); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET
Esempio Creare un bucket e specificare una ACL predefinita che concede l'autorizzazione al gruppo di recapito log S3

Questo esempio C# crea un bucket. Nella richiesta, il codice specifica anche un'ACL predefinita che concede al Gruppo Log Delivery le autorizzazioni di scrittura dei log sul bucket.

Per istruzioni su come creare e testare un esempio di utilizzo, consulta Esecuzione degli esempi di codice .NET di Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingBucketACLTest { private const string newBucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateBucketUseCannedACLAsync().Wait(); } private static async Task CreateBucketUseCannedACLAsync() { try { // Add bucket (specify canned ACL). PutBucketRequest putBucketRequest = new PutBucketRequest() { BucketName = newBucketName, BucketRegion = S3Region.EUW1, // S3Region.US, // Add canned ACL. CannedACL = S3CannedACL.LogDeliveryWrite }; PutBucketResponse putBucketResponse = await client.PutBucketAsync(putBucketRequest); // Retrieve bucket ACL. GetACLResponse getACLResponse = await client.GetACLAsync(new GetACLRequest { BucketName = newBucketName }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("S3 error occurred. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }
Esempio Aggiornamento di un'ACL su un oggetto esistente

Questo esempio C# aggiorna l'ACL su un oggetto esistente. L'esempio esegue le seguenti operazioni:

  • Recupera l'ACL di un oggetto.

  • Elimina l'ACL rimuovendo tutte le autorizzazioni esistenti.

  • Aggiunge due autorizzazioni: accesso completo al proprietario e WRITE_ACP per un utente identificato tramite un indirizzo email.

  • Salva l'ACL inviando una richiesta PutAcl.

Per istruzioni su come creare e testare un esempio di utilizzo, consulta Esecuzione degli esempi di codice .NET di Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class ManagingObjectACLTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key name ***"; private const string emailAddress = "*** email address ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); TestObjectACLTestAsync().Wait(); } private static async Task TestObjectACLTestAsync() { try { // Retrieve the ACL for the object. GetACLResponse aclResponse = await client.GetACLAsync(new GetACLRequest { BucketName = bucketName, Key = keyName }); S3AccessControlList acl = aclResponse.AccessControlList; // Retrieve the owner (we use this to re-add permissions after we clear the ACL). Owner owner = acl.Owner; // Clear existing grants. acl.Grants.Clear(); // Add a grant to reset the owner's full permission (the previous clear statement removed all permissions). S3Grant fullControlGrant = new S3Grant { Grantee = new S3Grantee { CanonicalUser = owner.Id }, Permission = S3Permission.FULL_CONTROL }; // Describe the grant for the permission using an email address. S3Grant grantUsingEmail = new S3Grant { Grantee = new S3Grantee { EmailAddress = emailAddress }, Permission = S3Permission.WRITE_ACP }; acl.Grants.AddRange(new List<S3Grant> { fullControlGrant, grantUsingEmail }); // Set a new ACL. PutACLResponse response = await client.PutACLAsync(new PutACLRequest { BucketName = bucketName, Key = keyName, AccessControlList = acl }); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

Le API Amazon S3 permettono di impostare una lista ACL durante la creazione di un bucket o di un oggetto. Amazon S3 fornisce anche un'API per impostare una lista ACL in un bucket o un oggetto esistente. Queste API forniscono i metodi seguenti per impostare un'ACL:

  • Impostazione della lista ACL tramite le intestazioni della richiesta – Quando invii una richiesta per creare una risorsa (bucket o oggetto), imposti una lista ACL utilizzando le intestazioni della richiesta. Tramite queste intestazioni, si può specificare o un'ACL predefinita oppure si possono indicare esplicitamente le concessioni (identificando assegnatario e autorizzazioni in modo esplicito).

  • Impostazione della lista ACL tramite il corpo della richiesta – Quando invii una richiesta per impostare una lista ACL per una risorsa esistente, puoi impostare la lista ACL o nell'intestazione o nel corpo della richiesta.

Per informazioni sul supporto di REST API per la gestione delle liste ACL, consulta le sezioni seguenti nella Documentazione di riferimento delle API di Amazon Simple Storage Service:

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione Proprietario del bucket applicato abilitata, le richieste per impostare liste di controllo degli accessi (ACL) e aggiornare le ACL non vanno a buon fine e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

Intestazioni di richiesta specifiche della lista di controllo degli accessi (ACL)

È possibile utilizzare le intestazioni per concedere le autorizzazioni basate sulla lista di controllo degli accessi (ACL). Per impostazione predefinita, tutti gli oggetti sono privati. Solo il proprietario ha il controllo completo dell'accesso. Quando aggiungi un nuovo oggetto, puoi concedere autorizzazioni a singoli Account AWS o a gruppi predefiniti definiti da Amazon S3. Queste autorizzazioni vengono quindi aggiunte alla lista di controllo degli accessi (ACL) sull'oggetto. Per ulteriori informazioni, consulta Panoramica delle liste di controllo accessi (ACL).

Con questa operazione, puoi concedere le autorizzazioni di accesso utilizzando uno dei due metodi seguenti:

  • ACL predefinita (x-amz-acl) - Amazon S3 supporta un set di ACL predefinite, note come ACL predefinite. Ogni ACL predefinita ha un insieme predefinito di assegnatari e autorizzazioni. Per ulteriori informazioni, consulta ACL predefinita.

  • Autorizzazioni di accesso: per concedere esplicitamente le autorizzazioni di accesso a gruppi Account AWS o specifici, utilizza le seguenti intestazioni. Ogni intestazione esegue il mapping di autorizzazioni specifiche supportate da Amazon S3 in un'ACL. Per ulteriori informazioni, consulta Panoramica delle liste di controllo accessi (ACL). Nell'intestazione, specifica un elenco di assegnatari che ottengono l'autorizzazione specifica.

    • x-amz-grant-read

    • x-amz-grant-write

    • x-amz-grant-read-acp

    • x-amz-grant-write-acp

    • x-amz-grant-full-controllo

Per ulteriori informazioni sulla gestione degli ACL utilizzando il AWS CLI, vedere put-bucket-aclnel AWS CLI Command Reference.

Importante

Se il bucket utilizza l'impostazione Proprietario del bucket applicato per Proprietà dell'oggetto S3, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Con l'impostazione Proprietario del bucket applicato abilitata, le richieste per impostare liste di controllo degli accessi (ACL) e aggiornare le ACL non vanno a buon fine e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.