

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

# Procedura guidata: controllo dell'accesso a un bucket con policy utente
<a name="walkthrough1"></a>

Questa spiegazione passo per passo illustra il funzionamento delle autorizzazioni utente con Amazon S3. In questo esempio, viene creato un bucket con cartelle. Quindi crei utenti AWS Identity and Access Management IAM nel tuo Account AWS e concedi a tali utenti autorizzazioni incrementali sul tuo bucket Amazon S3 e sulle cartelle in esso contenute. 

**Topics**
+ [Principi di base relativi a bucket e cartelle](#walkthrough-background1)
+ [Riepilogo della spiegazione passo per passo](#walkthrough-scenario)
+ [Preparazione della procedura guidata](#walkthrough-what-you-need)
+ [Fase 1: creazione di un bucket](#walkthrough1-create-bucket)
+ [Fase 2: creazione di un gruppo e di utenti IAM](#walkthrough1-add-users)
+ [Fase 3: verifica che gli utenti IAM non dispongano di autorizzazioni](#walkthrough1-verify-no-user-permissions)
+ [Fase 4: concessione di autorizzazioni a livello di gruppo](#walkthrough-group-policy)
+ [Fase 5: concessione di autorizzazioni specifiche all'utente IAM Alice](#walkthrough-grant-user1-permissions)
+ [Fase 6: concessione di autorizzazioni specifiche all'utente IAM Bob](#walkthrough1-grant-permissions-step5)
+ [Fase 7: protezione della cartella Private (Privato)](#walkthrough-secure-private-folder-explicit-deny)
+ [Fase 8: Pulizia](#walkthrough-cleanup)
+ [Risorse correlate](#RelatedResources-walkthrough1)

## Principi di base relativi a bucket e cartelle
<a name="walkthrough-background1"></a>

Il modello di dati di Amazon S3 è una struttura flat: crei un bucket e il bucket archivia gli oggetti. Non c'è nessuna gerarchia di bucket secondari o sottocartelle, ma è possibile emulare una gerarchia delle cartelle. Strumenti come la console di Amazon S3 possono presentare una panoramica di queste cartelle e sottocartelle logiche nel bucket.

La console mostra che un bucket denominato `companybucket` ha tre cartelle, `Private`, `Development` e `Finance` e un oggetto, `s3-dg.pdf`. La console utilizza i nomi oggetto (chiavi) per creare una gerarchia logica con cartelle e sottocartelle. Considerare i seguenti esempi:
+ Quando crei la cartella `Development`, la console crea un oggetto con la chiave `Development/`. Nota il delimitatore finale '/' (`/`).
+ Quando carichi un oggetto denominato `Projects1.xls` nella cartella `Development`, la console carica l'oggetto e gli assegna la chiave `Development/Projects1.xls`. 

  Nella chiave, `Development` è il [prefisso](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) e `/` è il delimitatore. L'API Amazon S3 supporta prefissi e delimitatori nelle operazioni. Ad esempio, è possibile ottenere un elenco di tutti gli oggetti da un bucket con un prefisso e un delimitatore specifici. Nella console, quando apri la cartella `Development`, viene visualizzato un elenco degli oggetti in essa contenuti. Nell'esempio seguente, la cartella `Development` contiene un solo oggetto. 

  Quando la console visualizza la cartella `Development` nel bucket `companybucket`, invia una richiesta ad Amazon S3 in cui specifica un prefisso `Development` e un delimitatore `/`. La risposta della console si presenta proprio come un elenco di cartelle nel file system del computer. L'esempio precedente mostra che il bucket `companybucket` ha un oggetto con la chiave `Development/Projects1.xls`.

La console utilizza le chiavi degli oggetti per dedurre una gerarchia logica. Amazon S3 non ha una gerarchia fisica. Amazon S3 dispone solo di bucket che contengono oggetti in una struttura di file piatti. Quando si creano oggetti utilizzando l'API Amazon S3, è possibile utilizzare le chiavi degli oggetti che implicano una gerarchia logica. Quando viene creata una gerarchia logica di oggetti, è possibile gestire l'accesso alle singole cartelle, come dimostrato in questa procedura guidata.

Prima di iniziare, assicurarsi di acquisire familiarità con il concetto di contenuto di un bucket a *livello di root*. Si supponga che il bucket `companybucket` abbia i seguenti oggetti:
+ `Private/privDoc1.txt`
+ `Private/privDoc2.zip`
+ `Development/project1.xls`
+ `Development/project2.xls`
+ `Finance/Tax2011/document1.pdf`
+ `Finance/Tax2011/document2.pdf`
+ `s3-dg.pdf`

Queste chiavi degli oggetti creano una gerarchia logica con `Private`, `Development` e `Finance` come cartelle a livello root e `s3-dg.pdf` come un oggetto a livello root. Quando si sceglie il nome di un bucket nella console di Amazon S3, le voci a livello di root vengono visualizzate. La console mostra i prefissi di livello superiore (`Private/`, `Development/` e `Finance/`) come cartelle a livello di root. La chiave dell'oggetto `s3-dg.pdf` non ha prefisso e quindi appare come voce a livello root.



## Riepilogo della spiegazione passo per passo
<a name="walkthrough-scenario"></a>

In questa procedura guidata, creare un bucket con tre cartelle (`Private`, `Development` e `Finance`) al suo interno. 

Ci sono due utenti, Alice e Bob. Alice deve accedere solo alla cartella `Development`, mentre Bob deve accedere solo alla cartella `Finance`. Il contenuto della cartella `Private` deve essere mantenuto privato. Nella guida, si gestisce l'accesso creando utenti IAM (l'esempio utilizza i nomi Alice e Bob) e concedendo loro le autorizzazioni necessarie. 

IAM supporta inoltre la creazione di gruppi di utenti e la concessione di autorizzazioni a livello di gruppo valide per tutti gli utenti presenti nel gruppo. In questo modo è possibile gestire le autorizzazioni in modo più efficiente. Per questo esercizio sia Alice che Bob hanno bisogno di autorizzazioni comuni. Pertanto, verrà creato anche un gruppo denominato `Consultants` e Alice e Bob saranno aggiunti al gruppo. Inizialmente, le autorizzazioni vengono assegnate collegando una policy di gruppo al gruppo stesso. Quindi, vengono aggiunte autorizzazioni specifiche per gli utenti collegando le policy agli utenti specifici.

**Nota**  
La spiegazione passo per passo utilizza `companybucket` come nome del bucket, Alice e Bob come utenti IAM e `Consultants` come nome del gruppo. Poiché Amazon S3 richiede che i nomi di bucket siano univoci a livello globale, è necessario sostituire il nome del bucket con un nome personalizzato.

## Preparazione della procedura guidata
<a name="walkthrough-what-you-need"></a>

 In questo esempio, utilizzi le tue Account AWS credenziali per creare utenti IAM. Inizialmente, questi utenti non hanno autorizzazioni. Le autorizzazioni vengono concesse in modo incrementale per l'esecuzione di operazioni di Amazon S3 specifiche. Per testare queste autorizzazioni, viene effettuato l'accesso alla console con le credenziali di ciascun utente. Man mano che concedi in modo incrementale le autorizzazioni come Account AWS proprietario e le testi come utente IAM, devi accedere e disconnetterti, ogni volta utilizzando credenziali diverse. È possibile eseguire questo test con un browser, ma il processo sarà più rapido se è possibile utilizzare due browser diversi. Utilizza un browser per connetterti a Console di gestione AWS con le tue Account AWS credenziali e un altro browser per connetterti con le credenziali utente IAM. 

 Per accedere a Console di gestione AWS con le tue Account AWS credenziali, vai su [https://console.aws.amazon.com/](https://console.aws.amazon.com/). Un utente IAM non può accedere utilizzando lo stesso link. Un utente IAM deve utilizzare una pagina di accesso abilitata per IAM. Come proprietario dell'account, è possibile fornire questo link agli utenti. 

Per ulteriori informazioni su IAM, consulta la [pagina di accesso alla Console di gestione AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html) nella *Guida per l'utente di IAM*.

### Per fornire un collegamento di accesso agli utenti IAM
<a name="walkthrough-sign-in-user-credentials"></a>

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

1. Nel riquadro **Navigation (Navigazione)** scegliere**IAM Dashboard (Pannello di controllo IAM)**.

1. Prendere nota dell'URL in **IAM users sign in link (Collegamento di accesso utenti IAM)**. Sarà necessario fornire questo collegamento agli utenti IAM affinché possano accedere alla console con il loro nome utente e la loro password IAM.

## Fase 1: creazione di un bucket
<a name="walkthrough1-create-bucket"></a>

In questa fase, si accede alla console Amazon S3 con le credenziali Account AWS , si crea un bucket, si aggiungono cartelle al bucket e si caricano uno o due documenti di esempio in ciascuna cartella. 

1. Accedi a 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. Creare un bucket. 

   Per step-by-step istruzioni, consulta[Creazione di un bucket per uso generico](create-bucket-overview.md).

1. Caricare un documento nel bucket.

   Questo esercizio presume che il documento `s3-dg.pdf` si trovi a livello root di questo bucket. Se viene caricato un documento differente, è necessario sostituire il nome file con `s3-dg.pdf`.

1. Aggiungere tre cartelle denominate `Private`, `Finance` e `Development` al bucket.

   Per step-by-step istruzioni su come creare una cartella, consulta [Organizzazione degli oggetti nella console di Amazon S3 utilizzando le cartelle](using-folders.md) > nella *Guida per l'utente di Amazon Simple Storage Service*.

1. Caricare uno o due documenti in ciascuna cartella. 

   Per questo esercizio, si presume che siano stati caricati un paio di documenti in ciascuna cartella, in modo che il bucket abbia oggetti con le seguenti chiavi:
   + `Private/privDoc1.txt`
   + `Private/privDoc2.zip`
   + `Development/project1.xls`
   + `Development/project2.xls`
   + `Finance/Tax2011/document1.pdf`
   + `Finance/Tax2011/document2.pdf`
   + `s3-dg.pdf`

   

   Per step-by-step istruzioni, consulta[Caricamento degli oggetti](upload-objects.md). 

## Fase 2: creazione di un gruppo e di utenti IAM
<a name="walkthrough1-add-users"></a>

Ora utilizza la [Console IAM](https://console.aws.amazon.com/iam/) per aggiungere due utenti IAM, Alice e Bob, a Account AWS. Per step-by-step istruzioni, consulta [Creating an IAM user in your Account AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) nella *IAM User Guide*. 

Crea anche un gruppo amministrativo chiamato `Consultants`. Quindi, aggiungi entrambi gli utenti al gruppo. Per step-by-step istruzioni, consulta [Creazione di gruppi di utenti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.html). 

**avvertimento**  
Quando si aggiungono utenti e un gruppo, non collegare alcuna policy che assegni autorizzazioni agli utenti. Inizialmente, questi utenti non dispongono di alcuna autorizzazione. Nelle sezioni seguenti, le autorizzazioni vengono concesse in modo incrementale. In primo luogo, devi accertarti di avere assegnato le password a questi utenti IAM. Queste credenziali utente vengono utilizzate per testare le operazioni di Amazon S3 e verificare che le autorizzazioni funzionino come previsto.

Per step-by-step istruzioni sulla creazione di un nuovo utente IAM, consulta [Creating an IAM user in your Account AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) nella *IAM User Guide*. Quando crei gli utenti per questa procedura guidata, seleziona **Accesso alla Console di gestione AWS ** e deseleziona [Accesso programmatico](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).

Per step-by-step istruzioni sulla creazione di un gruppo amministrativo, consulta [Creating Your First IAM Admin User and Group](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) nella *IAM User Guide*.



## Fase 3: verifica che gli utenti IAM non dispongano di autorizzazioni
<a name="walkthrough1-verify-no-user-permissions"></a>

Se stai utilizzando due browser, puoi ora utilizzare il secondo browser per effettuare l'accesso alla console con una delle credenziali utente IAM.

1. Utilizzando il link di accesso dell'utente IAM (consulta [Per fornire un collegamento di accesso agli utenti IAM](#walkthrough-sign-in-user-credentials)), effettua l'accesso alla Console di gestione AWS utilizzando una delle credenziali utente IAM.

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

    Verifica il messaggio della console che indica che l'accesso è negato. 

Ora, è possibile iniziare a concedere le autorizzazioni incrementali agli utenti. Innanzitutto, collegare una policy di gruppo che concede le autorizzazioni necessarie per entrambi gli utenti. 

## Fase 4: concessione di autorizzazioni a livello di gruppo
<a name="walkthrough-group-policy"></a>

Gli utenti devono essere in grado di effettuare quanto segue:
+ Elencare tutti i bucket di proprietà dell'account padre. A tale scopo, Bob e Alice devono avere l'autorizzazione per l'operazione `s3:ListAllMyBuckets`.
+ Elencare le voci, le cartelle e gli oggetti a livello root nel bucket `companybucket`. A tale scopo, Bob e Alice devono avere l'autorizzazione per l'operazione `s3:ListBucket` nel bucket `companybucket`.

Innanzitutto, creare una policy che concede tali autorizzazioni e quindi collegarla al gruppo `Consultants`. 

### Fase 4.1: concessione di autorizzazione per elencare tutti i bucket
<a name="walkthrough1-grant-permissions-step1"></a>

In questa fase viene creata una policy gestita che concede agli utenti le autorizzazioni minime per consentire loro di elencare tutti i bucket di proprietà dell'account padre. Quindi, tale policy verrà collegata al gruppo `Consultants`. Quando si collega la policy gestita a un utente o a un gruppo, si concede all'utente o al gruppo l'autorizzazione per ottenere un elenco dei bucket di proprietà dell' Account AWS parent.

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).
**Nota**  
Poiché stai concedendo autorizzazioni utente, è necessario effettuare l'accesso con le credenziali dell' Account AWS , non come utente IAM.

1. Creare la policy gestita.

   1. Nel riquadro di navigazione sulla sinistra, selezionare **Policies (Policy)** e scegliere **Create Policy (Crea policy)**.

   1. Selezionare la scheda **JSON**.

   1. Copiare la policy di accesso seguente e incollarla nel campo di testo relativo alla policy.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "AllowGroupToSeeBucketListInTheConsole",
            "Action": ["s3:ListAllMyBuckets"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::*"]
          }
        ]
      }
      ```

------

      Una policy è un documento JSON. Nel documento, uno `Statement` è una serie di oggetti, ognuno dei quali descrive un'autorizzazione utilizzando un insieme di coppie di nome-valore. La suddetta policy descrive un'autorizzazione specifica. L'`Action` specifica il tipo di accesso. Nella policy, `s3:ListAllMyBuckets` è un'operazione di Amazon S3 predefinita. Questa azione copre l'operazione Amazon S3 GET Service, che restituisce un elenco di tutti i bucket di proprietà del mittente autenticato. Il valore dell'elemento `Effect` determina se un'autorizzazione specifica è consentita o rifiutata.

   1. Scegliere **Review policy (Esamina policy)**. Nella pagina successiva, immettere `AllowGroupToSeeBucketListInTheConsole` nel campo **Name (Nome)**, quindi scegliere **Create policy (Crea policy)**.
**Nota**  
La voce **Summary (Riepilogo)** visualizza un messaggio in cui si afferma che la policy non concede alcuna autorizzazione. Per questa procedura guidata, il messaggio può essere ignorato.

1. Collegare la policy gestita `AllowGroupToSeeBucketListInTheConsole` che è stata creata al gruppo `Consultants`.

   Per step-by-step istruzioni su come allegare una policy gestita, consulta [Aggiungere e rimuovere le autorizzazioni di identità IAM nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#attach-managed-policy-console) per l'*utente IAM*. 

   I documenti della policy vengono collegati agli utenti e ai gruppi IAM nella console IAM. Poiché entrambi gli utenti devono essere in grado di elencare i bucket, la policy deve essere collegata al gruppo. 

1. Testare l'autorizzazione.

   1. Utilizzando il collegamento di accesso utente IAM (consultare [Per fornire un collegamento di accesso agli utenti IAM](#walkthrough-sign-in-user-credentials)), accedere alla console con una delle credenziali utente IAM.

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

      La console ora dovrebbe elencare tutti i bucket, ma non gli oggetti contenuti in ogni bucket.

### Fase 4.2: abilitazione degli utenti a elencare il contenuto di un bucket a livello root
<a name="walkthrough1-grant-permissions-step2"></a>

Di seguito, consentire a tutti gli utenti nel gruppo `Consultants` di elencare le voci del bucket `companybucket` a livello root. Quando un utente sceglie il bucket aziendale nella console di Amazon S3, può visualizzare le voci a livello root nel bucket.

**Nota**  
Questo esempio utilizza `companybucket` a scopo illustrativo. È necessario utilizzare il nome del bucket che è stato creato.

Per comprendere la richiesta che la console invia ad Amazon S3 quando si sceglie il nome di un bucket, la risposta che Amazon S3 restituisce e il modo in cui la console interpreta la risposta, esaminare il flusso un po' più da vicino.

Quando viene scelto un nome di bucket, la console invia la richiesta [GET Bucket (ListObjects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) ad Amazon S3. Questa richiesta include i seguenti parametri:
+ Il parametro `prefix` che presenta una stringa vuota come valore. 
+ Il `delimiter` parametro con `/` come valore. 

Di seguito è riportata una richiesta di esempio.

```
GET ?prefix=&delimiter=/ HTTP/1.1 
Host: companybucket.s3.amazonaws.com
Date: Wed, 01 Aug  2012 12:00:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
```

Amazon S3 restituisce una risposta che include il seguente elemento `<ListBucketResult/>`.

```
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>companybucket</Name>
  <Prefix></Prefix>
  <Delimiter>/</Delimiter>
   ...
  <Contents>
    <Key>s3-dg.pdf</Key>
    ...
  </Contents>
  <CommonPrefixes>
    <Prefix>Development/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>Finance/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>Private/</Prefix>
  </CommonPrefixes>
</ListBucketResult>
```

L'oggetto `s3-dg.pdf` della chiave non contiene il delimitatore barra (`/`) e Amazon S3 restituisce la chiave nell'elemento `<Contents>`. Tutte le altre chiavi nel bucket di esempio contengono tuttavia il delimitatore `/`. Amazon S3 raggruppa queste chiavi e restituisce un elemento `<CommonPrefixes>` per ciascuno dei diversi valori di prefisso `Development/`, `Finance/` e `Private/` che corrisponde a una sottostringa dall'inizio di queste chiavi alla prima occorrenza del delimitatore `/` specificato. 

La console interpreta questo risultato e mostra le voci a livello root come tre cartelle e una chiave dell'oggetto. 

Se Bob o Alice apre la cartella **Development**, la console invia la richiesta [GET Bucket (ListObjects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) ad Amazon S3 con i parametri `prefix` e `delimiter` impostati sui seguenti valori:
+ Il parametro `prefix` con il valore `Development/`.
+ Il parametro `delimiter` con il valore "`/`". 

In risposta, Amazon S3 restituisce le chiavi degli oggetti che iniziano con il prefisso specificato. 

```
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>companybucket</Name>
  <Prefix>Development</Prefix>
  <Delimiter>/</Delimiter>
   ...
  <Contents>
    <Key>Project1.xls</Key>
    ...
  </Contents>
  <Contents>
    <Key>Project2.xls</Key>
    ...
  </Contents> 
</ListBucketResult>
```

La console mostra le chiavi degli oggetti.

Ora, tornare alla concessione dell'autorizzazione agli utenti per elencare le voci del bucket a livello root. Per elencare il contenuto del bucket, gli utenti devono disporre dell'autorizzazione per chiamare l'operazione `s3:ListBucket`, come illustrato nella seguente dichiarazione di policy. Per fare in modo che possa essere visualizzato il contenuto a livello root, è necessario aggiungere una condizione per richiedere che gli utenti specifichino un oggetto `prefix` vuoto nella richiesta, ovvero gli utenti non sono autorizzati a fare doppio clic su alcuna cartella a livello root. Infine, aggiungere una condizione per esigere un accesso di tipo cartella imponendo che le richieste dell'utente includano il parametro `delimiter` con il valore "`/`". 

```
{
  "Sid": "AllowRootLevelListingOfCompanyBucket",
  "Action": ["s3:ListBucket"],
  "Effect": "Allow",
  "Resource": ["arn:aws:s3:::companybucket"],
  "Condition":{ 
         "StringEquals":{
             "s3:prefix":[""], "s3:delimiter":["/"]
                        }
              }
}
```

Quando scegli un bucket sulla console Amazon S3, la console invia innanzitutto la richiesta di posizione [GET Bucket per trovare dove è distribuito Regione AWS il bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html). La console utilizza quindi l'endpoint specifico della regione per il bucket per inviare la richiesta [GET Bucket (ListObjects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html). Di conseguenza, se gli utenti utilizzeranno la console, è necessario assegnare l'autorizzazione per l'operazione `s3:GetBucketLocation` come illustrato nella seguente dichiarazione di policy.

```
{
   "Sid": "RequiredByS3Console",
   "Action": ["s3:GetBucketLocation"],
   "Effect": "Allow",
   "Resource": ["arn:aws:s3:::*"]
}
```

**Per consentire agli utenti di elencare il contenuto di un bucket a livello root**

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

   Usa Account AWS le tue credenziali, non le credenziali di un utente IAM, per accedere alla console.

1. Sostituire la policy gestita `AllowGroupToSeeBucketListInTheConsole` esistente che è collegata al gruppo `Consultants` con la seguente policy, che consente anche l'operazione `s3:ListBucket`. Ricordarsi di sostituire *`companybucket`* nella policy `Resource` con il nome del proprio bucket. 

   Per step-by-step istruzioni, consulta [Modifica delle politiche IAM nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) per l'*utente IAM*. Quando segui le step-by-step istruzioni, assicurati di seguire i passaggi per applicare le modifiche a tutte le principali entità a cui è allegata la policy. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	                  
     "Statement": [
        {
          "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
          "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ],
          "Effect": "Allow",
          "Resource": [ "arn:aws:s3:::*"  ]
        },
        {
          "Sid": "AllowRootLevelListingOfCompanyBucket",
          "Action": ["s3:ListBucket"],
          "Effect": "Allow",
          "Resource": ["arn:aws:s3:::companybucket"],
          "Condition":{ 
                "StringEquals":{
                       "s3:prefix":[""], "s3:delimiter":["/"]
                              }
                      }
        }
     ] 
   }
   ```

------

1. Test delle autorizzazioni aggiornate.

   1. Mediante il link di accesso dell'utente IAM (consulta [Per fornire un collegamento di accesso agli utenti IAM](#walkthrough-sign-in-user-credentials)), accedere alla Console di gestione AWS. 

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

   1. Scegliere il bucket creato. La console mostra le voci del bucket a livello root. Se si sceglie qualsiasi cartella nel bucket, non sarà possibile visualizzare il contenuto della cartella perché le relative autorizzazioni non sono state ancora concesse.

Questo test ha esito positivo quando gli utenti utilizzano la console di Amazon S3. Quando si sceglie un bucket sulla console, l'implementazione della console invia una richiesta che include il parametro `prefix` con una stringa vuota come valore e il parametro `delimiter` con "`/`" come valore.

### Fase 4.3: sintesi della policy di gruppo
<a name="walkthrough-group-policy-summary"></a>

L'effetto della policy di gruppo aggiunta è quello di concedere agli utenti IAM Alice e Bob le seguenti autorizzazioni minime:
+ Elencare tutti i bucket di proprietà dell'account padre.
+ Visualizzare le voci a livello root nel bucket `companybucket`. 

Tuttavia, gli utenti ancora non possono fare molto. Di seguito, concedere autorizzazioni specifiche per utente, come segue:
+ Consentire a Alice di prendere e mettere oggetti nella cartella `Development`.
+ Consentite a Bob di prendere e mettere oggetti nella cartella `Finance`.

Per le autorizzazioni specifiche dell'utente, collegare una policy all'utente specifico, non al gruppo. Nella sezione seguente, ad Alice vengono concesse le autorizzazioni per lavorare nella cartella `Development`. È possibile ripetere le fasi per concedere un'autorizzazione simile a Bob per lavorare nella cartella `Finance`.

## Fase 5: concessione di autorizzazioni specifiche all'utente IAM Alice
<a name="walkthrough-grant-user1-permissions"></a>

È necessario ora concedere autorizzazioni aggiuntive ad Alice in modo che possa vedere il contenuto della cartella `Development` per poter prendere e mettere oggetti nella stessa.

### Fase 5.1: concessione dell'autorizzazione a elencare il contenuto della cartella Development all'utente IAM Alice
<a name="walkthrough-grant-user1-permissions-listbucket"></a>

Affinché Alice possa elencare il contenuto della cartella `Development`, è necessario applicare all'utente Alice una policy che conceda l'autorizzazione per l'azione `s3:ListBucket` sul bucket `companybucket`, a condizione che la richiesta includa il prefisso `Development/`. Questa policy deve essere applicata solo all'utente Alice, pertanto viene utilizzata una policy inline. Per ulteriori informazioni sulle policy inline, consulta [Policy gestite e policy inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) nella *Guida per l'utente di IAM*.

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

   Usa Account AWS le tue credenziali, non le credenziali di un utente IAM, per accedere alla console.

1. Creare una policy inline per concedere all'utente Alice l'autorizzazione per elencare il contenuto della cartella `Development`.

   1. Nel riquadro di navigazione sinistro, scegliere **Users (Utenti)**.

   1. Scegli il nome utente **Alice**.

   1. Nella pagina dei dettagli dell'utente, scegliere la scheda **Permissions (Autorizzazioni)**, quindi selezionare **Add inline policy (Aggiungi policy inline)**.

   1. Selezionare la scheda **JSON**.

   1. Copia la seguente policy per incollarla nel campo di testo della policy.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	   
          "Statement": [
          {
            "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::companybucket"],
            "Condition": { "StringLike": {"s3:prefix": ["Development/*"] }
             }
          }
        ]
      }
      ```

------

   1. Scegliere **Review policy (Esamina policy)**. Nella pagina successiva, immettere un nome nel campo **Name (Nome)**, quindi scegliere **Create policy (Crea policy)**.

1. Test della modifica apportata alle autorizzazioni di Alice:

   1. Mediante il link di accesso dell'utente IAM (consulta [Per fornire un collegamento di accesso agli utenti IAM](#walkthrough-sign-in-user-credentials)), accedere alla Console di gestione AWS. 

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

   1. Nella console di Amazon S3 verificare che Alice possa visualizzare l'elenco degli oggetti nella cartella `Development/` del bucket. 

      Quando l'utente sceglie la cartella `/Development` per visualizzare l'elenco degli oggetti in essa contenuti, la console di Amazon S3 invia la richiesta `ListObjects` ad Amazon S3 con il prefisso `/Development`. Poiché all'utente è stata concessa l'autorizzazione per visualizzare l'elenco degli oggetti con il prefisso `Development` e il delimitatore `/`, Amazon S3 restituisce l'elenco degli oggetti con il prefisso della chiave `Development/` e la console visualizza tale elenco.

### Fase 5.2: concessione delle autorizzazioni a recuperare e inserire oggetti nella cartella Development all'utente IAM Alice
<a name="walkthrough-grant-user1-permissions-get-put-object"></a>

Affinché Alice possa prendere e mettere oggetti nella cartella `Development`, ha bisogno di un'autorizzazione per chiamare le operazioni `s3:GetObject` e `s3:PutObject`. Le seguenti dichiarazioni di policy assegnano queste autorizzazioni purché la richiesta includa il parametro `prefix` con un valore di `Development/`.

```
{
    "Sid":"AllowUserToReadWriteObjectData",
    "Action":["s3:GetObject", "s3:PutObject"],
    "Effect":"Allow",
    "Resource":["arn:aws:s3:::companybucket/Development/*"]
 }
```



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

   Usa Account AWS le tue credenziali, non quelle di un utente IAM, per accedere alla console.

1. Modificare la policy inline creata nella fase precedente. 

   1. Nel riquadro di navigazione sinistro, scegliere **Users (Utenti)**.

   1. Scegliere il nome utente Alice.

   1. Nella pagina dei dettagli, scegliere la scheda **Permissions (Autorizzazioni)** ed espandere la sezione **Inline Policies (Policy inline)**.

   1. Accanto al nome della policy creata nella fase precedente, scegliere **Edit Policy (Modifica policy)** .

   1. Copiare la seguente policy e incollarla nel campo di testo della policy, sostituendo la policy esistente.

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

****  

      ```
      {
           "Version":"2012-10-17",		 	 	 
           "Statement":[
            {
               "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
               "Action":["s3:ListBucket"],
               "Effect":"Allow",
               "Resource":["arn:aws:s3:::companybucket"],
               "Condition":{
                  "StringLike":{"s3:prefix":["Development/*"]
                  }
               }
            },
            {
              "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", 
              "Action":["s3:GetObject", "s3:PutObject"],
              "Effect":"Allow",
              "Resource":["arn:aws:s3:::companybucket/Development/*"]
            }
         ]
      }
      ```

------

1. Test della policy aggiornata:

   1. Mediante il link di accesso dell'utente IAM (consulta [Per fornire un collegamento di accesso agli utenti IAM](#walkthrough-sign-in-user-credentials)), accedere alla Console di gestione AWS. 

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

   1. Nella console di Amazon S3 verificare che Alice possa aggiungere e scaricare un oggetto nella cartella `Development`. 

### Fase 5.3: rifiuto esplicito delle autorizzazioni relative a qualsiasi altra cartella del bucket per l'utente IAM Alice
<a name="walkthrough-grant-user1-explicit-deny-other-access"></a>

L'utente Alice ora può elencare il contenuto del bucket `companybucket` a livello root. Inoltre, ora può prendere e mettere oggetti nella cartella `Development`. Se si vuole effettivamente limitare le autorizzazioni di accesso, è possibile rifiutare esplicitamente ad Alice l'accesso a qualsiasi altra cartella del bucket. Se esiste qualsiasi altra policy (policy di bucket o ACL) che assegna ad Alice l'accesso a eventuali altre cartelle del bucket, questo rifiuto esplicito sovrascrive tali autorizzazioni. 

È possibile aggiungere la seguente istruzione alla policy utente di Alice, che prevede che tutte le richieste inviate da Alice ad Amazon S3 includano il parametro `prefix`, il cui valore può essere `Development/*` oppure una stringa vuota. 



```
{
   "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
   "Action": ["s3:ListBucket"],
   "Effect": "Deny",
   "Resource": ["arn:aws:s3:::companybucket"],
   "Condition":{  "StringNotLike": {"s3:prefix":["Development/*",""] },
                  "Null"         : {"s3:prefix":false }
    }
}
```

Esistono due espressioni condizionali nel blocco `Condition`. Il risultato di queste espressioni condizionali viene combinato utilizzando l'`AND` logico. Se entrambe le condizioni sono vere, il risultato della condizione combinata è vero. Poiché `Effect` in questa policy è `Deny`, quando `Condition` viene valutata true, gli utenti non saranno in grado di eseguire la `Action` specificata.
+ L'espressione condizionale `Null` assicura che le richieste provenienti da Alice includano il parametro `prefix`. 

  Il parametro `prefix` richiede l'accesso di tipo cartella. Se viene inviata una richiesta senza il parametro `prefix`, Amazon S3 restituisce tutte le chiavi degli oggetti. 

  Se la richiesta include il parametro `prefix` con un valore null, l'espressione restituisce il valore True, quindi tutta la `Condition` restituisce il valore True. È necessario consentire una stringa vuota come valore del parametro `prefix`. Da quanto detto in precedenza, ricordare che permettere una stringa nulla significa consentire ad Alice di recuperare le voci del bucket a livello root come fa la console nella precedente discussione. Per ulteriori informazioni, consulta [Fase 4.2: abilitazione degli utenti a elencare il contenuto di un bucket a livello root](#walkthrough1-grant-permissions-step2). 
+ L'espressione condizionale `StringNotLike` assicura che se il valore del parametro `prefix` viene specificato e non è `Development/*`, la richiesta ha esito negativo. 

Seguire le fasi della sezione precedente e aggiornare nuovamente la policy inline creata per l'utente Alice.

Copiare la seguente policy e incollarla nel campo di testo della policy, sostituendo la policy esistente.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
         "Action":["s3:ListBucket"],
         "Effect":"Allow",
         "Resource":["arn:aws:s3:::companybucket"],
         "Condition":{
            "StringLike":{"s3:prefix":["Development/*"]
            }
         }
      },
      {
        "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", 
        "Action":["s3:GetObject", "s3:PutObject"],
        "Effect":"Allow",
        "Resource":["arn:aws:s3:::companybucket/Development/*"]
      },
      {
         "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::companybucket"],
         "Condition":{  "StringNotLike": {"s3:prefix":["Development/*",""] },
                        "Null"         : {"s3:prefix":false }
          }
      }
   ]
}
```

------

## Fase 6: concessione di autorizzazioni specifiche all'utente IAM Bob
<a name="walkthrough1-grant-permissions-step5"></a>

È necessario ora assegnare a Bob l'autorizzazione per la cartella `Finance`. Seguire le fasi utilizzate precedentemente per assegnare le autorizzazioni ad Alice ma sostituire la cartella `Development` con la cartella `Finance`. Per step-by-step istruzioni, consulta[Fase 5: concessione di autorizzazioni specifiche all'utente IAM Alice](#walkthrough-grant-user1-permissions). 

## Fase 7: protezione della cartella Private (Privato)
<a name="walkthrough-secure-private-folder-explicit-deny"></a>

In questo esempio, vi sono soltanto due utenti. Sono state concesse le autorizzazioni minime a livello di gruppo e quelle a livello di utente unicamente quando erano veramente necessarie delle autorizzazioni a livello di singolo utente. Questo approccio contribuisce ad alleggerire l'impegno necessario per gestire le autorizzazioni. Con l'aumento del numero degli utenti, la gestione delle autorizzazioni può diventare gravosa. Ad esempio, non vogliamo che alcun utente di questo esempio acceda al contenuto della cartella `Private`. Come ci si assicura di non concedere accidentalmente a un utente i permessi per la cartella `Private`? È necessario aggiungere una policy che rifiuti esplicitamente l'accesso alla cartella. Un rifiuto esplicito sovrascrive qualsiasi altra autorizzazione. 

Per essere certi che la cartella `Private` resti privata, è possibile aggiungere le seguenti due dichiarazioni di rifiuto alla policy di gruppo:
+ Aggiungere la seguente dichiarazione per rifiutare esplicitamente qualsiasi operazione sulle risorse della cartella `Private` (`companybucket/Private/*`).

  ```
  {
    "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
    "Action": ["s3:*"],
    "Effect": "Deny",
    "Resource":["arn:aws:s3:::companybucket/Private/*"]
  }
  ```
+ Viene inoltre rifiutata l'autorizzazione a eseguire l'operazione di elenco degli oggetti quando la richiesta specifica il prefisso `Private/`. Nella console, se Bob o Alice apre la cartella `Private`, questa policy fa in modo che Amazon S3 restituisca una risposta di errore.

  ```
  {
    "Sid": "DenyListBucketOnPrivateFolder",
    "Action": ["s3:ListBucket"],
    "Effect": "Deny",
    "Resource": ["arn:aws:s3:::*"],
    "Condition":{
        "StringLike":{"s3:prefix":["Private/"]}
     }
  }
  ```

Sostituire la policy del gruppo `Consultants` con una policy aggiornata che includa le precedenti dichiarazioni di rifiuto. Una volta applicata la policy aggiornata, nessuno degli utenti del gruppo può accedere alla cartella `Private` nel bucket. 

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

   Usa Account AWS le tue credenziali, non quelle di un utente IAM, per accedere alla console.

1. Sostituire la policy gestita `AllowGroupToSeeBucketListInTheConsole` esistente che è collegata al gruppo `Consultants` con la seguente policy. Ricordarsi di sostituire *`companybucket`* nella policy con il nome del bucket. 

   Per istruzioni, consulta [Modifica delle policy gestite dai clienti](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html#edit-managed-policy-console) nella *Guida all'utente IAM*. Quando si seguono le istruzioni, osservare le indicazioni per l'applicazione delle modifiche a tutte le entità principali a cui è collegata la policy. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
         "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::*"]
       },
       {
         "Sid": "AllowRootLevelListingOfCompanyBucket",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::companybucket"],
         "Condition":{
             "StringEquals":{"s3:prefix":[""]}
          }
       },
       {
         "Sid": "RequireFolderStyleList",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::*"],
         "Condition":{
             "StringNotEquals":{"s3:delimiter":"/"}
          }
        },
       {
         "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
         "Action": ["s3:*"],
         "Effect": "Deny",
         "Resource":["arn:aws:s3:::companybucket/Private/*"]
       },
       {
         "Sid": "DenyListBucketOnPrivateFolder",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::*"],
         "Condition":{
             "StringLike":{"s3:prefix":["Private/"]}
          }
       }
     ]
   }
   ```

------



## Fase 8: Pulizia
<a name="walkthrough-cleanup"></a>

Per la pulizia, apri la [Console IAM](https://console.aws.amazon.com/iam/) e rimuovi gli utenti Alice e Bob. Per step-by-step istruzioni, consulta [Eliminazione di un utente IAM nella Guida per l'utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting) *IAM*.

Per essere certi che non vengano addebitati costi aggiuntivi per lo storage, è necessario eliminare anche gli oggetti e il bucket che è stato creato per questo esercizio.

## Risorse correlate
<a name="RelatedResources-walkthrough1"></a>
+ [Gestione di policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) nella *Guida per l'utente IAM*