

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 ACLs
<a name="managing-acls"></a>

Questa sezione spiega come gestire le autorizzazioni di accesso per i bucket e gli oggetti S3 utilizzando gli elenchi di controllo degli accessi (). ACLs Puoi aggiungere concessioni all'ACL della tua risorsa utilizzando l'API Console di gestione AWS, ( AWS Command Line Interface CLI), REST o. AWS SDKs

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 impostazione predefinita, il proprietario, che è colui Account AWS che ha creato il bucket, dispone delle autorizzazioni complete.

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 Object Ownership è un'impostazione a livello di bucket di Amazon S3 che puoi utilizzare sia per controllare la proprietà degli oggetti caricati nel tuo bucket sia per disabilitarli o abilitarli. ACLs Per impostazione predefinita, Object Ownership è impostata sull'impostazione imposta dal proprietario del Bucket e tutti sono disabilitati. ACLs Quando ACLs sono disabilitati, il proprietario del bucket possiede tutti gli oggetti nel bucket e ne gestisce l'accesso esclusivamente utilizzando le politiche di gestione degli accessi.

 La maggior parte dei casi d'uso moderni in Amazon S3 non richiede più l'uso di. ACLs Ti consigliamo di rimanere ACLs disabilitato, tranne nei casi in cui devi controllare l'accesso per ogni oggetto singolarmente. ACLs Disabilitando, puoi utilizzare le policy per controllare l'accesso a tutti gli oggetti nel tuo bucket, indipendentemente da chi ha caricato gli oggetti nel tuo bucket. Per ulteriori informazioni, consulta [Controllo della proprietà degli oggetti e disattivazione ACLs del bucket](about-object-ownership.md).

**Importante**  
Se il bucket per uso generico utilizza l’impostazione Proprietario del bucket applicato per Proprietà dell’oggetto S3, è necessario utilizzare le policy per fornire l’accesso al bucket per uso generico e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario del Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice di errore. `AccessControlListNotSupported` Le richieste di lettura ACLs 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](acl-overview.md#specifying-grantee-predefined-groups).

## Utilizzo della console S3 per impostare le autorizzazioni ACL per un bucket
<a name="set-bucket-permissions"></a>

La console mostra le concessioni di accesso combinate per gli assegnatari duplicati. Per visualizzare l'elenco completo di ACLs, usa l'API REST di Amazon S3 o. AWS CLI AWS SDKs

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\$1ACP | Consente all'assegnatario di leggere l'ACL del bucket. | 
| ACL del bucket – Scrittura | WRITE\$1ACP | 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\$1ACP | 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)](acl-overview.md).

**Importante**  
Se il bucket per uso generico utilizza l’impostazione Proprietario del bucket applicato per Proprietà dell’oggetto S3, è necessario utilizzare le policy per fornire l’accesso al bucket per uso generico e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il `AccessControlListNotSupported` codice di errore. Le richieste di lettura ACLs sono ancora supportate.

**Come impostare le autorizzazioni ACL per un bucket**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Bucket per uso generico**.

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

1. Seleziona **Autorizzazioni**.

1. 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 l'API AWS CLI AWS SDKs, o 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.

1. Per modificare le autorizzazioni del proprietario del bucket, oltre a **Bucket owner (tuo Account AWS)**, deseleziona o seleziona una delle seguenti autorizzazioni ACL:
   + **Oggetti** – **Elenco** o **scrittura**
   + **ACL del bucket** – **Lettura** 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) nella *Guida per l'utente di IAM*.

1. 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:
   + **Oggetti** – **Elenco**
   + **ACL del bucket** – **Lettura**
**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.

1. 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:
   + **Oggetti** – **Elenco**
   + **ACL del bucket** – **Lettura**

1. 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:
   + **Oggetti** – **Elenco** o **scrittura** 
   + **ACL del bucket** – **Lettura** 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](enable-server-access-logging.md).

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

   1. Scegli **Aggiungi assegnatario**.

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

   1. Seleziona una delle seguenti autorizzazioni ACL:
      + **Oggetti** – **Elenco** o **scrittura**
      + **ACL del bucket** – **Lettura** 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) nella *Guida per l'utente di IAM*. 

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

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

## Utilizzo della console S3 per impostare le autorizzazioni ACL per un oggetto
<a name="set-object-permissions"></a>

La console mostra le concessioni di accesso combinate per gli assegnatari duplicati. Per visualizzare l'elenco completo di ACLs, usa l'API REST di Amazon S3 o. AWS CLI AWS SDKs 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\$1ACP | Consente all'assegnatario di leggere l'ACL dell'oggetto. | 
| ACL dell'oggetto - Scrittura | WRITE\$1ACP | Consente all'assegnatario di scrivere l'ACL dell'oggetto interessato | 

Per ulteriori informazioni sulle autorizzazioni ACL, consulta [Panoramica delle liste di controllo accessi (ACL)](acl-overview.md).

**Importante**  
Se il bucket per uso generico utilizza l’impostazione Proprietario del bucket applicato per Proprietà dell’oggetto S3, è necessario utilizzare le policy per fornire l’accesso al bucket per uso generico e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il `AccessControlListNotSupported` codice di errore. Le richieste di lettura ACLs sono ancora supportate.

**Come impostare le autorizzazioni ACL per un oggetto**

1. Accedi Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

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

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

1. Seleziona **Autorizzazioni**.

1. 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 l'API AWS CLI AWS SDKs, o REST. 

1. È 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 AWS Identity and Access Management IAM e non a un utente. Per ulteriori informazioni sull'utente root, consulta [Utente root dell'account AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) 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)**.

   1. 

**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 sulla ricerca di un ID canonico, consulta I tuoi identificatori nel. Account AWS*Riferimenti generali di Amazon Web Services*](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) È 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. 

   1. 

**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.

## Utilizzando il AWS SDKs
<a name="acl-using-sdk"></a>

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 per uso generico utilizza l’impostazione Proprietario del bucket applicato per Proprietà dell’oggetto S3, è necessario utilizzare le policy per fornire l’accesso al bucket per uso generico e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice `AccessControlListNotSupported` di errore. Le richieste di lettura ACLs 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](acl-overview.md#canned-acl)), 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()`.

**Example 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();
        }
    }
}
```

**Example 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\$1ACP (consulta [Quali autorizzazioni è possibile concedere?](acl-overview.md#permissions)) 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 ]

**Example Creare un bucket e specificare una ACL predefinita che concede l'autorizzazione al gruppo di recapito log S3**  
Questo esempio C\$1 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 informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*.   

```
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());
            }
        }
    }
}
```

**Example Aggiornamento di un'ACL su un oggetto esistente**  
Questo esempio C\$1 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\$1ACP per un utente identificato tramite un indirizzo email.
+ Salva l'ACL inviando una richiesta `PutAcl`.
Per informazioni sulla configurazione e l'esecuzione degli esempi di codice, consulta [Getting Started with the AWS SDK for .NET nella AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET *Developer Guide*.   

```
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());
            }
        }
    }
}
```

------

## Utilizzo della REST API
<a name="acl-using-rest-api"></a>

Amazon S3 ti APIs consente di impostare un ACL quando crei un bucket o un oggetto. Amazon S3 fornisce anche un'API per impostare una lista ACL in un bucket o un oggetto esistente. Questi APIs forniscono i seguenti metodi 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 dell'API REST per la gestione ACLs, consulta le seguenti sezioni nel *riferimento all'API di Amazon Simple Storage Service*:
+  [GetBucketAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETacl.html) 
+  [PutBucketAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) 
+  [GetObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGETacl.html) 
+  [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUTacl.html) 
+  [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) 
+  [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html) 
+  [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html) 
+  [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html) 

**Importante**  
Se il bucket per uso generico utilizza l’impostazione Proprietario del bucket applicato per Proprietà dell’oggetto S3, è necessario utilizzare le policy per fornire l’accesso al bucket per uso generico e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione delle liste di controllo degli accessi (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice `AccessControlListNotSupported` di errore. Le richieste di lettura ACLs sono ancora supportate.

### Intestazioni di richiesta specifiche della lista di controllo degli accessi (ACL)
<a name="acl-headers-rest-api"></a>

È 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)](acl-overview.md).

Con questa operazione, puoi concedere le autorizzazioni di accesso utilizzando uno dei due metodi seguenti:
+ **ACL preimpostato (`x-amz-acl`)**: Amazon S3 supporta un set di ACL predefiniti, noti ACLs come predefiniti. ACLs Ogni ACL predefinita ha un insieme predefinito di assegnatari e autorizzazioni. Per ulteriori informazioni, consulta [ACL predefinita](acl-overview.md#canned-acl).
+ **Autorizzazioni di accesso: per concedere esplicitamente le autorizzazioni** di accesso a gruppi o specifici Account AWS , 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)](acl-overview.md). 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

## Usando il AWS CLI
<a name="using-acl-cli"></a>

Per ulteriori informazioni sulla gestione dell' ACLs utilizzo di AWS CLI, vedere [put-bucket-acl](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-acl.html)nel *AWS CLI Command Reference*.

**Importante**  
Se il bucket per uso generico utilizza l’impostazione Proprietario del bucket applicato per Proprietà dell’oggetto S3, è necessario utilizzare le policy per fornire l’accesso al bucket per uso generico e agli oggetti in esso contenuti. Con l'impostazione forzata del proprietario di Bucket abilitata, le richieste di impostazione degli elenchi di controllo di accesso (ACLs) o di aggiornamento hanno ACLs esito negativo e restituiscono il codice `AccessControlListNotSupported` di errore. Le richieste di lettura ACLs sono ancora supportate.