

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 per i bucket che utilizzano le chiavi di condizione
<a name="amazon-s3-policy-keys"></a>

È possibile utilizzare in linguaggio delle policy di accesso per specificare le condizioni quando si concedono le autorizzazioni. È possibile utilizzare l'elemento opzionale `Condition`, o blocco `Condition`, per specificare le condizioni per l'entrata in vigore di una policy. 

Per le policy che utilizzano le chiavi di condizioni di Amazon S3 per operazioni su oggetti e bucket, consulta gli esempi seguenti. Per ulteriori informazioni su queste chiavi di condizione, consulta [Chiavi di condizione per Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). Per un elenco completo delle azioni, delle chiavi di condizione e delle risorse di Amazon S3 che è possibile specificare nelle policy, 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).

## Esempi: Chiavi di condizione di Amazon S3 per operazioni sugli oggetti
<a name="object-keys-in-amazon-s3-policies"></a>

Gli esempi seguenti mostrano come si possono usare le chiavi di condizione specifiche di Amazon S3 per le operazioni sugli oggetti. Per un elenco completo delle azioni, delle chiavi di condizione e delle risorse di Amazon S3 che è possibile specificare nelle policy, 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).

Molte delle policy di esempio mostrano come è possibile utilizzare le chiavi di condizione con le operazioni [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). Le operazioni PUT Object permettono intestazioni specifiche della lista di controllo degli accessi (ACL) che è possibile utilizzare per concedere autorizzazioni basate sulle liste ACL. Utilizzando queste chiavi di condizione, è possibile impostare una condizione per richiedere autorizzazioni di accesso specifiche quando l'utente carica un oggetto. Puoi anche concedere autorizzazioni basate su ACL con l'operazione. PutObjectAcl Per ulteriori informazioni, consulta il riferimento [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)all'*API Amazon S3 Amazon Simple Storage Service*. Per ulteriori informazioni su ACLs, consulta[Panoramica delle liste di controllo accessi (ACL)](acl-overview.md).

**Topics**
+ [Esempio 1: concessione dell'autorizzazione a `s3:PutObject` che richiede che gli oggetti siano memorizzati utilizzando la crittografia lato server](#putobject-require-sse-2)
+ [Esempio 2: Concessione all'indirizzo `s3:PutObject` dell'autorizzazione a copiare oggetti con una restrizione sull'origine della copia](#putobject-limit-copy-source-3)
+ [Esempio 3: concessione dell'accesso a una versione specifica di un oggetto](#getobjectversion-limit-access-to-specific-version-3)
+ [Esempio 4: concessione di autorizzazioni in base ai tag degli oggetti](#example-object-tagging-access-control)
+ [Esempio 5: limitazione dell'accesso in base all' Account AWS ID del proprietario del bucket](#example-object-resource-account)
+ [Esempio 6: Richiesta di una versione TLS minima](#example-object-tls-version)
+ [Esempio 7: Esclusione di alcuni principali da un'istruzione `Deny`](#example-exclude-principal-from-deny-statement)
+ [Esempio 8: imporre ai client di caricare oggetti in modo condizionale in base ai nomi delle chiavi degli oggetti o ETags](#example-conditional-writes-enforce)

### Esempio 1: concessione dell'autorizzazione a `s3:PutObject` che richiede che gli oggetti siano memorizzati utilizzando la crittografia lato server
<a name="putobject-require-sse-2"></a>

Si supponga che l'Account A possieda un bucket. L'amministratore dell'account vuole concedere a Jane, un utente dell'account A, l'autorizzazione a caricare oggetti con la condizione che Jane richieda sempre la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3). L'amministratore del conto A può specificare questo requisito utilizzando la chiave di condizione `s3:x-amz-server-side-encryption`, come mostrato. La coppia chiave-valore nel seguente blocco `Condition` specifica la chiave di condizione `s3:x-amz-server-side-encryption` e SSE-S3 (`AES256`) come tipo di crittografia:

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

Quando si verifica questa autorizzazione utilizzando il AWS CLI, è necessario aggiungere la crittografia richiesta utilizzando il `--server-side-encryption` parametro, come illustrato nell'esempio seguente. Per utilizzare questo comando di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni. 

```
aws s3api put-object --bucket {{amzn-s3-demo-bucket}} --key {{HappyFace.jpg}} --body {{c:\HappyFace.jpg}} --server-side-encryption "{{AES256}}" --profile {{AccountAadmin}}
```

### Esempio 2: Concessione all'indirizzo `s3:PutObject` dell'autorizzazione a copiare oggetti con una restrizione sull'origine della copia
<a name="putobject-limit-copy-source-3"></a>

In una richiesta di oggetto `PUT`, quando si specifica un oggetto di origine, la richiesta è un'operazione di copia (consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)). Di conseguenza è possibile che il proprietario del bucket assegni all'utente l'autorizzazione a copiare gli oggetti con qualche limitazione sull'origine, ad esempio:
+ Consente di copiare gli oggetti solo dal bucket di origine specificato (ad esempio, `{{amzn-s3-demo-source-bucket}}`).
+ Consente di copiare gli oggetti dal bucket di origine specificato e solo gli oggetti il cui prefisso del nome della chiave inizia con un prefisso specifico, come ad esempio {{`public/`}} (ad esempio, `{{amzn-s3-demo-source-bucket}}{{/public/*}}`).
+ Consente di copiare solo un oggetto specifico dal bucket di origine (ad esempio, `{{amzn-s3-demo-source-bucket}}{{/example.jpg}}`).

La seguente policy del bucket concede a un utente (`{{Dave}}`) l'autorizzazione `s3:PutObject`. Questa policy gli consente di copiare gli oggetti solo a condizione che la richiesta includa l'intestazione `s3:x-amz-copy-source` e che il valore dell'intestazione specifichi il prefisso del nome della chiave `/{{amzn-s3-demo-source-bucket}}{{/public/*}}`. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Sid": "cross-account permission to user in your own account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{123456789012}}:user/{{Dave}}"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-source-bucket}}/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::{{123456789012}}:user/{{Dave}}"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-source-bucket}}/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "{{amzn-s3-demo-source-bucket}}{{/public/*}}"
                }
            }
        }
    ]
}
```

------

**Verificate la politica con AWS CLI**  
È possibile verificare l'autorizzazione utilizzando il AWS CLI `copy-object` comando. È possibile specificare l'origine aggiungendo il parametro `--copy-source`; il prefisso del nome della chiave deve corrispondere al prefisso consentito nella policy. È necessario fornire le credenziali all'utente Dave utilizzando il parametro `--profile`. *Per ulteriori informazioni sulla configurazione di AWS CLI, consulta [Developing with Amazon S3 using the AWS CLI nell'Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Reference.*

```
aws s3api copy-object --bucket {{{{amzn-s3-demo-source-bucket}}}} --key {{HappyFace.jpg}} 
--copy-source {{{{amzn-s3-demo-source-bucket}}}}{{/public/PublicHappyFace1.jpg}} --profile {{AccountADave}}
```

**Concessione dell'autorizzazione a copiare solo un oggetto specifico**  
La policy di cui sopra utilizza la condizione `StringNotLike`. Per concedere l'autorizzazione a copiare solo un oggetto specifico, è necessario modificare la condizione da `StringNotLike` a `StringNotEquals` e quindi specificare la chiave dell'oggetto esatto, come mostrato nell'esempio seguente. Per utilizzare questo comando di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "{{{{amzn-s3-demo-source-bucket}}}}{{/public/PublicHappyFace1.jpg}}"
       }
}
```

### Esempio 3: concessione dell'accesso a una versione specifica di un oggetto
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

Si supponga che l'account A possieda un bucket con controllo delle versioni abilitato. Il bucket ha diverse versioni dell'oggetto `{{HappyFace.jpg}}`. L'amministratore dell'account A vuole ora concedere all'utente `{{Dave}}` il permesso di ottenere solo una versione specifica dell'oggetto. L'amministratore dell'account può ottenere questo risultato concedendo all'utente `{{Dave}}` l'autorizzazione `s3:GetObjectVersion` in modo condizionato, come mostrato nell'esempio seguente. La coppia chiave-valore nel blocco `Condition` specifica la chiave di condizione `s3:VersionId`. In questo caso, per recuperare l'oggetto dal bucket con controllo delle versioni abilitato specificato, `{{Dave}}` deve conoscere l'ID esatto della versione dell'oggetto. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

Per ulteriori informazioni, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) in *Amazon Simple Storage Service API Reference* (Guida di riferimento per l'API di Amazon Simple Storage Service). 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{123456789012}}:user/{{Dave}}"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}{{/HappyFace.jpg}}"
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::{{123456789012}}:user/{{Dave}}"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}{{/HappyFace.jpg}}",
            "Condition": {
                "StringNotEquals": {
                    "s3:VersionId": "{{AaaHbAQitwiL_h47_44lRO2DDfLlBO5e}}"
                }
            }
        }
    ]
}
```

------

**Verifica la politica con il AWS CLI**  
È possibile verificare le autorizzazioni contenute in questa politica utilizzando il AWS CLI `get-object` comando con il `--version-id` parametro per identificare la versione specifica dell'oggetto da recuperare. Il comando recupera la versione specificata dell'oggetto e la salva nel file `{{OutputFile.jpg}}`.

```
aws s3api get-object --bucket {{{{amzn-s3-demo-bucket}}}} --key {{HappyFace.jpg}} {{OutputFile.jpg}} --version-id {{AaaHbAQitwiL_h47_44lRO2DDfLlBO5e}} --profile {{AccountADave}}
```

### Esempio 4: concessione di autorizzazioni in base ai tag degli oggetti
<a name="example-object-tagging-access-control"></a>

Per esempi su come utilizzare le chiavi di condizione del tagging degli oggetti con le operazioni di Amazon S3, consulta [Tagging e policy di controllo degli accessi](tagging-and-policies.md).

### Esempio 5: limitazione dell'accesso in base all' Account AWS ID del proprietario del bucket
<a name="example-object-resource-account"></a>

Puoi utilizzare la chiave `aws:ResourceAccount` o `s3:ResourceAccount` condition per scrivere policy endpoint IAM o Virtual Private Cloud (VPC) che limitano l'accesso di utenti, ruoli o applicazioni ai bucket Amazon S3 di proprietà di un ID specifico. Account AWS È possibile utilizzare queste chiavi di condizione per limitare l'accesso dei client all'interno del VPC ai bucket non di proprietà dell'utente.

Tuttavia, tieni presente che alcuni AWS servizi si basano sull'accesso a bucket gestiti. AWS Pertanto, l'utilizzo della chiave `aws:ResourceAccount` o `s3:ResourceAccount` nelle policy IAM potrebbe influire sull'accesso a queste risorse. Per maggiori informazioni, consulta le seguenti risorse:
+ [Limitazione dell'accesso ai bucket in un Account AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3) specificato nella *Guida di AWS PrivateLink *
+ [Limitazione dell'accesso ai bucket utilizzati da Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms)nella *Guida di Amazon ECR*
+ [Fornisci l'accesso richiesto a Systems Manager per i bucket Amazon S3 AWS gestiti](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html) *nella guida AWS Systems Manager *

Per ulteriori informazioni sulle chiavi di condizione `aws:ResourceAccount` e `s3:ResourceAccount` ed esempi che mostrano come usarle, consulta [Limitare l'accesso ai bucket Amazon S3 di proprietà di specifici Account AWS](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/) nello *AWS Storage Blog*.

### Esempio 6: Richiesta di una versione TLS minima
<a name="example-object-tls-version"></a>

È possibile utilizzare la chiave di condizione `s3:TlsVersion` per scrivere policy IAM, endpoint di cloud privato virtuale (VPCE) o bucket che limitano l'accesso di utenti o applicazioni ai bucket Amazon S3 in base alla versione TLS utilizzata dal client. È possibile utilizzare questa chiave di condizione per scrivere policy che richiedono una versione TLS minima. 

**Nota**  
Quando AWS i servizi effettuano chiamate ad altri AWS servizi per tuo conto (service-to-service chiamate), alcuni contesti di autorizzazione specifici della rete vengono oscurati, tra cui,, e. `s3:TlsVersion` `aws:SecureTransport` `aws:SourceIp` `aws:VpcSourceIp` Se la tua politica utilizza queste chiavi di condizione con le `Deny` istruzioni, i responsabili del AWS servizio potrebbero essere bloccati involontariamente. Per consentire ai AWS servizi di funzionare correttamente mantenendo i requisiti di sicurezza, escludi i service principal dalle tue `Deny` dichiarazioni aggiungendo la chiave di `aws:PrincipalIsAWSService` condizione con il valore di. `false` Esempio:  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
Questa politica nega l'accesso alle operazioni di S3 quando non viene utilizzato HTTPS (`aws:SecureTransport`è falso), ma solo per i principali non di servizio.AWS Ciò garantisce che le restrizioni condizionali si applichino a tutti i principali ad eccezione dei responsabili dei servizi. AWS 

**Example**  
Il seguente esempio di policy del bucket *nega* le richieste di `PutObject` da parte di client che hanno una versione di TLS precedente a 1.2, ad esempio 1.1 o 1.0. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket1}}",
                "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
Il seguente esempio di policy del bucket *consente* le richieste di `PutObject` da parte di client che hanno una versione TLS successiva alla 1.1, ad esempio 1.2, 1.3 o successiva:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::{{amzn-s3-demo-bucket1}}",
                "arn:aws:s3:::{{amzn-s3-demo-bucket1}}/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### Esempio 7: Esclusione di alcuni principali da un'istruzione `Deny`
<a name="example-exclude-principal-from-deny-statement"></a>

La seguente policy dei bucket nega a `s3:GetObject` l'accesso a `{{amzn-s3-demo-bucket}}`, tranne che ai principali con il numero di account {{`123456789012`}}. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "{{123456789012}}"
          ]
        }
      }
    }
  ]
}
```

------

### Esempio 8: imporre ai client di caricare oggetti in modo condizionale in base ai nomi delle chiavi degli oggetti o ETags
<a name="example-conditional-writes-enforce"></a>

Con le scritture condizionali, è possibile aggiungere un'intestazione aggiuntiva alle richieste di `WRITE` per specificare le precondizioni dell'operazione S3. Questa intestazione specifica una condizione che, se non viene soddisfatta, comporta il fallimento dell'operazione S3. Ad esempio, si può evitare la sovrascrittura di dati esistenti convalidando che non vi siano oggetti con lo stesso nome di chiave già presenti nel bucket durante il caricamento degli oggetti. In alternativa, puoi controllare il tag di entità di un oggetto (ETag) in Amazon S3 prima di scrivere un oggetto.

Per esempi di policy di bucket che utilizzano le condizioni in una policy di bucket per imporre scritture condizionali, consulta [Applicazione delle scritture condizionali sui bucket Amazon S3](conditional-writes-enforce.md).

## Esempi: Chiavi di condizione di Amazon S3 per le operazioni sui bucket
<a name="bucket-keys-in-amazon-s3-policies"></a>

I seguenti esempi di policy mostrano come sia possibile utilizzare chiavi di condizione specifiche di Amazon S3 per le operazioni sui bucket.

**Topics**
+ [Esempio 1: concessione dell'autorizzazione a `s3:GetObject` con una condizione su un indirizzo IP](#AvailableKeys-iamV2)
+ [Esempio 2: recupero di un elenco di oggetti in un bucket con un prefisso specifico](#condition-key-bucket-ops-2)
+ [Esempio 3: impostazione del numero massimo di chiavi](#example-numeric-condition-operators)

### Esempio 1: concessione dell'autorizzazione a `s3:GetObject` con una condizione su un indirizzo IP
<a name="AvailableKeys-iamV2"></a>

È possibile concedere agli utenti autenticati il permesso di utilizzare l'azione `s3:GetObject` se la richiesta proviene da un intervallo specifico di indirizzi IP (ad esempio, `{{192.0.2.*}}`), a meno che l'indirizzo IP non sia uno di quelli che si desidera escludere (ad esempio, `{{192.0.2.188}}`). Nel blocco `Condition`, `IpAddress` e `NotIpAddress` sono condizioni e a ciascuna condizione viene fornita una coppia chiave-valore da valutare. Entrambe le coppie chiave-valore in questo esempio utilizzano la `aws:SourceIp` AWS chiave wide. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

**Nota**  
I valori delle chiavi `IPAddress` e `NotIpAddress` specificati nel blocco `Condition` utilizzano la notazione CIDR, come descritto in RFC 4632. [Per ulteriori informazioni, consulta http://www.rfc-editor. org/rfc/rfc](http://www.rfc-editor.org/rfc/rfc4632.txt)4632.txt.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "{{192.0.2.0/24}}" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "{{192.0.2.188/32}}" 
                } 
            } 
        } 
    ]
}
```

------

Puoi anche utilizzare altre chiavi di condizione AWS a livello di ‐wide nelle policy di Amazon S3. Ad esempio, è possibile specificare le chiavi di condizione `aws:SourceVpce` e `aws:SourceVpc` nelle policy di bucket per gli endpoint VPC. Per esempi specifici consulta [Controllo dell'accesso dagli endpoint VPC con policy di bucket](example-bucket-policies-vpc-endpoint.md).

**Nota**  
Per alcune chiavi di condizione AWS globali, sono supportati solo determinati tipi di risorse. Pertanto, verificare se Amazon S3 supporta la chiave di condizione globale e il tipo di risorsa che si desidera utilizzare, o se invece è necessario utilizzare una chiave di condizione specifica di Amazon S3. Per un elenco completo dei tipi di risorse e delle chiavi di condizione supportate per Amazon S3, consulta [Azioni, risorse e chiavi di condizione per Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) 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).

### Esempio 2: recupero di un elenco di oggetti in un bucket con un prefisso specifico
<a name="condition-key-bucket-ops-2"></a>

È possibile utilizzare la chiave di condizione `s3:prefix` per limitare la risposta dell'operazione API ai nomi di chiavi con un prefisso specifico [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) API ai nomi delle chiavi con un prefisso specifico. Se si è il proprietario del bucket, si può usare questa chiave di condizione per limitare un utente a elencare il contenuto di un prefisso specifico nel bucket. La chiave di condizione `s3:prefix` è utile se gli oggetti del bucket sono organizzati per prefissi di nomi di chiavi. 

La console di Amazon S3 utilizza i prefissi dei nomi delle chiavi per mostrare un concetto di cartella. Solo la console supporta il concetto di cartelle, mentre l'API Amazon S3 supporta solo bucket e oggetti. Ad esempio, se due oggetti hanno i nomi delle chiavi {{`public/object1.jpg`}} e {{`public/object2.jpg`}}, la console mostra gli oggetti sotto la cartella {{`public`}}. Nell'API Amazon S3 questi sono oggetti con prefissi, non oggetti nelle cartelle. Per ulteriori informazioni sull'utilizzo di prefissi e delimitatori per filtrare le autorizzazioni di accesso, consulta [Procedura guidata: controllo dell'accesso a un bucket con policy utente](walkthrough1.md). 

Nel seguente scenario, il proprietario del bucket e l'account padre a cui appartiene l'utente sono gli stessi. Il proprietario del bucket può quindi utilizzare una policy del bucket o una policy dell'utente per concedere l'accesso. Per ulteriori informazioni sulle altre chiavi di condizione che è possibile utilizzare con l'operazione API `ListObjectsV2`, consulta la sezione [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html).

**Nota**  
Se per il bucket è abilitato il controllo delle versioni, per elencare gli oggetti nel bucket è necessario concedere l'autorizzazione `s3:ListBucketVersions` nelle policy seguenti, invece dell'autorizzazione `s3:ListBucket`. Il permesso `s3:ListBucketVersions` supporta anche la chiave di condizione `s3:prefix`. 

**Policy utente**  
La seguente policy utente concede l'autorizzazione `s3:ListBucket` (consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)) con un'istruzione `Condition` che richiede all'utente di specificare un prefisso nella richiesta con un valore di `{{projects}}`. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::{{amzn-s3-demo-bucket}}",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "{{projects}}" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "{{projects}}" 
             }
          } 
       }         
    ]
}
```

------

L'istruzione `Condition` limita l'utente a elencare solo le chiavi degli oggetti che hanno il prefisso `{{projects}}`. L'aggiunta dell'istruzione esplicita `Deny` impedisce all'utente di elencare le chiavi con qualsiasi altro prefisso, indipendentemente dalle altre autorizzazioni di cui dispone. Ad esempio, è possibile che l'utente ottenga l'autorizzazione a elencare le chiavi degli oggetti senza alcuna restrizione, sia attraverso l'aggiornamento della precedente policy dell'utente sia attraverso una policy del bucket. Poiché le istruzioni esplicite `Deny` sovrascrivono sempre le istruzioni `Allow`, se l'utente tenta di elencare chiavi diverse da quelle che hanno il prefisso `{{projects}}`, la richiesta viene rifiutata. 

**Policy del bucket**  
Se si aggiunge l'elemento `Principal` alla policy utente di cui sopra, che identifica l'utente, si ottiene una policy del bucket, come mostrato nell'esempio seguente. Per utilizzare questa policy di esempio, sostituisci `{{user input placeholders}}` con le tue informazioni.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Principal": {
            "AWS": "arn:aws:iam::{{123456789012}}:user/{{bucket-owner}}"
         },  
         "Action":  "s3:ListBucket",
         "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "{{projects}}" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::{{123456789012}}:user/{{bucket-owner}}"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "{{projects}}"  
             }
          } 
       }         
    ]
}
```

------

**Prova la politica con AWS CLI**  
È possibile testare la politica utilizzando il seguente `list-object` AWS CLI comando. Nel comando, vengono fornite le credenziali utente utilizzando il parametro `--profile`. *Per ulteriori informazioni sulla configurazione e l'utilizzo di AWS CLI, consulta [Developing with Amazon S3 using the AWS CLI nel Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) Reference.*

```
aws s3api list-objects --bucket {{{{amzn-s3-demo-bucket}}}} --prefix {{projects}} --profile {{AccountA}}
```

### Esempio 3: impostazione del numero massimo di chiavi
<a name="example-numeric-condition-operators"></a>

È possibile utilizzare la chiave di condizione `s3:max-keys` per impostare il numero massimo di chiavi che un richiedente può restituire in una richiesta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) o [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html). Per impostazione predefinita, queste operazioni API restituiscono fino a 1.000 chiavi. Per un elenco di operatori di condizione numerici che è possibile utilizzare con `s3:max-keys` e i relativi esempi, consulta [Operatori di condizione numerici](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric) nella *Guida per l'utente di IAM*.