Configurazione delle ACL - Amazon Simple Storage Service

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 privilegi alla risorsa AC utilizzando la AWS Management Console, la AWS Command Line Interface (CLI), REST API 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 utenti di Account AWS o a gruppi di default. 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.

Per impostazione predefinita, quando un altro Account AWS carica un oggetto nel bucket S3, tale account (l'object writer) possiede l'oggetto, ne ha accesso e può concedere ad altri utenti l'accesso tramite ACL. È possibile utilizzare Object Ownership per modificare questo comportamento di default in modo che le ACL siano disabilitate e che tu, in qualità di proprietario del bucket, possieda automaticamente ogni oggetto nel tuo bucket. Di conseguenza, il controllo degli accessi per i tuoi dati è basato su policy, come policy IAM, policy bucket S3, policy endpoint del cloud privato virtuale (VPC) e policy di controllo dei servizi (SCP) di AWS Organizations.

La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di ACL ed è consigliabile disabilitarle tranne in circostanze straordinarie in cui è necessario controllare l'accesso individualmente per ciascun oggetto. Con Object Ownership, è possibile disabilitare le ACL e fare affidamento sulle policy per il controllo degli accessi. Quando si disabilitano le ACL, è possibile mantenere facilmente un bucket con oggetti caricati da diversi Account AWS. In qualità di proprietario del bucket, possiedi tutti gli oggetti nel bucket e puoi gestirne l'accesso utilizzando le policy. 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 S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.

avvertimento

È consigliabile 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 delle ACL, utilizza REST API di Amazon S3, la AWS CLI oppure gli SDK AWS.

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

Autorizzazioni ACL della console 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 S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte 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 alla 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 distribuzione 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 è necessario concedere l'accesso in scrittura, puoi utilizzare la AWS CLI, gli SDK AWS o REST API.

    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, accanto a Proprietario del bucket (il tuo Account AWS), deseleziona o una delle seguenti autorizzazioni ACL:

    • OggettiElenco o scrittura

    • ACL del bucketLettura o scrittura

    Con il termine proprietario si intende l'utente root Account AWS e non 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.

  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 per chiunque disponga di un Account AWS, accanto a Gruppo di utenti autenticati (chiunque abbia 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 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 Account AWS, effettua le seguenti operazioni:

    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 l'accesso alle tue risorse ad altri Account AWS, tieni presente che tutti gli Account AWS possono delegare le autorizzazioni agli utenti sotto i loro 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 Account AWS, in Accesso ad 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 delle ACL, utilizza REST API di Amazon S3, la AWS CLI oppure gli SDK AWS. Nella tabella seguente vengono illustrate le autorizzazioni ACL che è possibile configurare per gli oggetti nella console Amazon S3.

Autorizzazioni ACL della console 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 S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte 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 alla 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 è necessario concedere l'accesso in scrittura, puoi utilizzare la AWS CLI, gli SDK AWS o REST API.

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

    1. Accesso per il proprietario dell'oggetto

      Con il termine proprietario si intende l'utente root Account AWS e non 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 dell'oggetto del proprietario, in Accesso per il proprietario dell'oggettoscegli Il tuo account AWS (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 utente AWS da un Account AWS diverso, in Accesso per altri Account AWS, scegli Aggiungi account. Nel campo Inserisci un ID, inserisci l'ID canonico dell'utente AWS a cui si desidera concedere le autorizzazioni per l'oggetto. Per informazioni su come trovare un ID canonico, consulta la sezione Identificatori dell'Account AWS in 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 S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte 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 S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte 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 le autorizzazioni a singoli Account AWS o a gruppi predefiniti di 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 specifici account o gruppi Account AWS, utilizza le intestazioni seguenti. 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 control

Per ulteriori informazioni sulla gestione delle ACL tramite la AWS CLI, consulta la sezione put-bucket-acl nei riferimenti ai comandi della AWS CLI.

Importante

Se il bucket utilizza l'impostazione proprietario del bucket applicato per S3 Object Ownership, è necessario utilizzare le policy per concedere l'accesso al bucket e agli oggetti in esso contenuti. Le richieste di configurazione o di aggiornamento delle ACL sono respinte e restituiscono il codice di errore AccessControlListNotSupported. Le richieste di lettura delle ACL sono ancora supportate.