

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

# Controllo degli accessi a una REST API con le policy delle risorse Gateway API
<a name="apigateway-resource-policies"></a>

Le *policy delle risorse* di Gateway Amazon API sono documenti di policy JSON collegati a un'API per controllare se un principale specificato (in genere un gruppo o un ruolo IAM) può richiamare l'API. È possibile usare le policy di risorse API Gateway per consentire alle API di essere chiamate in modo sicuro da:
+ Utenti di un AWS account specificato.
+ Intervalli di indirizzi IP sorgente specificati o blocchi CIDR.
+ Cloud privati virtuali (VPCs) o endpoint VPC specificati (in qualsiasi account).

È possibile allegare una policy di risorse per qualsiasi tipo di endpoint API in API Gateway utilizzando Console di gestione AWS la AWS CLI o. AWS SDKs In [ambito privato APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html), puoi utilizzare le policy delle risorse insieme alle policy degli endpoint VPC per controllare quali principali hanno accesso a quali risorse e azioni. Per ulteriori informazioni, consulta [Usa le policy degli endpoint VPC per uso privato APIs in API Gateway](apigateway-vpc-endpoint-policies.md).

 Le policy delle risorse API Gateway sono diverse dalle policy IAM basate su identità. Le policy IAM basate su identità sono collegate a utenti, gruppi o ruoli IAM e definiscono le operazioni che tali identità sono in grado di eseguire e su quali risorse. Le policy delle risorse API Gateway sono collegate alle risorse. L'utilizzo combinato delle policy delle risorse API Gateway e delle policy IAM è consentito. Per ulteriori informazioni, consultare [Identity-Based Policies and Resource-Based Policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

**Topics**
+ [Panoramica della sintassi delle policy di accesso per Amazon API Gateway](apigateway-control-access-policy-language-overview.md)
+ [Come le policy delle risorse API Gateway influiscono sul flusso di lavoro delle autorizzazioni](apigateway-authorization-flow.md)
+ [Esempi di policy delle risorse API Gateway](apigateway-resource-policies-examples.md)
+ [Creazione e collegamento di una policy delle risorse API Gateway a un'API](apigateway-resource-policies-create-attach.md)
+ [AWS chiavi di condizione che possono essere utilizzate nelle politiche delle risorse di API Gateway](apigateway-resource-policies-aws-condition-keys.md)

# Panoramica della sintassi delle policy di accesso per Amazon API Gateway
<a name="apigateway-control-access-policy-language-overview"></a>

Questa pagina descrive gli elementi di base usati nelle policy per le risorse Amazon API Gateway.

Le policy delle risorse vengono specificate utilizzando la stessa sintassi delle policy IAM. Per informazioni complete sulla sintassi delle policy, consulta [Panoramica delle policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) e [Riferimento alle policy AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) nella *Guida per l'utente di IAM*.

Per informazioni su come un AWS servizio decide se una determinata richiesta deve essere consentita o rifiutata, vedere [Determinare se una richiesta è consentita](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow) o rifiutata.

## Elementi comuni in una policy di accesso
<a name="apigateway-common-elements-in-an-access-policy"></a>

In termini basilari, una policy delle risorse contiene i seguenti elementi:
+ **Risorse**: APIs sono le risorse di Amazon API Gateway per le quali puoi consentire o negare le autorizzazioni. In una policy, utilizzare l'Amazon Resource Name (ARN) per identificare la risorsa. È inoltre possibile utilizzare la sintassi abbreviata, che API Gateway espande automaticamente fino all'ARN completo quando si salva una policy delle risorse. Per ulteriori informazioni, consulta [Esempi di policy delle risorse API Gateway](apigateway-resource-policies-examples.md).

  Per il formato dell'elemento `Resource` completo, consulta [Formato dell'elemento Resource delle autorizzazioni per l'esecuzione dell'API in API Gateway](api-gateway-control-access-using-iam-policies-to-invoke-api.md#api-gateway-iam-policy-resource-format-for-executing-api).
+ **Azioni**: per ogni risorsa, Amazon API Gateway supporta un insieme di operazioni. Vengono identificate le operazioni delle risorse che verranno consentite (o rifiutate) utilizzando le parole chiave dell'operazione.

  Ad esempio, l'autorizzazione `execute-api:Invoke` consentirà all'utente di richiamare un'API in seguito alla richiesta di un client.

  Per il formato dell'elemento `Action`, consulta [Formato dell'elemento Action delle autorizzazioni per l'esecuzione dell'API in API Gateway](api-gateway-control-access-using-iam-policies-to-invoke-api.md#api-gateway-iam-policy-action-format-for-executing-api).
+ **Effetto**: l'effetto prodotto quando l'utente richiede una determinata operazione; può essere `Allow` o `Deny`. È anche possibile rifiutare esplicitamente l'accesso a una risorsa per essere certi che un utente non sia in grado di accedervi, anche quando tale accesso è assegnato da un'altra policy. 
**Nota**  
"Rifiuto implicito" ha lo stesso significato di "rifiuto per default".  
Un "rifiuto implicito" è diverso da un "rifiuto esplicito". Per ulteriori informazioni, consulta la sezione sulla [differenza tra rifiuto per default e rifiuto esplicito](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplay).
+ **Principale**: account o utente autorizzato ad accedere alle operazioni e alle risorse nell'istruzione. In una policy delle risorse, il principale è l'utente o l'account che riceve questa autorizzazione.

L'esempio di policy delle risorse seguente mostra gli elementi di policy comuni descritti in precedenza. La policy concede l'accesso all'API in base a quanto specificato *account-id* nel campo specificato *region* a qualsiasi utente il cui indirizzo IP di origine si trova nel blocco di indirizzi. *123.4.5.6/24* La policy nega l'accesso all'API se l'IP di origine dell'utente non rientra nell'intervallo.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:*"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "123.4.5.6/24"
                }
            }
        }
    ]
}
```

------

# Come le policy delle risorse API Gateway influiscono sul flusso di lavoro delle autorizzazioni
<a name="apigateway-authorization-flow"></a>

Quando API Gateway valuta la policy delle risorse collegata all'API, il risultato è influenzato dal tipo di autenticazione definito per l'API, come illustrato nei diagrammi nelle seguenti sezioni.

**Topics**
+ [Solo policy delle risorse API Gateway](#apigateway-authorization-flow-resource-policy-only)
+ [Autorizzazione Lambda e policy delle risorse](#apigateway-authorization-flow-lambda)
+ [Autenticazione IAM e policy delle risorse](#apigateway-authorization-flow-iam)
+ [Autenticazione Amazon Cognito e policy delle risorse](#apigateway-authorization-flow-cognito)
+ [Tabelle dei risultati della valutazione delle policy](#apigateway-resource-policies-iam-policies-interaction)

## Solo policy delle risorse API Gateway
<a name="apigateway-authorization-flow-resource-policy-only"></a>

In questo flusso di lavoro, una policy delle risorse API Gateway è collegata all'API, ma non viene definito alcun tipo di autenticazione per l'API. La valutazione della policy comporta la ricerca di un'autorizzazione esplicita basata sui criteri in entrata dell'intermediario. Un rifiuto implicito o esplicito comporta il rifiuto dell'intermediario.

![\[Flusso di autorizzazione solo di una policy delle risorse.\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/apigateway-auth-resource-policy-only.png)


Di seguito viene riportato un esempio di tale policy delle risorse.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:api-id/",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}
```

------

## Autorizzazione Lambda e policy delle risorse
<a name="apigateway-authorization-flow-lambda"></a>

In questo flusso di lavoro, un'autorizzazione Lambda è configurata per l'API in aggiunta a una policy delle risorse. La policy delle risorse viene valutata in due fasi. Prima di chiamare l'autorizzazione Lambda, API Gateway valuta innanzitutto la policy e controlla la presenza di eventuali negazioni esplicite. Se riscontrati, all'intermediario viene negato subito l'accesso. In caso contrario viene chiamata l'autorizzazione Lambda, che restituisce un [documento della policy](api-gateway-lambda-authorizer-output.md) che viene valutato insieme alla policy delle risorse. Se il sistema di autorizzazione utilizza il caching, Gateway API potrebbe restituire il documento di policy memorizzato nella cache. Il risultato è determinato in base alla [tabella A](#apigateway-resource-policies-iam-policies-interaction).

La seguente policy delle risorse di esempio autorizza le chiamate solo dall'endpoint VPC il cui ID è `vpce-1a2b3c4d`. Nella fase di valutazione "pre-autorizzazione", solo le chiamate provenienti dall'endpoint VPC indicato nell'esempio sono autorizzate a proseguire e a valutare l'autorizzazione Lambda. Tutte le chiamate rimanenti vengono bloccate. Questo flusso di lavoro di autorizzazione è lo stesso se si utilizza un nome di dominio personalizzato per un’API privata.

![\[Flusso di autorizzazione per una policy delle risorse e un sistema di autorizzazione Lambda.\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/apigateway-auth-lambda-resource-policy.png)


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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "arn:aws:execute-api:us-east-1:111111111111:api-id/"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
}
```

------

## Autenticazione IAM e policy delle risorse
<a name="apigateway-authorization-flow-iam"></a>

In questo flusso di lavoro, viene configurata un'autenticazione IAM per l'API in aggiunta a una policy delle risorse. Dopo l'autenticazione dell'utente con il servizio IAM, l'API valuta sia le policy collegate all'utente sia la policy delle risorse. Il risultato varia a seconda che il chiamante si trovi nello stesso account Account AWS o in un altro Account AWS, rispetto al proprietario dell'API. 

Se il chiamante e il proprietario dell'API sono in account diversi, il chiamante sarà autorizzato esplicitamente a procedere sia dalle policy dell'utente IAM sia dalla policy delle risorse. Per ulteriori informazioni, consulta la [tabella B](#apigateway-resource-policies-iam-policies-interaction). 

Tuttavia, se il chiamante e il proprietario dell'API si trovano nello stesso Account AWS, le policy dell'utente IAM o la policy delle risorse devono esplicitamente autorizzare il chiamante a proseguire. Per ulteriori informazioni, consulta la [tabella A](#apigateway-resource-policies-iam-policies-interaction).

![\[Flusso di autorizzazione per una policy delle risorse e un'autenticazione IAM.\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/apigateway-auth-iam-resource-policy.png)


Di seguito viene riportato un esempio di policy delle risorse multiaccount. Ipotizzando che la policy IAM contenga un'autorizzazione di questo tipo, questa policy delle risorse permette chiamate solo dal VPC il cui ID VPC è `vpc-2f09a348`. Per ulteriori informazioni, consulta la [tabella B](#apigateway-resource-policies-iam-policies-interaction).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "arn:aws:execute-api:us-east-1:111111111111:api-id/"
            ],
            "Condition" : {
                "StringEquals": {
                    "aws:SourceVpc": "vpc-2f09a348"
                    }
            }
        }
    ]
}
```

------

## Autenticazione Amazon Cognito e policy delle risorse
<a name="apigateway-authorization-flow-cognito"></a>

In questo flusso di lavoro, un [pool di utenti di Amazon Cognito](apigateway-integrate-with-cognito.md) è configurato per l'API in aggiunta a una policy delle risorse. API Gateway tenta innanzitutto di autenticare l'intermediario tramite Amazon Cognito. Questa operazione viene in genere eseguita tramite un [token JWT](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) fornito dall'intermediario. Se l'autenticazione va a buon fine, la policy delle risorse viene valutata in modo indipendente ed è richiesta un'autorizzazione esplicita. Un rifiuto o "non consentire né rifiutare" si traduce in un rifiuto. Di seguito è riportato un esempio di una policy delle risorse che potrebbe essere utilizzata insieme a pool di utenti di Amazon Cognito.

![\[Flusso di autorizzazione per una policy delle risorse e un sistema di autorizzazione di Amazon Cognito.\]](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/apigateway-auth-cognito-resource-policy.png)


Di seguito è riportato un esempio di politica delle risorse che consente chiamate solo da una fonte specificata IPs, presupponendo che il token di autenticazione Amazon Cognito contenga un'autorizzazione. Per ulteriori informazioni, consulta la [tabella B](#apigateway-resource-policies-iam-policies-interaction).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:111111111111:api-id/",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}
```

------

## Tabelle dei risultati della valutazione delle policy
<a name="apigateway-resource-policies-iam-policies-interaction"></a>

La tabella A riporta il comportamento risultante quando l'accesso a un'API di Gateway API è controllato da una policy IAM o da un sistema di autorizzazione Lambda e da una policy delle risorse Gateway API, entrambe nello stesso Account AWS.


| **Policy IAM (o sistema di autorizzazione Lambda)** | **Policy delle risorse Gateway API** | **Comportamento risultante** | 
| --- | --- | --- | 
| Abilita | Abilita | Abilita | 
| Abilita | Né Abilita né Rifiuta | Abilita | 
| Abilita | Rifiuta | Explicit Deny (rifiuto esplicito) | 
| Né Abilita né Rifiuta | Abilita | Abilita | 
| Né Abilita né Rifiuta | Né Abilita né Rifiuta | Rifiuto implicito | 
| Né Abilita né Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) | 
| Rifiuta | Abilita | Explicit Deny (rifiuto esplicito) | 
| Rifiuta | Né Abilita né Rifiuta | Explicit Deny (rifiuto esplicito) | 
| Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) | 

La Tabella B elenca il comportamento risultante quando l'accesso a un'API API Gateway è controllato da una policy IAM o da un autorizzatore di pool di utenti di Amazon Cognito e da una policy di risorse API Gateway, che sono diversi. Account AWS Se una delle due è silente (non permette né rifiuta). l'accesso multiaccount viene negato. Questo perché l'accesso multi-account richiede l'autorizzazione esplicita all'accesso sia dalla policy delle risorse sia dalla policy IAM o dal sistema di autorizzazione del pool di utenti di Amazon Cognito.


| **Policy IAM o sistema di autorizzazione del pool di utenti di Amazon Cognito** | **Policy delle risorse Gateway API** | **Comportamento risultante** | 
| --- | --- | --- | 
| Abilita | Abilita | Abilita | 
| Abilita | Né Abilita né Rifiuta | Rifiuto implicito | 
| Abilita | Rifiuta | Explicit Deny (rifiuto esplicito) | 
| Né Abilita né Rifiuta | Abilita | Rifiuto implicito | 
| Né Abilita né Rifiuta | Né Abilita né Rifiuta | Rifiuto implicito | 
| Né Abilita né Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) | 
| Rifiuta | Abilita | Explicit Deny (rifiuto esplicito) | 
| Rifiuta | Né Abilita né Rifiuta | Explicit Deny (rifiuto esplicito) | 
| Rifiuta | Rifiuta | Explicit Deny (rifiuto esplicito) | 

# Esempi di policy delle risorse API Gateway
<a name="apigateway-resource-policies-examples"></a>

Questa pagina include alcuni esempi di casi d'uso tipici per le policy delle risorse API Gateway.

Le policy di esempio seguenti utilizzano una sintassi semplificata per specificare la risorsa API. Questa sintassi semplificata è un modo abbreviato per fare riferimento a una risorsa API, invece di specificare l'Amazon Resource Name (ARN) completo. API Gateway converte la sintassi abbreviata nell'ARN completo quando si salva la policy. Ad esempio, è possibile specificare la risorsa `execute-api:/stage-name/GET/pets` in una policy delle risorse. API Gateway converte la risorsa in `arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets` quando si salva la policy delle risorse. API Gateway crea l'ARN completo utilizzando la regione corrente, l'ID dell' AWS account e l'ID dell'API REST a cui è associata la politica delle risorse. È possibile utilizzare `execute-api:/*` per rappresentare tutti gli stadi, i metodi e i percorsi nell'API corrente. Per informazioni sulla sintassi della/e policy di accesso, consulta [Panoramica della sintassi delle policy di accesso per Amazon API Gateway](apigateway-control-access-policy-language-overview.md).

**Topics**
+ [Esempio: consentire ai ruoli di un altro AWS account di utilizzare un'API](#apigateway-resource-policies-cross-account-example)
+ [Esempio: negare il traffico API in base all'indirizzo IP di origine o a un intervallo di indirizzi IP](#apigateway-resource-policies-source-ip-address-example)
+ [Esempio: rifiutare il traffico API in base all'indirizzo IP di origine o all'intervallo quando si utilizza un'API privata](#apigateway-resource-policies-source-ip-address-vpc-example)
+ [Esempio: consenti il traffico di API private in base all'endpoint VPC o al VPC sorgente](#apigateway-resource-policies-source-vpc-example)

## Esempio: consentire ai ruoli di un altro AWS account di utilizzare un'API
<a name="apigateway-resource-policies-cross-account-example"></a>

L'esempio seguente di policy in materia di risorse concede l'accesso dell'API in un AWS account a due ruoli in un AWS account diverso tramite i protocolli [Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html) (SigV4) o [Signature Version 4a (SigV4a](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html#how-sigv4a-works)). In particolare, allo sviluppatore e al ruolo di amministratore dell' AWS account identificato da `account-id-2` viene concessa l'azione per eseguire l'`execute-api:Invoke``GET`azione sulla `pets` risorsa (API) dell'account. AWS 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/developer",
                    "arn:aws:iam::111122223333:role/Admin"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/stage/GET/pets"
            ]
        }
    ]
}
```

------

## Esempio: negare il traffico API in base all'indirizzo IP di origine o a un intervallo di indirizzi IP
<a name="apigateway-resource-policies-source-ip-address-example"></a>

L'esempio di policy delle risorse seguente rifiuta (blocca) il traffico in ingresso verso un'API da due blocchi di indirizzi IP di origine specificati.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
               "execute-api:/*"
            ],
            "Condition" : {
                "IpAddress": {
                    "aws:SourceIp": ["192.0.2.0/24", "198.51.100.0/24" ]
                }
            }
        }
    ]
}
```

------

Se utilizzi policy utente IAM o policy di risorse API Gateway per controllare l'accesso ad API Gateway o a qualsiasi API Gateway APIs, conferma che le policy siano aggiornate per includere intervalli di IPv6 indirizzi. Le policy che non sono aggiornate per gestire IPv6 gli indirizzi potrebbero influire sull'accesso del cliente ad API Gateway quando inizia a utilizzare l'endpoint dualstack. Per ulteriori informazioni, consulta [Utilizzo IPv6 degli indirizzi nelle politiche IAM](api-ref.md#api-reference-service-endpoints-dualstack-iam).

## Esempio: rifiutare il traffico API in base all'indirizzo IP di origine o all'intervallo quando si utilizza un'API privata
<a name="apigateway-resource-policies-source-ip-address-vpc-example"></a>

L'esempio di policy delle risorse seguente rifiuta (blocca) il traffico in ingresso verso un'API da due blocchi di indirizzi IP di origine specificati. Quando si utilizza private APIs, l'endpoint VPC `execute-api` riscrive l'indirizzo IP di origine originale. La condizione `aws:VpcSourceIp` filtra la richiesta rispetto all'indirizzo IP del richiedente originale.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
               "execute-api:/*"
            ],
            "Condition" : {
                "IpAddress": {
                    "aws:VpcSourceIp": ["192.0.2.0/24", "198.51.100.0/24"]
                }
            }
        }
    ]
}
```

------

## Esempio: consenti il traffico di API private in base all'endpoint VPC o al VPC sorgente
<a name="apigateway-resource-policies-source-vpc-example"></a>

Le seguenti policy delle risorse di esempio consentono il traffico in entrata per un'API privata solo da un VPC o da un endpoint VPC specifici.

Questa policy della risorsa di esempio specifica il VPC di origine:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                   "aws:SourceVpc": "vpc-1a2b3c4d"
                }
            }
        }
    ]
}
```

------

Questa policy della risorsa di esempio specifica l'endpoint VPC di origine:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/*"
            ],
            "Condition" : {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
}
```

------

# Creazione e collegamento di una policy delle risorse API Gateway a un'API
<a name="apigateway-resource-policies-create-attach"></a>

Per consentire a un utente di accedere all'API chiamando il servizio di esecuzione dell'API, è necessario creare una policy delle risorse Gateway API e collegare la policy all'API. Il collegamento di una policy all'API comporta l'applicazione delle autorizzazioni della policy ai metodi dell'API. Se si aggiorna la policy delle risorse, è necessario implementare l'API.

**Topics**
+ [Prerequisiti](#apigateway-resource-policies-prerequisites)
+ [Collegamento di una policy delle risorse a un'API di Gateway API](#apigateway-resource-policies-create-attach-procedure)
+ [Risoluzione dei problemi relativi alla policy delle risorse](#apigateway-resource-policies-troubleshoot)

## Prerequisiti
<a name="apigateway-resource-policies-prerequisites"></a>

 Per aggiornare una policy delle risorse Gateway API, è necessario disporre delle autorizzazioni `apigateway:UpdateRestApiPolicy` e `apigateway:PATCH`.

Per un'API ottimizzata per l'edge o regionale, è possibile collegare la policy delle risorse all'API al momento della creazione o dopo che è stata implementata. Un'API privata non può essere implementata senza una policy delle risorse. Per ulteriori informazioni, consulta [REST privato APIs in API Gateway](apigateway-private-apis.md).

## Collegamento di una policy delle risorse a un'API di Gateway API
<a name="apigateway-resource-policies-create-attach-procedure"></a>

La procedura seguente mostra come collegare una policy delle risorse a un'API di Gateway API.

------
#### [ Console di gestione AWS ]

**Per collegare una policy delle risorse a un'API di API Gateway**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Scegliere una REST API.

1. Nel riquadro di navigazione principale, scegli **Policy delle risorse**.

1. Scegli **Crea policy**.

1. (Facoltativo) Scegli **Seleziona un modello** per generare una policy di esempio.

   Negli esempi di policy, i segnaposto sono racchiusi tra parentesi graffe doppie (`"{{placeholder}}"`). Sostituisci ogni segnaposto, incluse le parentesi graffe, con le informazioni necessarie.

1. Se non utilizzi uno dei modelli di esmepio, immetti la tua policy delle risorse.

1. Scegli **Save changes** (Salva modifiche).

Se l'API è stata distribuita in precedenza nella console API Gateway, sarà necessario ridistribuirla affinché la policy delle risorse diventi effettiva.

------
#### [ AWS CLI ]

Per utilizzare il AWS CLI per creare una nuova API e allegare ad essa una politica delle risorse, usa il seguente comando: [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)

```
aws apigateway create-rest-api \
    --name "api-name" \
    --policy "{\"jsonEscapedPolicyDocument\"}"
```

Per utilizzare AWS CLI per allegare una politica delle risorse a un'API esistente, utilizzare il [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)comando seguente: 

```
aws apigateway update-rest-api \
    --rest-api-id api-id \
    --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'
```

È inoltre possibile allegare la politica delle risorse come `policy.json` file separato e includerla nel [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)comando. Il [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)comando seguente crea una nuova API con una politica delle risorse:

```
aws apigateway create-rest-api \
    --name "api-name" \
    --policy file://policy.json
```

Il file `policy.json` è una policy delle risorse Gateway API, come descritto in [Esempio: negare il traffico API in base all'indirizzo IP di origine o a un intervallo di indirizzi IP](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example).

------
#### [ AWS CloudFormation ]

È possibile utilizzare CloudFormation per creare un'API con una politica delle risorse. L'esempio seguente crea una REST API con la policy delle risorse di esempio, come descritto in [Esempio: negare il traffico API in base all'indirizzo IP di origine o a un intervallo di indirizzi IP](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example). 

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Api:
    Type: 'AWS::ApiGateway::RestApi'
    Properties:
      Name: testapi
      Policy:
        Statement:
          - Action: 'execute-api:Invoke'
            Effect: Allow
            Principal: '*'
            Resource: 'execute-api:/*'
          - Action: 'execute-api:Invoke'
            Effect: Deny
            Principal: '*'
            Resource: 'execute-api:/*'
            Condition:
              IpAddress: 
                'aws:SourceIp': ["192.0.2.0/24", "198.51.100.0/24" ]
        Version: 2012-10-17		 	 	 
  Resource:
    Type: 'AWS::ApiGateway::Resource'
    Properties:
      RestApiId: !Ref Api
      ParentId: !GetAtt Api.RootResourceId
      PathPart: 'helloworld'
  MethodGet:
    Type: 'AWS::ApiGateway::Method'
    Properties:
      RestApiId: !Ref Api
      ResourceId: !Ref Resource
      HttpMethod: GET
      ApiKeyRequired: false
      AuthorizationType: NONE
      Integration:
        Type: MOCK
        RequestTemplates:
          application/json: '{"statusCode": 200}'
        IntegrationResponses:
          - StatusCode: 200
            ResponseTemplates:
              application/json: '{}'
      MethodResponses:
        - StatusCode: 200
          ResponseModels:
            application/json: 'Empty'
  ApiDeployment:
    Type: 'AWS::ApiGateway::Deployment'
    DependsOn:
      - MethodGet
    Properties:
      RestApiId: !Ref Api
      StageName: test
```

------

## Risoluzione dei problemi relativi alla policy delle risorse
<a name="apigateway-resource-policies-troubleshoot"></a>

La seguente guida può aiutare a risolvere i problemi relativi alla policy delle risorse.

### L'API restituisce \$1"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:\$1\$1\$1\$1\$1\$1\$1\$1/\$1\$1\$1\$1/\$1\$1\$1\$1/"\$1
<a name="apigateway-resource-policies-troubleshoot-auth"></a>

Nella politica delle risorse, se imposti il AWS Principal su un principale, ad esempio:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111111111111:role/developer",
                    "arn:aws:iam::111111111111:role/Admin"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": [
                "execute-api:/stage/GET/pets"
            ]
        }
    ]
}
```

------

Devi utilizzare l'autorizzazione `AWS_IAM` per ogni metodo dell'API, altrimenti l'API restituirà il messaggio di errore precedente. Per ulteriori indicazioni su come attivare l'autorizzazione `AWS_IAM` per un metodo, consulta [Metodi per REST APIs in API Gateway](how-to-method-settings.md).

### La policy delle risorse non viene aggiornata
<a name="apigateway-resource-policies-troubleshoot-deploy"></a>

 Se aggiorni la policy delle risorse dopo la creazione dell'API, dovrai distribuire l'API per propagare le modifiche dopo il collegamento della policy aggiornata. L'aggiornamento o il salvataggio della policy non modificherà il comportamento di runtime dell'API. Per ulteriori informazioni sulla distribuzione della tua API, vedi [Implementazione di REST API in Gateway API](how-to-deploy-api.md). 

### La policy delle risorse restituisce il seguente errore: Invalid policy document. Please check the policy syntax and ensure that Principals are valid.
<a name="apigateway-resource-policies-troubleshoot-invalid-principal"></a>

Per correggere questo errore, è consigliabile innanzitutto controllare la sintassi della policy. Per ulteriori informazioni, consulta [Panoramica della sintassi delle policy di accesso per Amazon API Gateway](apigateway-control-access-policy-language-overview.md). Si suggerisce anche di verificare che tutti i principali specificati siano validi e non siano stati eliminati.

Inoltre, se l'API si trova in una [Regione con consenso esplicito](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#optinregion), verificare che la Regione sia abilitata per tutti gli account della policy delle risorse. 

# AWS chiavi di condizione che possono essere utilizzate nelle politiche delle risorse di API Gateway
<a name="apigateway-resource-policies-aws-condition-keys"></a>

La tabella seguente contiene le chiavi di AWS condizione che possono essere utilizzate nelle politiche delle risorse per APIs API Gateway per ogni tipo di autorizzazione.

Per ulteriori informazioni sulle chiavi AWS condizionali, consulta [AWS Global Condition Context Keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).


| **Chiavi di condizione** | **Criteri** | **Necessita di `AuthN`?** | **Tipo di autorizzazione** | 
| --- | --- | --- | --- | 
| aws:CurrentTime | Nessuna | No | Tutti | 
| aws:EpochTime | Nessuna | No | Tutti | 
| aws:TokenIssueTime | La chiave è presente solo nelle richieste firmate utilizzando credenziali di sicurezza temporanee. | Sì | IAM | 
| aws:MultiFactorAuthPresent | La chiave è presente solo nelle richieste firmate utilizzando credenziali di sicurezza temporanee. | Sì | IAM | 
| aws:MultiFactorAuthAge | La chiave è presente solo se MFA è presente nelle richieste. | Sì | IAM | 
| aws:PrincipalAccount | Nessuna | Sì | IAM | 
| aws:PrincipalArn | Nessuna | Sì | IAM | 
| aws:PrincipalOrgID | Questa chiave viene inclusa nel contesto della richiesta solo se l'entità è membro di un'organizzazione. | Sì | IAM | 
| aws:PrincipalOrgPaths | Questa chiave viene inclusa nel contesto della richiesta solo se l'entità è membro di un'organizzazione. | Sì | IAM | 
| aws:PrincipalTag | Questa chiave è inclusa nel contesto della richiesta se l'entità utilizza un utente IAM con tag collegati. È inclusa per un'entità che utilizza un ruolo IAM con tag collegati o tag di sessione. | Sì | IAM | 
| aws:PrincipalType | Nessuna | Sì | IAM | 
| aws:Referer | La chiave è presente solo se il valore è fornito dall'intermediario nell'intestazione HTTP. | No | Tutti | 
| aws:SecureTransport | Nessuna | No | Tutti | 
| aws:SourceArn | Nessuna | No | Tutti | 
| aws:SourceIp | Nessuna | No | Tutti | 
| aws:SourceVpc | Questa chiave può essere utilizzata solo per uso privato APIs. | No | Tutti | 
| aws:SourceVpce | Questa chiave può essere usata solo per uso privato APIs. | No | Tutti | 
| aws:VpcSourceIp | Questa chiave può essere usata solo per uso privato APIs. | No | Tutti | 
| aws:UserAgent | La chiave è presente solo se il valore è fornito dall'intermediario nell'intestazione HTTP. | No | Tutti | 
| aws:userid | Nessuna | Sì | IAM | 
| aws:username | Nessuna | Sì | IAM | 