

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

# Gestire l'accesso con ACLs
<a name="acls"></a>

 Le liste di controllo degli accessi (ACLs) sono una delle opzioni basate sulle risorse che puoi utilizzare per gestire l'accesso ai tuoi bucket e oggetti. È possibile utilizzare ACLs per concedere autorizzazioni di lettura/scrittura di base ad altri. Account AWS Esistono dei limiti alla gestione delle autorizzazioni tramite. ACLs

Ad esempio, puoi concedere autorizzazioni solo ad altri Account AWS; non puoi concedere autorizzazioni agli utenti del tuo account. Non puoi concedere autorizzazioni condizionali, né puoi negare esplicitamente le autorizzazioni. ACLs sono adatti per scenari specifici. Ad esempio, se il proprietario di un bucket consente Account AWS ad altri di caricare oggetti, le autorizzazioni per questi oggetti possono essere gestite utilizzando l'ACL dell'oggetto solo dal proprietario dell' Account AWS oggetto.

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.

Per ulteriori informazioni in merito ACLs, consulta i seguenti argomenti.

**Topics**
+ [

# Panoramica delle liste di controllo accessi (ACL)
](acl-overview.md)
+ [

# Configurazione ACLs
](managing-acls.md)
+ [

# Esempi di politiche per ACLs
](example-bucket-policies-condition-keys.md)

# Panoramica delle liste di controllo accessi (ACL)
<a name="acl-overview"></a>

Le liste di controllo degli accessi di Amazon S3 (ACLs) consentono di gestire l'accesso a bucket e oggetti. A ogni bucket e oggetto è allegata una ACL come sottorisorsa. Definisce a quali Account AWS gruppi è concesso l'accesso e il tipo di accesso. Quando viene ricevuta una richiesta relativa a una risorsa, Amazon S3 controlla la lista ACL corrispondente per verificare che il richiedente disponga delle autorizzazioni di accesso necessarie. 

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.

Quando crei un bucket o un oggetto, Amazon S3 crea una lista ACL predefinita che concede al proprietario della risorsa il controllo completo su di essa. Questa situazione è illustrata nella seguente ACL del bucket di esempio (l'oggetto ACL predefinito ha la medesima struttura):

**Example**  

```
 1. <?xml version="1.0" encoding="UTF-8"?>
 2. <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
 3.   <Owner>
 4.     <ID>*** Owner-Canonical-User-ID ***</ID>
 5.   </Owner>
 6.   <AccessControlList>
 7.     <Grant>
 8.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 9.                xsi:type="Canonical User">
10.         <ID>*** Owner-Canonical-User-ID ***</ID>
11.       </Grantee>
12.       <Permission>FULL_CONTROL</Permission>
13.     </Grant>
14.   </AccessControlList>
15. </AccessControlPolicy>
```

L'ACL di esempio include un elemento `Owner` che identifica il proprietario tramite l'ID utente canonico dell' Account AWS. Per istruzioni sulla ricerca dell'ID utente canonico, consulta [Trovare un ID utente Account AWS canonico](#finding-canonical-id). L'`Grant`elemento identifica il beneficiario (un gruppo Account AWS o un gruppo predefinito) e l'autorizzazione concessa. Questa ACL predefinita possiede un elemento `Grant` per il proprietario. Per concedere le autorizzazioni aggiungere elementi `Grant`; ognuno di questi elementi identifica l'assegnatario e l'autorizzazione. 

**Nota**  
Un ACL può avere fino a 100 di questi elementi.

**Topics**
+ [

## Che cosa si intende per assegnatario?
](#specifying-grantee)
+ [

## Quali autorizzazioni è possibile concedere?
](#permissions)
+ [

## Valori `aclRequired` per le richieste di Amazon S3
](#aclrequired-s3)
+ [

## ACL di esempio
](#sample-acl)
+ [

## ACL predefinita
](#canned-acl)

## Che cosa si intende per assegnatario?
<a name="specifying-grantee"></a>

Quando si concedono i diritti di accesso, si specifica ogni assegnatario come coppia `type="value"` in cui `type` è uno dei seguenti:
+ `id`— Se il valore specificato è l'ID utente canonico di un Account AWS
+ `uri`: se si concedono autorizzazioni a un gruppo predefinito

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

### Trovare un ID utente Account AWS canonico
<a name="finding-canonical-id"></a>

L'ID utente canonico è associato al tuo Account AWS. Questo ID è una stringa di caratteri lunga, ad esempio:

`79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`

Per informazioni su come trovare l'ID utente canonico per l'account, consulta la sezione [Trovare l'ID utente canonico per Account AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html#FindCanonicalId) nella *Guida di riferimento per la gestione dell'account AWS *.

Puoi anche cercare l'ID utente canonico di un utente Account AWS leggendo l'ACL di un bucket o di un oggetto a cui dispone delle autorizzazioni di accesso. Account AWS Quando a un individuo Account AWS vengono concesse le autorizzazioni tramite una richiesta di concessione, viene aggiunta una voce di autorizzazione all'ACL con l'ID utente canonico dell'account. 

**Nota**  
Se rendi pubblico il bucket (non consigliato) qualsiasi utente non autenticato può caricare oggetti nel bucket. Questi utenti anonimi non dispongono di un Account AWS. Quando un utente anonimo carica un oggetto nel tuo bucket Amazon S3 aggiunge un ID utente canonico speciale (`65a011a29cdf8ec533ec3d1ccaae921c`) in quanto proprietario dell'oggetto nell'ACL. Per ulteriori informazioni, consulta [Proprietà di bucket e oggetti di Amazon S3](access-policy-language-overview.md#about-resource-owner).

### Gruppi predefiniti di Amazon S3
<a name="specifying-grantee-predefined-groups"></a>

Amazon S3 include un set di gruppi predefiniti. Quando concedi l'accesso tramite account a un gruppo, specifichi uno degli Amazon URIs S3 anziché un ID utente canonico. Amazon S3 fornisce i seguenti gruppi predefiniti:
+ ****Gruppo Authenticated Users**** – Rappresentato da `http://acs.amazonaws.com/groups/global/AuthenticatedUsers`.

  Questo gruppo rappresenta tutto. Account AWS**L'autorizzazione di accesso a questo gruppo consente Account AWS a chiunque di accedere alla risorsa.** Tuttavia, tutte le richieste devono essere firmate (autenticate).
**avvertimento**  
Quando concedi l'accesso al **gruppo Authenticated Users**, qualsiasi utente AWS autenticato al mondo può accedere alla tua risorsa.
+ ****Gruppo All Users**** – Rappresentato da `http://acs.amazonaws.com/groups/global/AllUsers`.

  **L'autorizzazione di accesso per questo gruppo consente a qualsiasi persona al mondo di accedere alla risorsa.** Le richieste possono essere firmate (autenticate) o non firmate (anonime). Le richieste non firmate mancano dell'intestazione di autenticazione.
**avvertimento**  
È vivamente consigliato non concedere mai al **gruppo All Users** autorizzazioni `WRITE`, `WRITE_ACP` o `FULL_CONTROL`. Ad esempio, sebbene le autorizzazioni `WRITE` non consentano ai non proprietari di sovrascrivere o eliminare oggetti esistenti, le autorizzazioni `WRITE` consentono comunque a chiunque di archiviare oggetti nel bucket, i quali vengono fatturati. Per ulteriori dettagli su queste autorizzazioni, consulta la sezione [Quali autorizzazioni è possibile concedere?](#permissions).
+ ****Gruppo Log Delivery**** – Rappresentato da `http://acs.amazonaws.com/groups/s3/LogDelivery`.

  L'autorizzazione `WRITE` per un bucket consente a questo gruppo di scriver log di credenziali d'accesso al server (consulta [Registrazione delle richieste con registrazione dell'accesso al server](ServerLogs.md)) per il bucket.

**Nota**  
Quando si utilizza ACLs, un beneficiario può essere uno Account AWS o uno dei gruppi Amazon S3 predefiniti. Tuttavia, l'assegnatario non può essere un utente IAM. Per ulteriori informazioni sugli utenti AWS e sulle autorizzazioni in IAM, consulta [Utilizzo di AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

## Quali autorizzazioni è possibile concedere?
<a name="permissions"></a>

La seguente tabella elenca il set di autorizzazioni che Amazon S3 supporta in una lista ACL. L'insieme di autorizzazioni ACL è lo stesso per le ACL degli oggetti e dei bucket. Tuttavia, a seconda del contesto (bucket ACL o oggetto ACL), queste autorizzazioni si riferiscono a specifiche operazioni sui bucket o sugli oggetti. La tabella elenca le autorizzazioni e ne descrive il significato nel contesto degli oggetti e dei bucket. 

Per ulteriori informazioni sulle autorizzazioni ACL nella console di Amazon S3, consulta [Configurazione ACLs](managing-acls.md).


| Autorizzazione | Concessione a livello di bucket | Concessione a livello di oggetto | 
| --- | --- | --- | 
| READ | Consente all'assegnatario di elencare gli oggetti del bucket | Consente all'assegnatario di leggere i dati dell'oggetto e i relativi metadata | 
| 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. | Non applicabile. | 
| READ\$1ACP | Consente all'assegnatario di leggere l'ACL del bucket | Consente all'assegnatario di leggere l'ACL dell'oggetto | 
| WRITE\$1ACP | Consente all'assegnatario di scrivere l'ACL del bucket interessato | Consente all'assegnatario di scrivere l'ACL dell'oggetto interessato | 
| FULL\$1CONTROL | Consente al beneficiario le autorizzazioni READ, WRITE, READ\$1ACP e WRITE\$1ACP sul bucket | Consente al beneficiario le autorizzazioni READ, READ\$1ACP e WRITE\$1ACP sull'oggetto | 

**avvertimento**  
Prestare attenzione a concedere le autorizzazioni di accesso ai bucket e agli oggetti S3. Ad esempio, la concessione dell'accesso `WRITE` a un bucket consente all'assegnatario di creare oggetti nel bucket. È vivamente consigliato di leggere tutta questa sezione [Panoramica delle liste di controllo accessi (ACL)](#acl-overview) prima di concedere autorizzazioni.

### Mappatura delle autorizzazioni ACL e delle autorizzazioni della policy di accesso
<a name="acl-access-policy-permission-mapping"></a>

Come illustrato nella tabella precedente, un'ACL concede solo un insieme finito di autorizzazioni rispetto al numero di autorizzazioni che possono essere definite in una policy d'accesso predefinita (consulta [Azioni di policy per Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions)). Ognuna di queste autorizzazioni permette di eseguire una o più operazioni di Amazon S3.

La seguente tabella mostra come ogni autorizzazione ACL è mappata sulle autorizzazioni corrispondenti della policy d'accesso predefinita. Come si può vedere, la policy di accesso predefinita concede un numero maggiore di autorizzazioni rispetto all'ACL. Si utilizzano ACLs principalmente per concedere autorizzazioni di base, simili alle read/write autorizzazioni del file system. Per ulteriori informazioni su quando utilizzare una lista ACL, consulta [Identity and Access Management per Amazon S3](security-iam.md).

Per ulteriori informazioni sulle autorizzazioni ACL nella console di Amazon S3, consulta [Configurazione ACLs](managing-acls.md).


| Autorizzazione ACL | Autorizzazioni corrispondenti della policy d'accesso predefinita quando l'autorizzazione ACL viene concessa su un bucket  | Autorizzazioni corrispondenti della policy d'accesso predefinita quando l'autorizzazione ACL viene concessa su un oggetto | 
| --- | --- | --- | 
| READ | s3:ListBucket, s3:ListBucketVersions e s3:ListBucketMultipartUploads  | s3:GetObject e s3:GetObjectVersion | 
| WRITE |  `s3:PutObject` Il proprietario del bucket può creare, sovrascrivere ed eliminare qualsiasi oggetto nel bucket e il proprietario dell'oggetto ha `FULL_CONTROL` sull'oggetto. Inoltre, quando l'assegnatario è il proprietario del bucket, la concessione dell'autorizzazione `WRITE` nell'ACL di un bucket consente l'esecuzione dell'operazione `s3:DeleteObjectVersion` su qualsiasi versione del bucket.   | Non applicabile. | 
| READ\$1ACP | s3:GetBucketAcl  | s3:GetObjectAcl e s3:GetObjectVersionAcl | 
| WRITE\$1ACP | s3:PutBucketAcl | s3:PutObjectAcl e s3:PutObjectVersionAcl | 
| FULL\$1CONTROL | Equivale alla concessione delle autorizzazioni ACL READ, WRITE, READ\$1ACP e WRITE\$1ACP. Di conseguenza, questa autorizzazione ACL è mappata su una combinazione delle autorizzazioni corrispondenti della policy d'accesso predefinita. | Equivale alla concessione delle autorizzazioni ACL READ, READ\$1ACP e WRITE\$1ACP. Di conseguenza, questa autorizzazione ACL è mappata su una combinazione delle autorizzazioni corrispondenti della policy d'accesso predefinita. | 

### Chiavi di condizione
<a name="acl-specific-condition-keys"></a>

Quando si concedono autorizzazioni per le policy di accesso, è possibile utilizzare le chiavi di condizione per limitare il valore dell'ACL su un oggetto utilizzando una policy del bucket. Le seguenti chiavi di contesto corrispondono a. ACLs È possibile utilizzare queste chiavi di contesto per richiedere l'utilizzo di un'ACL specifica in una richiesta:
+ `s3:x-amz-grant-read` – Richiedere l'accesso in lettura.
+ `s3:x-amz-grant-write` – Richiedere l'accesso in scrittura.
+ `s3:x-amz-grant-read-acp` – Richiedere l'accesso in lettura alla lista ACL del bucket.
+ `s3:x-amz-grant-write-acp` ‐ Richiedere l'accesso in scrittura alla lista ACL del bucket.
+ `s3:x-amz-grant-full-control` – Richiedere il controllo completo.
+ `s3:x-amz-acl` – Richiedere una lista [ACL predefinita](#canned-acl).

Per policy di esempio con intestazioni specifiche delle liste ACL, consulta [Concessione di s3: PutObject autorizzazione con una condizione che richiede al proprietario del bucket di ottenere il pieno controllo](example-bucket-policies-condition-keys.md#grant-putobject-conditionally-1). Per un elenco completo delle chiavi di condizione specifiche per Amazon S3, consulta [ Azioni, risorse e chiavi di condizione per Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) nella *Riferimento alle autorizzazioni di servizio*.

Per ulteriori informazioni sulle autorizzazioni alle operazioni API S3 per tipi di risorse S3, consulta [Autorizzazioni necessarie per le operazioni API di Amazon S3](using-with-s3-policy-actions.md).

## Valori `aclRequired` per le richieste di Amazon S3
<a name="aclrequired-s3"></a>

Per identificare le richieste Amazon S3 che richiedono ACLs l'autorizzazione, puoi utilizzare il `aclRequired` valore nei log di accesso al server Amazon S3 oppure. AWS CloudTrail Il `aclRequired` valore visualizzato nei CloudTrail nostri log di accesso al server di Amazon S3 dipende dalle operazioni richiamate e da determinate informazioni sul richiedente, sul proprietario dell'oggetto e sul proprietario del bucket. Se non è ACLs necessario, o se stai impostando l'ACL `bucket-owner-full-control` predefinito o se le richieste sono consentite dalla tua policy bucket, la stringa di `aclRequired` valore è "`-`" nei log di accesso al server di Amazon S3 ed è assente in. CloudTrail

Le tabelle seguenti elencano `aclRequired` i valori previsti nei CloudTrail nostri log di accesso al server Amazon S3 per le varie operazioni API di Amazon S3. Puoi utilizzare queste informazioni per capire da cosa dipende ACLs l'autorizzazione delle operazioni di Amazon S3. Nelle tabelle seguenti, A, B e C rappresentano i diversi account associati al richiedente, al proprietario dell'oggetto e al proprietario del bucket. Le voci con un asterisco (\$1) indicano uno degli account A, B o C. 

**Nota**  
Le operazioni `PutObject` nella tabella seguente, se non diversamente specificato, indicano richieste che non impostano un'ACL, a meno che l'ACL non sia un'ACL `bucket-owner-full-control`. Un valore nullo per `aclRequired` indica che `aclRequired` è assente nei log. AWS CloudTrail 

 La tabella seguente mostra i valori per`aclRequired`. CloudTrail 


| Nome operazione | Richiedente | Proprietario dell'oggetto. | Proprietario del bucket  | La policy di bucket garantisce l'accesso | `aclRequired` value | Motivo | 
| --- | --- | --- | --- | --- | --- | --- | 
| GetObject | A | A | A | Sì o No | null | Accesso allo stesso account | 
| GetObject | A | B | A | Sì o No | null | È stato imposto l'accesso allo stesso account con il proprietario del bucket | 
| GetObject | A | A | B | Sì | null | Accesso multi-account garantito dalla policy di bucket | 
| GetObject | A | A | B | No | Sì | L'accesso multi-account si basa su ACL | 
| GetObject | A | A | B | Sì | null | Accesso multi-account garantito dalla policy di bucket | 
| GetObject | A | B | B | No | Sì | L'accesso multi-account si basa su ACL | 
| GetObject | A | B | C | Sì | null | Accesso multi-account garantito dalla policy di bucket | 
| GetObject | A | B | C | No | Sì | L'accesso multi-account si basa su ACL | 
| PutObject | A | Non applicabile | A | Sì o No | null | Accesso allo stesso account | 
| PutObject | A | Non applicabile | B | Sì | null | Accesso multi-account garantito dalla policy di bucket | 
| PutObject | A | Non applicabile | B | No | Sì | L'accesso tra account si basa su ACL | 
| PutObject con un ACL (ad eccezione di bucket-owner-full-control) | \$1 | Non applicabile | \$1 | Sì o No | Sì | Richiesta di autorizzazioni ACL | 
| ListObjects | A | Non applicabile | A | Sì o No | null | Accesso allo stesso account | 
| ListObjects | A | Non applicabile | B | Sì | null | Accesso multi-account garantito dalla policy di bucket | 
| ListObjects | A | Non applicabile | B | No | Sì | L'accesso multi-account si basa su ACL | 
| DeleteObject | A | Non applicabile | A | Sì o No | null | Accesso allo stesso account | 
| DeleteObject | A | Non applicabile | B | Sì | null | Accesso multi-account garantito dalla policy di bucket | 
| DeleteObject | A | Non applicabile | B | No | Sì | L'accesso tra account si basa su ACL | 
| PutObjectAcl | \$1 | \$1 | \$1 | Sì o No | Sì | Richiesta di autorizzazioni ACL | 
| PutBucketAcl | \$1 | Non applicabile | \$1 | Sì o No | Sì | Richiesta di autorizzazioni ACL | 

 

**Nota**  
Le operazioni `REST.PUT.OBJECT` nella tabella seguente, se non diversamente specificato, indicano richieste che non impostano un ACL, a meno che l'ACL non sia un `bucket-owner-full-control` ACL. Una stringa di valori `aclRequired` di "`-`" indica un valore nullo nei log di accesso al server Amazon S3.

 La tabella seguente mostra i valori di `aclRequired` per i log di accesso al server Amazon S3. 


| Nome operazione | Richiedente | Proprietario dell'oggetto. | Proprietario del bucket  | La policy di bucket garantisce l'accesso | `aclRequired` value | Motivo | 
| --- | --- | --- | --- | --- | --- | --- | 
| REST.GET.OBJECT | A | A | A | Sì o No | - | Accesso allo stesso account | 
| REST.GET.OBJECT | A | B | A | Sì o No | - | È stato imposto l'accesso allo stesso account con il proprietario del bucket | 
| REST.GET.OBJECT | A | A | B | Sì | - | Accesso tra account a causa della politica tra account | 
| REST.GET.OBJECT | A | A | B | No | Sì | L'accesso multi-account si basa su ACL | 
| REST.GET.OBJECT | A | B | B | Sì | - | Accesso tra account a causa della politica tra account | 
| REST.GET.OBJECT | A | B | B | No | Sì | L'accesso multi-account si basa su ACL | 
| REST.GET.OBJECT | A | B | C | Sì | - | Accesso tra account a causa della politica tra account | 
| REST.GET.OBJECT | A | B | C | No | Sì | L'accesso multi-account si basa su ACL | 
| REST.PUT.OBJECT | A | Non applicabile | A | Sì o No | - | Accesso allo stesso account | 
| REST.PUT.OBJECT | A | Non applicabile | B | Sì | - | Accesso tra account a causa della politica tra account | 
| REST.PUT.OBJECT | A | Non applicabile | B | No | Sì | L'accesso tra account si basa su ACL | 
| REST.PUT.OBJECT con un ACL (ad eccezione di bucket-owner-full-control) | \$1 | Non applicabile | \$1 | Sì o No | Sì | Richiesta di autorizzazioni ACL | 
| REST.GET.BUCKET | A | Non applicabile | A | Sì o No | - | Accesso allo stesso account | 
| REST.GET.BUCKET | A | Non applicabile | B | Sì | - | Accesso tra account a causa della politica tra account | 
| REST.GET.BUCKET | A | Non applicabile | B | No | Sì | L'accesso multi-account si basa su ACL | 
| REST.DELETE.OBJECT | A | Non applicabile | A | Sì o No | - | Accesso allo stesso account | 
| REST.DELETE.OBJECT | A | Non applicabile | B | Sì | - | Accesso tra account a causa della politica tra account | 
| REST.DELETE.OBJECT | A | Non applicabile | B | No | Sì | L'accesso tra account si basa su ACL | 
| REST.PUT.ACL | \$1 | \$1 | \$1 | Sì o No | Sì | Richiesta di autorizzazioni ACL | 

## ACL di esempio
<a name="sample-acl"></a>

La seguente ACL di esempio su un bucket identifica il proprietario della risorsa e un insieme di concessioni. Il suo formato è la rappresentazione XML di una lista ACL in REST API di Amazon S3. Il proprietario del bucket ha il `FULL_CONTROL` della risorsa. Inoltre, l'ACL mostra come vengono concesse le autorizzazioni su una risorsa a due Account AWS, identificati da un ID utente canonico, e a due dei gruppi Amazon S3 predefiniti discussi nella sezione precedente.

**Example**  

```
 1. <?xml version="1.0" encoding="UTF-8"?>
 2. <AccessControlPolicy xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
 3.   <Owner>
 4.     <ID>Owner-canonical-user-ID</ID>
 5.   </Owner>
 6.   <AccessControlList>
 7.     <Grant>
 8.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
 9.         <ID>Owner-canonical-user-ID</ID>
10.       </Grantee>
11.       <Permission>FULL_CONTROL</Permission>
12.     </Grant>
13.     
14.     <Grant>
15.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
16.         <ID>user1-canonical-user-ID</ID>
17.       </Grantee>
18.       <Permission>WRITE</Permission>
19.     </Grant>
20. 
21.     <Grant>
22.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
23.         <ID>user2-canonical-user-ID</ID>
24.       </Grantee>
25.       <Permission>READ</Permission>
26.     </Grant>
27. 
28.     <Grant>
29.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
30.         <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI> 
31.       </Grantee>
32.       <Permission>READ</Permission>
33.     </Grant>
34.     <Grant>
35.       <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
36.         <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI>
37.       </Grantee>
38.       <Permission>WRITE</Permission>
39.     </Grant>
40. 
41.   </AccessControlList>
42. </AccessControlPolicy>
```

## ACL predefinita
<a name="canned-acl"></a>

*Amazon S3 supporta una serie di sovvenzioni predefinite, note come predefinite. ACLs* Ogni ACL predefinita ha un insieme predefinito di assegnatari e autorizzazioni. La tabella seguente elenca il set di sovvenzioni predefinite ACLs e le sovvenzioni predefinite associate. 


| ACL predefinita | Si applica a | Autorizzazioni aggiunte a un'ACL | 
| --- | --- | --- | 
| private | Bucket e oggetto | Il proprietario ottiene il FULL\$1CONTROL. Nessun altro ha diritti di accesso (impostazione predefinita). | 
| public-read | Bucket e oggetto | Il proprietario ottiene il FULL\$1CONTROL. Il gruppo AllUsers (consulta [Che cosa si intende per assegnatario?](#specifying-grantee)) ottiene l'accesso READ.  | 
| public-read-write | Bucket e oggetto | Il proprietario ottiene il FULL\$1CONTROL. Il gruppo AllUsersottiene l'accesso READ e WRITE. In genere la concessione di queste autorizzazioni su un bucket non è consigliata. | 
| aws-exec-read | Bucket e oggetto | Il proprietario ottiene il FULL\$1CONTROL. Amazon EC2 ottiene l'accesso di tipo READ per la richiesta GET con cui ottenere un bundle Amazon Machine Image (AMI) da Amazon S3. | 
| authenticated-read | Bucket e oggetto | Il proprietario ottiene il FULL\$1CONTROL. Il gruppo AuthenticatedUsers ottiene l'accesso READ. | 
| bucket-owner-read | Oggetto | Il proprietario dell'oggetto ottiene il FULL\$1CONTROL. Il proprietario del bucket ottiene l'accesso READ. Se specifichi questa lista ACL predefinita durante la creazione di un bucket, Amazon S3 la ignora. | 
| bucket-owner-full-control | Oggetto  | Sia il proprietario dell'oggetto che il proprietario del bucket ottengono il FULL\$1CONTROL dell'oggetto. Se specifichi questa lista ACL predefinita durante la creazione di un bucket, Amazon S3 la ignora. | 
| log-delivery-write | Bucket  | Il gruppo LogDelivery ottiene le autorizzazioni WRITE e READ\$1ACP sul bucket. Per ulteriori informazioni sui log, consulta ([Registrazione delle richieste con registrazione dell'accesso al server](ServerLogs.md)). | 

**Nota**  
È possibile specificare solo una di queste opzioni predefinite nella richiesta ACLs .

Per specificare un'ACL predefinita nella richiesta si utilizza l'intestazione di richiesta `x-amz-acl`. Quando Amazon S3 riceve una richiesta contenente una lista ACL predefinita, aggiunge le concessioni predefinite alla lista ACL della risorsa. 

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

# Esempi di politiche per ACLs
<a name="example-bucket-policies-condition-keys"></a>

È possibile utilizzare le chiavi di condizione nelle policy dei bucket per controllare l'accesso ad Amazon S3.

**Topics**
+ [

## Concessione di s3: PutObject autorizzazione con una condizione che richiede al proprietario del bucket di ottenere il pieno controllo
](#grant-putobject-conditionally-1)
+ [

## Concessione di s3: PutObject autorizzazione con una condizione nell'intestazione x-amz-acl
](#example-acl-header)

## Concessione di s3: PutObject autorizzazione con una condizione che richiede al proprietario del bucket di ottenere il pieno controllo
<a name="grant-putobject-conditionally-1"></a>

L'operazione [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html) permette intestazioni specifiche della lista di controllo degli accessi (ACL) che è possibile utilizzare per concedere autorizzazioni basate sulle liste ACL. Utilizzando queste chiavi, il proprietario del bucket può impostare una condizione per richiedere determinate autorizzazioni di accesso specifiche quando l'utente carica un oggetto. 

Si supponga che l'Account A sia proprietario di un bucket e che l'amministratore dell'account voglia assegnare a Dave, un utente dell'Account B, le autorizzazioni per caricare oggetti. Per default, gli oggetti che carica Dave sono di proprietà dell'Account B e l'Account A non dispone di autorizzazioni su tali oggetti. Dato che il proprietario del bucket paga i conti, vuole avere le autorizzazioni complete sugli oggetti che carica Dave. L'amministratore dell'Account A può farlo assegnando l'autorizzazione `s3:PutObject` a Dave, con la condizione che la richiesta includa intestazioni specifiche della lista di controllo accessi in modo da garantire esplicitamente l'autorizzazione completa o utilizzare una lista di controllo accessi predefinita. Per ulteriori informazioni, consulta [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).

### Richiedi l'intestazione x-amz-full-control
<a name="require-x-amz-full-control"></a>

È possibile richiedere l'intestazione `x-amz-full-control` nella richiesta con autorizzazione al controllo completo al proprietario del bucket. La seguente policy di bucket assegna l'autorizzazione `s3:PutObject` all'utente Dave con la condizione di utilizzare la chiave di condizione `s3:x-amz-grant-full-control` che prevede che la richiesta includa l'intestazione `x-amz-full-control`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::awsexamplebucket1/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
                }
            }
        }
    ]
}
```

------

**Nota**  
Questo esempio riguarda l'autorizzazione tra account. Tuttavia, se Dave (che sta ottenendo l'autorizzazione) appartiene al proprietario del Account AWS bucket, questa autorizzazione condizionata non è necessaria. Questo perché l'account padre a cui Dave appartiene è proprietario degli oggetti caricati dall'utente.

**Aggiunta del rifiuto esplicito**  
La precedente policy di bucket assegna l'autorizzazione condizionale all'utente Dave nell'Account B. Quando questa policy è attiva, per Dave è possibile ottenere la stessa autorizzazione senza alcuna condizione tramite qualche altra policy. Ad esempio, Dave può appartenere a un gruppo a cui viene assegnata l'autorizzazione `s3:PutObject` senza alcuna condizione. Per evitare questi espedienti riguardo alle autorizzazioni, è possibile scrivere una policy di accesso più rigida aggiungendo un rifiuto esplicito. In questo esempio, all'utente Dave viene esplicitamente rifiutata l'autorizzazione a eseguire caricamenti se non include le intestazioni necessarie nella richiesta che assegnano le autorizzazioni complete al proprietario del bucket. Il rifiuto esplicito sovrascrive sempre qualsiasi altra autorizzazione assegnata. Di seguito è illustrato un esempio della policy di accesso modificata con il rifiuto esplicito aggiunto.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::awsexamplebucket1/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
                }
            }
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/AccountBadmin"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::awsexamplebucket1/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-grant-full-control": "id=AccountA-CanonicalUserID"
                }
            }
        }
    ]
}
```

------

**Prova la politica con AWS CLI**  
Se ne hai due Account AWS, puoi testare la politica usando AWS Command Line Interface (AWS CLI). Allegate la policy e utilizzate le credenziali di Dave per testare l'autorizzazione utilizzando il seguente AWS CLI `put-object` comando. Le credenziali di Dave vengono fornite aggiungendo il parametro `--profile`. L'autorizzazione al controllo completo al proprietario del bucket viene assegnata aggiungendo il parametro `--grant-full-control`. *Per ulteriori informazioni sulla configurazione e l'utilizzo di AWS CLI, consulta [Developing with Amazon S3 using the AWS CLI nel Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Reference.* 

```
aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --grant-full-control id="AccountA-CanonicalUserID" --profile AccountBUserProfile
```

### Richiedi l'intestazione x-amz-acl
<a name="require-x-amz-acl-header"></a>

È possibile richiedere l'intestazione `x-amz-acl` con una lista di controllo degli accessi predefinita che assegna l'autorizzazione al controllo completo al proprietario del bucket. Per richiedere l'intestazione `x-amz-acl` nella richiesta, è possibile sostituire la coppia chiave-valore nel blocco `Condition` e specificare la chiave di condizione `s3:x-amz-acl` come mostrato nell'esempio seguente.

```
"Condition": {
    "StringEquals": {
        "s3:x-amz-acl": "bucket-owner-full-control"
    }
}
```

Per verificare l'autorizzazione utilizzando il AWS CLI, è necessario specificare il `--acl` parametro. AWS CLI Quindi aggiunge l'`x-amz-acl`intestazione quando invia la richiesta.

```
aws s3api put-object --bucket examplebucket --key HappyFace.jpg --body c:\HappyFace.jpg --acl "bucket-owner-full-control" --profile AccountBadmin
```

## Concessione di s3: PutObject autorizzazione con una condizione nell'intestazione x-amz-acl
<a name="example-acl-header"></a>

La seguente policy sui bucket concede l'`s3:PutObject`autorizzazione per due persone Account AWS se la richiesta include l'`x-amz-acl`intestazione che rende l'oggetto leggibile pubblicamente. Il blocco `Condition` utilizza la condizione `StringEquals` ed è dotato di una coppia chiave-valore, `"s3:x-amz-acl":["public-read"]`, per la valutazione. Nella coppia chiave-valore, la `s3:x-amz-acl` è una chiave specifica di Amazon S3, come indicato dal prefisso `s3:`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddCannedAcl",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:root",
                    "arn:aws:iam::111122223333:root"
                ]
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::awsexamplebucket1/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": [
                        "public-read"
                    ]
                }
            }
        }
    ]
}
```

------

**Importante**  
Non tutte le condizioni hanno significato per tutte le operazioni. Ha senso, ad esempio, includere una condizione `s3:LocationConstraint` in una policy che concede l'autorizzazione `s3:CreateBucket` di Amazon S3. Non ha tuttavia senso includere questa condizione in una policy che concede l'autorizzazione `s3:GetObject`. Amazon S3 può verificare la presenza di errori semantici di questo tipo che riguardano condizioni specifiche di Amazon S3. Se tuttavia stai creando una policy per un utente o un ruolo IAM e includi una condizione di Amazon S3 che non è valida sotto il profilo semantico, non viene segnalato alcun errore perché IAM non può convalidare le condizioni di Amazon S3. 