

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

# Esempi di policy del bucket Amazon S3
<a name="example-bucket-policies"></a>

Con le policy di bucket Amazon S3, puoi proteggere l'accesso agli oggetti nei tuoi bucket, in modo che solo gli utenti con le autorizzazioni appropriate possano accedervi. Puoi persino impedire agli utenti autenticati senza le autorizzazioni appropriate di accedere alle tue risorse Amazon S3.

Questa sezione include esempi di casi d'uso tipici per le policy di bucket. Queste policy di esempio utilizzano `{{amzn-s3-demo-bucket}}` come valore di risorsa. Per testare queste policy, sostituisci `{{user input placeholders}}` con le tue informazioni (come il nome del bucket). 

Per concedere o negare le autorizzazioni a un insieme di oggetti, puoi utilizzare caratteri jolly () `*` in Amazon Resource Names (ARNs) e altri valori. Ad esempio, è possibile controllare l'accesso a gruppi di oggetti che iniziano con un [prefisso](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) comune o terminano con un'estensione specifica, come `.html`. 

Per ulteriori informazioni sul linguaggio di policy AWS Identity and Access Management (IAM), consulta. [Policy e autorizzazioni in Amazon S3](access-policy-language-overview.md)

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

**Nota**  
Per testare le autorizzazioni utilizzando la console di Amazon S3, dovrai concedere le autorizzazioni aggiuntive richieste dalla console, ovvero `s3:ListAllMyBuckets`, `s3:GetBucketLocation` e `s3:ListBucket`. Per una procedura dettagliata di esempio che concede autorizzazioni a utenti e le testa utilizzando la console, consulta [Procedura guidata: controllo dell'accesso a un bucket con policy utente](walkthrough1.md).

Ulteriori risorse per la creazione di policy sui bucket sono le seguenti:
+ Per un elenco delle azioni, delle risorse e delle chiavi di condizione delle policy IAM che è possibile utilizzare quando si crea una policy di bucket, consulta [Azioni, risorse e chiavi di condizione per Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) in *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).
+ Per istruzioni sulla creazione della policy S3, consulta [Aggiunta di una policy di bucket utilizzando la console di Amazon S3](add-bucket-policy.md).
+ Per risolvere gli errori relativi a una policy, consulta [Risoluzione dei problemi relativi agli errori di accesso negato (403 Forbidden) in Amazon S3](troubleshoot-403-errors.md).

Se riscontri problemi nell'aggiungere o aggiornare una policy, consulta [Perché ricevo l'errore «Principio non valido nella policy» quando tento di aggiornare la mia policy sui bucket Amazon S3](https://repost.aws/knowledge-center/s3-invalid-principal-in-policy-error)? nel Knowledge Center. AWS re:Post 

**Topics**
+ [Concessione dell'autorizzazione di sola lettura a un utente pubblico anonimo](#example-bucket-policies-anonymous-user)
+ [Richiesta della crittografia](#example-bucket-policies-encryption)
+ [Gestione dei bucket utilizzando «in scatola» ACLs](#example-bucket-policies-public-access)
+ [Gestione dell'accesso agli oggetti con assegnazione di tag agli oggetti](#example-bucket-policies-object-tags)
+ [Gestione dell'accesso agli oggetti utilizzando chiavi di condizione globali](#example-bucket-policies-global-condition-keys)
+ [Gestione dell'accesso in base a richieste HTTP o HTTPS](#example-bucket-policies-HTTP-HTTPS)
+ [Gestione dell'accesso utente a cartelle specifiche](#example-bucket-policies-folders)
+ [Gestione dell'accesso per i log degli accessi](#example-bucket-policies-access-logs)
+ [Gestione dell'accesso a un Amazon CloudFront OAI](#example-bucket-policies-cloudfront)
+ [Gestione dell'accesso per Amazon S3 Storage Lens](#example-bucket-policies-lens)
+ [Gestione delle autorizzazioni per i report di S3 Inventory, S3 Analytics e S3 Inventory](#example-bucket-policies-s3-inventory)
+ [Richiesta dell'autenticazione a più fattori (MFA)](#example-bucket-policies-MFA)
+ [Impedire agli utenti di eliminare gli oggetti](#using-with-s3-actions-related-to-bucket-subresources)

## Concessione dell'autorizzazione di sola lettura a un utente pubblico anonimo
<a name="example-bucket-policies-anonymous-user"></a>

È possibile utilizzare le impostazioni delle policy per concedere l'accesso a utenti pubblici anonimi, il che è utile se si sta configurando il bucket come un sito web statico. Per consentire l'accesso agli utenti pubblici anonimi è necessario disattivare le impostazioni di Blocco dell'accesso pubblico per il bucket. Per ulteriori informazioni su come fare e sulle policy necessarie, consulta [Impostazione delle autorizzazioni per l'accesso al sito Web](WebsiteAccessPermissionsReqd.md). Per informazioni su come configurare politiche più restrittive per lo stesso scopo, vedi [Come posso concedere l'accesso pubblico in lettura ad alcuni oggetti nel mio bucket Amazon S3](https://repost.aws/knowledge-center/read-access-objects-s3-bucket)? nel Knowledge Center. AWS 

Per impostazione predefinita, Amazon S3 blocca l'accesso pubblico all'account e ai bucket. Per utilizzare un bucket per ospitare un sito Web statico, puoi seguire questa procedura per modificare le impostazioni di blocco dell'accesso pubblico: 

**avvertimento**  
Prima di completare questi passaggi, consulta [Blocco dell'accesso pubblico allo storage Amazon S3](access-control-block-public-access.md) per assicurarsi di aver compreso e accettato i rischi connessi alla concessione dell'accesso pubblico. Quando si disattivano le impostazioni di blocco dell'accesso pubblico per rendere pubblico il bucket, chiunque su Internet può accedere al bucket. Consigliamo di bloccare tutti gli accessi pubblici ai bucket.

1. Apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Seleziona il nome del bucket configurato come sito Web statico.

1. Seleziona **Autorizzazioni**.

1. In **Blocca accesso pubblico (impostazioni bucket)**, seleziona **Modifica**.

1. Deseleziona **Blocca *tutto* l'accesso pubblico**, quindi seleziona **Salva modifiche**.  
![Console Amazon S3 in cui vengono mostrate le impostazioni di blocco dell'accesso pubblico a un bucket.](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 disattiva le impostazioni di blocco dell'accesso pubblico per il bucket. Per creare un sito web pubblico statico, potrebbe essere necessario [modificare anche le impostazioni di blocco dell'accesso pubblico](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html) per l'account prima di aggiungere una policy del bucket. Se le impostazioni di Blocco dell'accesso pubblico per l'account sono attualmente attivate, viene visualizzata una nota sotto **Blocco dell'accesso pubblico (impostazioni del bucket)**.

## Richiesta della crittografia
<a name="example-bucket-policies-encryption"></a>

Puoi richiedere la crittografia lato server con AWS Key Management Service (AWS KMS) chiavi (SSE-KMS), come mostrato negli esempi seguenti.

### Richiedi SSE-KMS per tutti gli oggetti scritti in un bucket
<a name="example-bucket-policies-encryption-1"></a>

La seguente politica di esempio richiede che ogni oggetto scritto nel bucket sia crittografato con la crittografia lato server utilizzando le chiavi () (SSE-KMS). AWS Key Management Service AWS KMS Se l'oggetto non è crittografato con SSE-KMS, la richiesta viene rifiutata.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "{{DenyObjectsThatAreNotSSEKMS}}",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
  "Condition": {
    "Null": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "true"
    }
  }
}]
}
```

------

### Richiedi SSE-KMS con uno specifico per tutti gli oggetti scritti in un bucket AWS KMS key
<a name="example-bucket-policies-encryption-2"></a>

La seguente policy di esempio impedisce la scrittura di qualsiasi oggetto nel bucket se l'oggetto non è crittografato con SSE-KMS mediante un ID chiave KMS specifico. Anche se gli oggetti sono crittografati con SSE-KMS utilizzando un'intestazione per richiesta o la crittografia predefinita del bucket, gli oggetti non possono essere scritti nel bucket se non sono stati crittografati con la chiave KMS specificata. Assicurati di sostituire il nome della risorsa Amazon (ARN) della chiave KMS utilizzata in questo esempio con il nome della risorsa Amazon (ARN) della tua chiave KMS ARN.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
"Id": "PutObjPolicy",
"Statement": [{
  "Sid": "{{DenyObjectsThatAreNotSSEKMSWithSpecificKey}}",
  "Principal": "*",
  "Effect": "Deny",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
  "Condition": {
    "ArnNotEqualsIfExists": {
      "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:{{us-east-1}}:{{111122223333}}:key/{{01234567-89ab-cdef-0123-456789abcdef}}"
    }
  }
}]
}
```

------

## Gestione dei bucket utilizzando «in scatola» ACLs
<a name="example-bucket-policies-public-access"></a>

### Concessione delle autorizzazioni a più account per caricare oggetti o impostare oggetti per l'accesso pubblico ACLs
<a name="example-bucket-policies-acl-1"></a>

Il seguente esempio di policy concede i permessi `s3:PutObject` e `s3:PutObjectAcl` a più Account AWS. Inoltre, la policy di esempio richiede che tutte le richieste per queste operazioni includano la [lista di controllo degli accessi (ACL) predefinita ](acl-overview.md#canned-acl)`public-read`. Per ulteriori informazioni, consultare [Azioni di policy per Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) e [Chiavi di condizione per Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys).

**avvertimento**  
L'ACL `public-read` predefinita consente a chiunque nel mondo di visualizzare gli oggetti nel tuo bucket, indipendentemente dalla sua dislocazione geografica. Procedi con cautela quando concedi l'accesso anonimo al bucket Amazon S3 o disabiliti le impostazioni di blocco dell'accesso pubblico. Quando si concede l'accesso anonimo, si consente a qualsiasi persona al mondo di accedere al bucket. È consigliabile non concedere mai l'accesso anonimo al bucket Amazon S3 a meno che non sia assolutamente necessario, ad esempio con l'[hosting di un sito Web statico](WebsiteHosting.md). Se desideri abilitare le impostazioni di Blocco dell'accesso pubblico Amazon S3 per l'hosting di siti Web statici, consulta [Tutorial: Configurazione di un sito Web statico su Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html).

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

****  

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

------

### Concedere autorizzazioni multi-account per il caricamento di oggetti a garanzia del controllo completo da parte del proprietario del bucket
<a name="example-bucket-policies-acl-2"></a>

L'esempio seguente mostra come consentire a un altro utente Account AWS di caricare oggetti nel tuo bucket assicurandoti al contempo il pieno controllo degli oggetti caricati. Questa politica concede a uno specifico Account AWS ({{`111122223333`}}) la possibilità di caricare oggetti solo se tale account include l'ACL predefinito al `bucket-owner-full-control` momento del caricamento. La condizione `StringEquals` nella policy specifica la chiave di condizione `s3:x-amz-acl` per esprimere il requisito dell'ACL predefinita. Per ulteriori informazioni, consulta [Chiavi di condizione per Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). 

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
     {
       "Sid":"PolicyForAllowUploadWithACL",
       "Effect":"Allow",
       "Principal":{"AWS":"{{111122223333}}"},
       "Action":"s3:PutObject",
       "Resource":"arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
       "Condition": {
         "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"}
       }
     }
   ]
}
```

------

## Gestione dell'accesso agli oggetti con assegnazione di tag agli oggetti
<a name="example-bucket-policies-object-tags"></a>

### Concedere a un utente autorizzazioni di sola lettura per gli oggetti che hanno una chiave o un valore di tag specifico
<a name="example-bucket-policies-tagging-1"></a>

La seguente policy di autorizzazione limita un utente a leggere solo gli oggetti con chiave e valore di tag `environment: production`. La policy utilizza la chiave di condizione `s3:ExistingObjectTag` per specificare la chiave e il valore di tag.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Principal":{
            "AWS":"arn:aws:iam::{{111122223333}}:role/{{JohnDoe}}"
         },
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*",
         "Condition":{
            "StringEquals":{
               "s3:ExistingObjectTag/environment":"production"
            }
         }
      }
   ]
}
```

------

### Limitare le chiavi di tag degli oggetti che gli utenti possono aggiungere
<a name="example-bucket-policies-tagging-2"></a>

La seguente policy di esempio concede a un utente le autorizzazioni per eseguire l'operazione `s3:PutObjectTagging`, che permette di aggiungere tag a un oggetto esistente. La condizione utilizza la chiave di condizione `s3:RequestObjectTagKeys` per specificare le chiavi di tag consentite, ad esempio `Owner` o `CreationDate`. Per ulteriori informazioni, consulta la sezione [Creazione di una condizione con più chiavi o valori](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) nella *Guida per l'utente IAM*.

La policy garantisce che ogni chiave di tag specificata nella richiesta sia una chiave di tag autorizzata. Il qualificatore `ForAnyValue` nella condizione garantisce che almeno una delle chiavi specificate sia presente nella richiesta.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::{{111122223333}}:role/{{JohnDoe}}"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
      ],
      "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [
            "Owner",
            "CreationDate"
          ]
        }
      }
    }
  ]
}
```

------

### Richiedere una chiave e un valore di tag specifici per consentire agli utenti di aggiungere tag di oggetti
<a name="example-bucket-policies-tagging-3"></a>

Il seguente esempio di policy concede a un utente l'autorizzazione a eseguire l'azione `s3:PutObjectTagging`, che consente di aggiungere tag a un oggetto esistente. La condizione prevede che l'utente includa una chiave di tag specifica (ad esempio, `{{Project}}`) con valore impostato su `{{X}}`.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::{{111122223333}}:user/{{JohnDoe}}"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
      ],
      "Condition": {"StringEquals": {"s3:RequestObjectTag/{{Project}}": "{{X}}"
        }
      }
    }
  ]
}
```

------

### Concedere a un utente di aggiungere solo oggetti che hanno una chiave o un valore di tag specifico
<a name="example-bucket-policies-tagging-4"></a>

La seguente policy di esempio concede a un utente l'autorizzazione per eseguire l'operazione `s3:PutObject` in modo che possa aggiungere oggetti a un bucket. Tuttavia, l'istruzione `Condition` limita le chiavi e i valori di tag consentiti sugli oggetti caricati. In questo esempio, l'utente può aggiungere al bucket solo oggetti con la chiave di tag specifica (`{{Department}}`) con il valore impostato su `{{Finance}}`

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Principal":{
            "AWS":[
                 "arn:aws:iam::{{111122223333}}:user/{{JohnDoe}}"
         ]
        },
        "Effect": "Allow",
        "Action": [
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        ],
        "Condition": {
            "StringEquals": {
                "s3:RequestObjectTag/{{Department}}": "{{Finance}}"
            }
        }
    }]
}
```

------

## Gestione dell'accesso agli oggetti utilizzando chiavi di condizione globali
<a name="example-bucket-policies-global-condition-keys"></a>

Le chiavi di [condizione globali sono chiavi](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) di contesto delle condizioni con un prefisso. `aws` Servizi AWS può supportare chiavi di condizione globali o chiavi specifiche del servizio che includono il prefisso del servizio. È possibile utilizzare l'elemento `Condition` di una policy JSON per confrontare le chiavi in una richiesta con i valori di chiave specificati nella policy.

### Limitare l'accesso alle sole consegne dei log degli accessi al server Amazon S3
<a name="example-bucket-policies-global-condition-keys-1"></a>

Nel seguente esempio di bucket policy, la chiave [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)global condition viene utilizzata per confrontare l'[Amazon Resource Name (ARN](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)) della risorsa, effettuando service-to-service una richiesta con l'ARN specificato nella policy. La chiave di condizione globale `aws:SourceArn` viene utilizzata per impedire a un servizio Amazon S3 di essere utilizzato come [confused deputy](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) durante le transazioni tra servizi. Solo il servizio Amazon S3 può aggiungere oggetti al bucket Amazon S3.

Questo esempio di policy di bucket concede autorizzazioni `s3:PutObject` al principale del servizio di log (`logging.s3.amazonaws.com`). 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{AllowPutObjectS3ServerAccessLogsPolicy}}",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket-logs}}/*",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": "{{111122223333}}"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-source-bucket1}}"
                }
            }
        },
        {
            "Sid": "{{RestrictToS3ServerAccessLogs}}",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket-logs}}/*",
            "Condition": {
                "ForAllValues:StringNotEquals": {
                    "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
                }
            }
        }
    ]
}
```

------

### Consentire l'accesso solo alla tua organizzazione
<a name="example-bucket-policies-global-condition-keys-2"></a>

Se desideri che tutti i [responsabili IAM che accedono](https://docs.aws.amazon.com//IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) a una risorsa provengano da un membro Account AWS della tua organizzazione (incluso l'account di AWS Organizations gestione), puoi utilizzare la `aws:PrincipalOrgID` chiave global condition.

Per concedere o limitare questo tipo di accesso, definisci la condizione `aws:PrincipalOrgID` e imposta il valore sull'[ID dell'organizzazione](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_org_details.html) nella policy di bucket. L'ID dell'organizzazione viene utilizzato per controllare l'accesso al bucket. Quando si utilizza la condizione `aws:PrincipalOrgID`, le autorizzazioni della policy di bucket vengono applicate anche a tutti i nuovi account aggiunti all'organizzazione.

Ecco un esempio di policy di bucket basata su risorse che puoi utilizzare per concedere l'accesso diretto al bucket a specifici principali IAM nella tua organizzazione. Aggiungendo la chiave di condizione globale `aws:PrincipalOrgID` alla policy di bucket, ora l'account principale deve trovarsi nell'organizzazione per ottenere l'accesso alla risorsa. Anche se si specifica accidentalmente un account errato quando si concede l'accesso, la [chiave di condizione globale aws:PrincipalOrgID](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) funge da ulteriore protezione. Quando viene utilizzata come policy, questa chiave globale impedisce a tutti i principali esterni all'organizzazione specificata di accedere al bucket S3. Solo i principali degli account dell'organizzazione elencata possono ottenere l'accesso alla risorsa.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "AllowGetObject",
        "Principal": {
            "AWS": "*"
        },
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": ["{{o-aa111bb222}}"]
            }
        }
    }]
}
```

------

## Gestione dell'accesso in base a richieste HTTP o HTTPS
<a name="example-bucket-policies-HTTP-HTTPS"></a>

### Limitare l'accesso solo alle richieste HTTPS
<a name="example-bucket-policies-use-case-HTTP-HTTPS-1"></a>

Se desideri impedire a potenziali aggressori di manipolare il traffico di rete, puoi utilizzare HTTPS (TLS) per consentire solo le connessioni crittografate limitando al contempo l'accesso al tuo bucket da parte delle richieste HTTP. Per determinare se la richiesta è HTTP o HTTPS, utilizza la chiave di condizione globale [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) nella policy di bucket S3. La chiave di condizione `aws:SecureTransport` controlla se una richiesta è stata inviata utilizzando HTTP.

Se una richiesta restituisce `true`, la richiesta è stata inviata tramite HTTP. Se la richiesta restituisce `false`, la richiesta è stata inviata tramite HTTP. Puoi quindi consentire o negare l'accesso al bucket in base allo schema di richiesta desiderato.

Nell'esempio seguente, la policy di bucket nega esplicitamente l'accesso alle richieste HTTP. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "RestrictToTLSRequestsOnly",
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
            "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }]
}
```

------

### Limitare l'accesso a un referer HTTP specifico
<a name="example-bucket-policies-HTTP-HTTPS-2"></a>

Supponi di avere un sito Web con il nome di dominio ({{`www.example.com`}} o {{`example.com`}}) con collegamenti a foto e video archiviati nel bucket denominato `{{amzn-s3-demo-bucket}}`. Per impostazione predefinita, tutte le risorse Amazon S3 sono private, quindi solo chi le Account AWS ha create può accedervi. 

Per consentire l'accesso in lettura a questi oggetti dal sito Web, è possibile aggiungere una policy di bucket che concede l'autorizzazione `s3:GetObject` con una condizione secondo cui la richiesta `GET` deve generare da pagine Web specifiche. La seguente policy limita le richieste utilizzando la condizione `StringLike` con la chiave di condizione `aws:Referer`.

Verifica che i browser utilizzati includano l'intestazione HTTP `referer` nella richiesta.

**avvertimento**  
Ti consigliamo di procedere cautela quando utilizzi la chiave di condizione `aws:Referer`. È pericoloso includere un valore di intestazione di un referer pubblicamente noto. Parti non autorizzate possono utilizzare browser modificati o personalizzati per fornire qualsiasi valore `aws:Referer` scelto. Pertanto, non `aws:Referer` utilizzarlo per impedire a parti non autorizzate di effettuare richieste dirette AWS .   
La chiave di condizione `aws:Referer` è disponibile solo per consentire ai clienti di proteggere i propri contenuti digitali, come i contenuti archiviati in Amazon S3, da riferimenti su siti di terze parti non autorizzate. Per ulteriori informazioni, consulta la sezione [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer) nella *Guida per l'utente di IAM*.

## Gestione dell'accesso utente a cartelle specifiche
<a name="example-bucket-policies-folders"></a>

### Concedere agli utenti l'accesso a cartelle specifiche
<a name="example-bucket-policies-folders-1"></a>

Supponiamo che tu stia cercando di concedere agli utenti l'accesso a una cartella specifica. Se l'utente IAM e il bucket S3 appartengono allo stesso gruppo Account AWS, puoi utilizzare una policy IAM per concedere all'utente l'accesso a una cartella di bucket specifica. Con questo approccio, non è necessario aggiornare la policy di bucket per concedere l'accesso. Puoi aggiungere la policy IAM a un ruolo IAM a cui possono passare più utenti. 

Se l'identità IAM e il bucket S3 appartengono a parti diverse Account AWS, devi concedere l'accesso a più account sia nella policy IAM che nella policy del bucket. Per informazioni su come concedere l'accesso multi-account, consulta la sezione relativa al [proprietario del bucket che concede autorizzazioni per il bucket multi-account](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html).

La seguente policy di bucket di esempio concede a `{{JohnDoe}}` l'accesso completo a livello di console solo alla sua cartella (`home/{{JohnDoe}}/`). Creando una cartella `home` e concedendo le autorizzazioni appropriate ai tuoi utenti, puoi fare in modo che più utenti condividano un singolo bucket. Questa policy è composta da tre istruzioni `Allow`:
+ `{{AllowRootAndHomeListingOfCompanyBucket}}`: consente all'utente (`{{JohnDoe}}`) di elencare gli oggetti al livello root del bucket `{{{{amzn-s3-demo-bucket}}}}` e nella cartella `home`. Questa istruzione consente inoltre all'utente di cercare in base al prefisso `home/` utilizzando la console.
+ `{{AllowListingOfUserFolder}}`: consente all'utente (`{{JohnDoe}}`) di elencare tutti gli oggetti nella cartella `home/{{JohnDoe}}/` e nelle eventuali sottocartelle.
+ `{{AllowAllS3ActionsInUserFolder}}`: consente all'utente di eseguire tutte le operazioni di Amazon S3 concedendo le autorizzazioni `Read`, `Write` e `Delete`. Le autorizzazioni sono limitate alla cartella principale del proprietario del bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "{{AllowRootAndHomeListingOfCompanyBucket}}",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::{{111122223333}}:user/{{JohnDoe}}"
                ]
            },
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::{{amzn-s3-demo-bucket}}"],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": ["", "home/", "home/{{JohnDoe}}"],
                    "s3:delimiter": ["/"]
                }
            }
        },
        {
            "Sid": "{{AllowListingOfUserFolder}}",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::{{111122223333}}:user/{{JohnDoe}}"
                ]
            },
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::{{amzn-s3-demo-bucket}}"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["home/{{JohnDoe}}/*"]
                }
            }
        },
        {
            "Sid": "{{AllowAllS3ActionsInUserFolder}}",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::{{111122223333}}:user/{{JohnDoe}}"
                ]
            },
            "Action": ["s3:*"],
            "Resource": ["arn:aws:s3:::{{amzn-s3-demo-bucket}}/home/{{JohnDoe}}/*"]
        }
    ]
}
```

------

## Gestione dell'accesso per i log degli accessi
<a name="example-bucket-policies-access-logs"></a>

### Concedere l'accesso ad Application Load Balancer per abilitare i log degli accessi
<a name="example-bucket-policies-access-logs-1"></a>

Quando abiliti i log degli accessi per Application Load Balancer, devi specificare il nome del bucket S3 in cui il sistema di bilanciamento del carico [archivierà i log](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#access-log-create-bucket). Il bucket deve avere una [policy collegata](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#attach-bucket-policy) che concede a Elastic Load Balancing l'autorizzazione a scrivere nel bucket.

Nell'esempio seguente, la policy di bucket concede a Elastic Load Balancing (ELB) l'autorizzazione a scrivere i log degli accessi nel bucket:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:root"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/{{prefix}}/AWSLogs/{{111122223333}}/*"
        }
    ]
}
```

------

**Nota**  
Assicurati di sostituire `{{elb-account-id}}` con l'ID Account AWS per Elastic Load Balancing per la tua Regione AWS. Per l'elenco delle regioni Elastic Load Balancing, consulta [Collegamento di una policy al bucket Amazon S3](https://docs.aws.amazon.com//elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy) nella *Guida per l'utente di Elastic Load Balancing*.

Se la tua Regione AWS non compare nell'elenco delle regioni Elastic Load Balancing supportate, utilizza la seguente politica, che concede le autorizzazioni al servizio di consegna dei log specificato.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
       "Principal": {
         "Service": "logdelivery.elasticloadbalancing.amazonaws.com"
          },
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/{{prefix}}/AWSLogs/{{111122223333}}/*"
    }
  ]
}
```

------

Quindi, assicurati di configurare i [log degli accessi di Elastic Load Balancing](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#enable-access-logs) abilitandoli. Puoi [verificare le autorizzazioni del bucket](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#verify-bucket-permissions) creando un file di test.

## Gestione dell'accesso a un Amazon CloudFront OAI
<a name="example-bucket-policies-cloudfront"></a>

### Concedi l'autorizzazione a un Amazon CloudFront OAI
<a name="example-bucket-policies-cloudfront-1"></a>

Il seguente esempio di bucket policy concede un'autorizzazione OAI ( CloudFront Origin Access Identity) per ottenere (leggere) tutti gli oggetti nel bucket S3. Puoi utilizzare un CloudFront OAI per consentire agli utenti di accedere agli oggetti nel tuo bucket tramite Amazon S3 CloudFront , ma non direttamente. Per ulteriori informazioni, consulta [Limitazione dell'accesso ai contenuti di Amazon S3 utilizzando un'identità di accesso di origine](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) nella * CloudFront Amazon* Developer Guide.

La policy seguente utilizza l'ID dell'identità di accesso origine (OAI) come `Principal` della policy. *Per ulteriori informazioni sull'utilizzo delle policy dei bucket S3 per concedere l'accesso a un CloudFront OAI, consulta [Migrating from Origin Access Identity (OAI) a Origin Access Control (OAC)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac) nella Amazon Developer Guide. CloudFront *

Per utilizzare questo esempio:
+ Sostituisci `{{EH1HDMB1FH2TC}}` con l'ID dell'identità di accesso origine (OAI). Per trovare l'ID dell'OAI, consulta la [pagina Origin Access Identity sulla CloudFront console o utilizzalo](https://console.aws.amazon.com/cloudfront/home?region=us-east-1#oai:) nell'API. [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html) CloudFront 
+ Sostituisci `{{amzn-s3-demo-bucket}}` con il nome del tuo bucket.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity {{EH1HDMB1FH2TC}}"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

## Gestione dell'accesso per Amazon S3 Storage Lens
<a name="example-bucket-policies-lens"></a>

### Concedere le autorizzazioni per Amazon S3 Storage Lens
<a name="example-bucket-policies-lens-1"></a>

S3 Storage Lens aggrega i tuoi parametri e mostra le informazioni nella sezione **Account snapshot** (Snapshot dell'account) nella pagina **Buckets** (Bucket) della console di Amazon S3. S3 Storage Lens fornisce anche una dashboard interattiva che puoi utilizzare per visualizzare approfondimenti e tendenze, contrassegnare valori anomali e ricevere consigli per ottimizzare i costi di archiviazione e applicare le migliori pratiche di protezione dei dati. La dashboard offre opzioni drill-down per generare e visualizzare informazioni a livello di organizzazione, account, classe di storage, bucket, prefisso Regione AWS o gruppo Storage Lens. Puoi anche inviare un rapporto giornaliero sulle metriche in formato CSV o in Parquet formato a un bucket S3 generico o esportare le metriche direttamente in un bucket di tabella S3 gestito. AWS

S3 Storage Lens può esportare i parametri aggregati relativi l'utilizzo dell'archiviazione in un bucket Amazon S3 per ulteriori analisi. Il bucket in cui S3 Storage Lens colloca le esportazioni delle metriche è noto come *bucket di destinazione*. Quando configuri l'esportazione delle metriche di S3 Storage Lens, devi disporre di una policy di bucket per il bucket di destinazione. Per ulteriori informazioni, consulta [Monitoraggio dell'attività e dell'utilizzo dello storage con Amazon S3 Storage Lens](storage_lens.md).

La seguente policy di bucket di esempio concede ad Amazon S3 l'autorizzazione a scrivere oggetti (richieste `PUT`) in un bucket di destinazione. Questo tipo di policy di bucket viene utilizzato nel *bucket di destinazione* quando si imposta l'esportazione dei parametri di S3 Storage Lens.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3StorageLensExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "storage-lens.s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-destination-bucket/{{destination-prefix}}/StorageLens/{{111122223333}}/*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control",
                    "aws:SourceAccount": "{{111122223333}}",
                    "aws:SourceArn": "arn:aws:s3:{{region-code}}:{{111122223333}}:storage-lens/{{storage-lens-dashboard-configuration-id}}"
                }
            }
        }
    ]
}
```

------

Utilizza la modifica seguente alla precedente istruzione `Resource` della policy di bucket quando configuri un'esportazione di parametri a livello di organizzazione S3 Storage Lens.

```
1. "Resource": "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}/{{destination-prefix}}/StorageLens/{{your-organization-id}}/*",
```

## Gestione delle autorizzazioni per i report di S3 Inventory, S3 Analytics e S3 Inventory
<a name="example-bucket-policies-s3-inventory"></a>

### Concedere autorizzazioni per S3 Inventory e S3 Analytics
<a name="example-bucket-policies-s3-inventory-1"></a>

S3 Inventory crea elenchi di oggetti in un bucket, mentre l'esportazione di analisi della classe di archiviazione di S3 Analytics genera file di output dei dati utilizzati nell'analisi. Il bucket per il quale l'inventario elenca gli oggetti è denominato *bucket di origine*. Il bucket nel quale viene scritto il file di inventario e il file di esportazione di analisi è definito *bucket di destinazione*. È necessario creare una policy di bucket per il bucket di destinazione quando si configura un inventario o un'esportazione di analisi. Per ulteriori informazioni, consultare [Catalogazione e analisi dei dati con Inventario S3](storage-inventory.md) e [Analisi di Amazon S3 – Analisi della classe di storage](analytics-storage-class.md).

La policy di bucket di esempio seguente concede ad Amazon S3 l'autorizzazione per scrivere oggetti (richieste `PUT`) dall'account per il bucket di origine nel bucket di destinazione. Questo tipo di policy di bucket viene utilizzato nel bucket di destinazione quando imposti S3 Inventory e l'esportazione di S3 Analytics.

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

****  

```
{  
      "Version":"2012-10-17",		 	 	 
      "Statement": [
        {
            "Sid": "InventoryAndAnalyticsExamplePolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": [
            "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}/*"
            ],
            "Condition": {
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-source-bucket}}"
                },
                "StringEquals": {
                    "aws:SourceAccount": "{{111122223333}}",
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        }
    ]
}
```

------

### Controllo della creazione della configurazione dei report di Inventario S3
<a name="example-bucket-policies-s3-inventory-2"></a>

[Catalogazione e analisi dei dati con Inventario S3](storage-inventory.md) crea elenchi degli oggetti presenti in un bucket S3 e i metadata per ogni oggetto. L'autorizzazione `s3:PutInventoryConfiguration` consente all'utente di creare una configurazione dell'inventario che include tutti i campi dei metadati dell'oggetto disponibili per impostazione predefinita e di specificare il bucket di destinazione per memorizzare l'inventario. Un utente con accesso in lettura agli oggetti nel bucket di destinazione può accedere a tutti i campi di metadati degli oggetti disponibili nel report di inventario. Per ulteriori informazioni sui campi dei metadati disponibili in S3 Inventory, consulta [Elenco di Amazon S3 Inventory](storage-inventory.md#storage-inventory-contents).

Per impedire a un utente di configurare un report di Inventario S3, rimuovi l'autorizzazione `s3:PutInventoryConfiguration` dall'utente.

Alcuni campi dei metadati degli oggetti nelle configurazioni dei report dell'Inventario S3 sono opzionali, cioè sono disponibili per impostazione predefinita, ma possono essere limitati quando si concede a un utente l'autorizzazione `s3:PutInventoryConfiguration`. È possibile controllare se gli utenti possono includere questi campi di metadati opzionali nei loro report utilizzando la chiave di condizione `s3:InventoryAccessibleOptionalFields`. Per un elenco dei campi di metadati opzionali disponibili in Inventario S3, consulta [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody) in *Riferimento API di Amazon Simple Storage Service*.

Per concedere a un utente l'autorizzazione a creare una configurazione dell'inventario con specifici campi di metadati opzionali, utilizzare la chiave di condizione `s3:InventoryAccessibleOptionalFields` per affinare le condizioni della policy del bucket. 

Il seguente esempio di policy concede a un utente (`{{Ana}}`) l'autorizzazione a creare una configurazione di inventario in modo condizionato. La condizione `ForAllValues:StringEquals` nella policy utilizza la chiave di condizione `s3:InventoryAccessibleOptionalFields` per specificare i due campi di metadati opzionali consentiti, ovvero `Size` e `StorageClass`. Quindi, quando `{{Ana}}` crea una configurazione di inventario, gli unici campi di metadati opzionali che può includere sono `Size` e `StorageClass`. 

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

****  

```
{
	"Id": "InventoryConfigPolicy",
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
			"Sid": "AllowInventoryCreationConditionally",
			"Effect": "Allow",			
			"Principal": {
				"AWS": "arn:aws:iam::{{111122223333}}:user/{{Ana}}"
			},			
			"Action": 
				"s3:PutInventoryConfiguration",
			"Resource": 
				"arn:aws:s3:::{{DOC-EXAMPLE-SOURCE-BUCKET}}",
			"Condition": {
				"ForAllValues:StringEquals": {
					"s3:InventoryAccessibleOptionalFields": [
					   "Size",
					   "StorageClass"
					   ]
				  }
				}
			}
	]
}
```

------

Per impedire a un utente di configurare un report dell'Inventario S3 che includa specifici campi di metadati opzionali, aggiungere un'istruzione esplicita `Deny` alla policy di bucket per il bucket di origine. Il seguente esempio di policy del bucket impedisce all'utente `{{Ana}}` di creare una configurazione dell'inventario nel bucket di origine `{{{{amzn-s3-demo-source-bucket}}}}` che includa i campi di metadati opzionali `ObjectAccessControlList` o `ObjectOwner`. L'utente `{{Ana}}` può comunque creare una configurazione dell'inventario con altri campi di metadati opzionali.

```
 1. {
 2. 	"Id": "InventoryConfigSomeFields",
 3. 	"Version": "2012-10-17",		 	 	 
 4. 	"Statement": [{
 5. 			"Sid": "AllowInventoryCreation",
 6. 			"Effect": "Allow",
 7. 			"Principal": {
 8. 				"AWS": "arn:aws:iam::{{111122223333}}:user/{{Ana}}"
 9. 			},
10. 			"Action": "s3:PutInventoryConfiguration",			
11. 			"Resource": 
12. 				"arn:aws:s3:::{{{{amzn-s3-demo-source-bucket}}}}",
13. 
14. 		},
15. 		{
16. 			"Sid": "DenyCertainInventoryFieldCreation",
17. 			"Effect": "Deny",
18. 			"Principal": {
19. 				"AWS": "arn:aws:iam::{{111122223333}}:user/{{Ana}}"
20. 			},
21. 			"Action": "s3:PutInventoryConfiguration",	
22. 			"Resource": 
23. 			  "arn:aws:s3:::{{{{amzn-s3-demo-source-bucket}}}}",			
24. 			"Condition": {
25. 				"ForAnyValue:StringEquals": {
26. 					"s3:InventoryAccessibleOptionalFields": [
27. 					   "ObjectOwner",
28. 					   "ObjectAccessControlList"
29. 					   ]
30. 				  }
31. 				}
32. 			}
33. 	]
34. }
```

**Nota**  
L'uso della chiave di condizione `s3:InventoryAccessibleOptionalFields` nelle policy dei bucket non influisce sulla consegna dei report di inventario basati sulle configurazioni di inventario esistenti. 

**Importante**  
Si consiglia di utilizzare `ForAllValues` con un effetto `Allow` o `ForAnyValue` con un effetto `Deny`, come mostrato negli esempi precedenti.  
Non usare `ForAllValues` con un effetto `Deny` né `ForAnyValue` con un effetto `Allow`, perché queste combinazioni possono essere troppo restrittive e bloccare la cancellazione della configurazione dell'inventario.  
Per ulteriori informazioni sugli operatori di set di condizioni `ForAllValues` e `ForAnyValue`, consulta [Tasti contestuali multivalore](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys) nella *Guida all'utente IAM*.

## Richiesta dell'autenticazione a più fattori (MFA)
<a name="example-bucket-policies-MFA"></a>

Amazon S3 supporta l'accesso all'API protetto con autenticazione MFA, una caratteristica che permette di imporre la Multi-Factor Authentication (MFA) per accedere alle risorse di Amazon S3. L'autenticazione a più fattori offre un ulteriore livello di sicurezza che puoi applicare al tuo ambiente. AWS L'autenticazione a più fattori (MFA) è una funzione di protezione che prevede che gli utenti dimostrino di possedere fisicamente un dispositivo MFA fornendo un codice MFA valido. Per ulteriori informazioni, consulta [Autenticazione a più fattori (MFA) di AWS](https://aws.amazon.com/mfa/). Puoi richiedere l'autenticazione MFA per tutte le richieste di accesso alle risorse di Amazon S3. 

Per imporre l'uso del requisito dell'autenticazione a più fattori (MFA), utilizza la chiave di condizione `aws:MultiFactorAuthAge` in una policy di bucket. Gli utenti IAM possono accedere alle risorse Amazon S3 utilizzando credenziali temporanee emesse da (). AWS Security Token Service AWS STS Al momento della richiesta AWS STS , dovrai fornire il codice MFA. 

Quando Amazon S3 riceve una richiesta con l'autenticazione a più fattori (MFA), la chiave di condizione `aws:MultiFactorAuthAge` fornisce un valore numerico che indica il tempo trascorso (in secondi) dalla creazione delle credenziali temporanee. Se le credenziali temporanee fornite nella richiesta non sono state create utilizzando un dispositivo MFA, il valore di questa chiave è null (assente). In una policy di bucket, è possibile aggiungere una condizione per controllare questo valore, come mostrato nell'esempio riportato di seguito. 

La policy di esempio nega qualsiasi operazione Amazon S3 nella cartella {{`/taxdocuments`}} del bucket `{{amzn-s3-demo-bucket}}` se la richiesta non è autenticata tramite l'autenticazione a più fattori (MFA). Per ulteriori informazioni su MFA, consulta la sezione [Utilizzo dell'autenticazione a più fattori (MFA) in AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) nella *Guida per l'utente di IAM*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket{{/taxdocuments}}/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true }}
      }
    ]
 }
```

------

La condizione `Null` nel blocco `Condition` viene valutata come `true` se il valore della chiave di condizione `aws:MultiFactorAuthAge` è null, a indicare che le credenziali di sicurezza temporanee nella richiesta sono state create senza un dispositivo MFA. 

La policy di bucket seguente è un'estensione di quella precedente. La seguente policy comprende due istruzioni dedicate. Una dichiarazione consente l'autorizzazione `s3:GetObject` per un bucket (`{{amzn-s3-demo-bucket}}`) per tutti gli utenti. La seconda dichiarazione limita ulteriormente l'accesso alla cartella `{{{{amzn-s3-demo-bucket}}/taxdocuments}}` nel bucket richiedendo l'autenticazione MFA. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "DenyInsecureConnections",
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::{{111122223333}}:root"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/{{taxdocuments}}/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
      },
      {
        "Sid": "AllowGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::{{111122223333}}:root"
        },
        "Action": ["s3:GetObject"],
        "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
      }
    ]
 }
```

------

Facoltativamente, è possibile utilizzare una condizione numerica per limitare la durata della validità della chiave `aws:MultiFactorAuthAge`. La durata specificata con la chiave `aws:MultiFactorAuthAge` è indipendente dalla durata delle credenziali di sicurezza temporanee utilizzate per l'autenticazione della richiesta. 

Ad esempio, la policy di bucket seguente, oltre a richiedere l'autenticazione MFA, controlla anche da quanto tempo esiste la sessione temporanea. La policy rifiuta tutte le operazioni se il valore della chiave `aws:MultiFactorAuthAge` indica che la sessione temporanea è stata creata oltre un'ora (3.600 secondi) prima. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket{{/taxdocuments}}/*",
        "Condition": {"Null": {"aws:MultiFactorAuthAge": true }}
      },
      {
        "Sid": "",
        "Effect": "Deny",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket{{/taxdocuments}}/*",
        "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }}
       },
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": "*",
         "Action": ["s3:GetObject"],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
       }
    ]
 }
```

------

## Impedire agli utenti di eliminare gli oggetti
<a name="using-with-s3-actions-related-to-bucket-subresources"></a>

Per default, gli utenti non dispongono di autorizzazioni. Ma quando si creano le policy, è possibile che si concedano agli utenti autorizzazioni che non si intendevano concedere. Per evitare questi espedienti riguardo alle autorizzazioni, è possibile scrivere una policy di accesso più rigida aggiungendo un rifiuto esplicito. 

Per bloccare esplicitamente gli utenti o gli account dall'eliminazione di oggetti, è necessario aggiungere le seguenti azioni su una policy del bucket: `s3:DeleteObject`, `s3:DeleteObjectVersion` e `s3:PutLifecycleConfiguration`. Tutte e tre le azioni sono necessarie perché è possibile eliminare gli oggetti chiamando esplicitamente le operazioni dell'API `DELETE Object` o configurando il loro ciclo di vita (consulta [Gestione del ciclo di vita degli oggetti](object-lifecycle-mgmt.md)) in modo che Amazon S3 possa rimuovere gli oggetti quando la loro durata scade.

Nel seguente esempio di policy, si negano esplicitamente le autorizzazioni di `DELETE Object` all'utente `{{MaryMajor}}`. Un'istruzione esplicita `Deny` sostituisce sempre qualsiasi altra autorizzazione concessa.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "statement1",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{{123456789012}}:user/{{MaryMajor}}"
      },
      "Action": [
        "s3:GetObjectVersion",
        "s3:GetBucketAcl"
      ],
      "Resource": [
        "arn:aws:s3:::{{amzn-s3-demo-bucket1}}",
	 	"arn:aws:s3:::{{amzn-s3-demo-bucket1/*}}"
      ]
    },
    {
      "Sid": "statement2",
      "Effect": "Deny",
      "Principal": {
        "AWS": "arn:aws:iam::{{123456789012}}:user/{{MaryMajor}}"
      },
      "Action": [
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:PutLifecycleConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::{{amzn-s3-demo-bucket1}}",
	    "arn:aws:s3:::{{amzn-s3-demo-bucket1/*}}"
      ]
    }
  ]
}
```

------