

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 autorizzazioni IAM
<a name="permissions"></a>

 Puoi controllare l'accesso all'API di Amazon API Gateway con le [autorizzazioni IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html) controllando l'accesso ai seguenti due processi componenti di API Gateway: 
+  Per creare, distribuire e gestire un'API in API Gateway, è necessario concedere allo sviluppatore dell'API le autorizzazioni per eseguire le operazioni richieste supportate dal componente di gestione dell'API di API Gateway. 
+  Per chiamare un'API distribuita o per aggiornare la memorizzazione nella cache dell'API, è necessario concedere all'intermediario dell'API le autorizzazioni per eseguire le operazioni IAM supportate dal componente di esecuzione dell'API di API Gateway. 

 Il controllo degli accessi per i due processi prevede l'uso dei due diversi modelli di autorizzazione illustrati più avanti.

## Modello di autorizzazione API Gateway per la creazione e la gestione di un'API
<a name="api-gateway-control-access-iam-permissions-model-for-managing-api"></a>

 Per consentire a uno sviluppatore di API di creare e gestire un'API in API Gateway, è necessario [creare le policy di autorizzazione IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) che consentono a uno sviluppatore di API specifico di creare, aggiornare, distribuire, visualizzare o eliminare le [entità API](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) richieste. È possibile collegare la policy delle autorizzazioni a un utente, un ruolo o un gruppo. 

Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
+ Utenti e gruppi in AWS IAM Identity Center:

  Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
+ Utenti gestiti in IAM tramite un provider di identità:

  Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
+ Utenti IAM:
  + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
  + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

Per ulteriori informazioni su come usare il modello di autorizzazione, consulta [Policy basate su identità dei API Gateway](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies). 

## Modello di autorizzazione API Gateway per invocare un'API
<a name="api-gateway-control-access-iam-permissions-model-for-calling-api"></a>

Per consentire a un chiamante dell'API di richiamare l'API o aggiornare la relativa memorizzazione nella cache, è necessario creare policy IAM che permettano al chiamante dell'API specificato di richiamare il metodo API per il quale è abilitata l'autenticazione dell'utente. Lo sviluppatore dell'API imposta la proprietà `authorizationType` del metodo su `AWS_IAM` per richiedere al chiamante di inviare le chiavi di accesso dell'utente per l'autenticazione. Gateway API supporta Signature Version 4a (SigV4a) e Signature Version 4 (SigV4) per autenticare le credenziali dell’utente. Per ulteriori informazioni, consultare [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html). Sarà quindi possibile collegare la policy all'utente, al gruppo o al ruolo. 

In questa istruzione di policy di autorizzazione IAM l'elemento IAM `Resource` contiene un elenco di metodi API distribuiti identificati da verbi HTTP e [percorsi di risorsa](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) API Gateway specifici. L'elemento IAM `Action` contiene le operazioni di esecuzione API di API Gateway richieste. Tali operazioni includono `execute-api:Invoke` o `execute-api:InvalidateCache`, dove `execute-api` designa il componente di esecuzione dell'API sottostante di API Gateway. 

Per ulteriori informazioni su come usare il modello di autorizzazione, consulta [Controllo degli accessi per invocare un'API](api-gateway-control-access-using-iam-policies-to-invoke-api.md). 

 Quando un'API è integrata con un AWS servizio (ad esempio AWS Lambda) nel backend, API Gateway deve disporre anche delle autorizzazioni per accedere a AWS risorse integrate (ad esempio, richiamando una funzione Lambda) per conto del chiamante dell'API. Per concedere queste autorizzazioni, crea un ruolo IAM del tipo **AWS service for API Gateway (Servizio AWS per API Gateway)**. Quando crei questo ruolo nella console di gestione IAM, tale ruolo contiene la policy di attendibilità IAM seguente, in base alla quale API Gateway viene dichiarato un'entità attendibile che può assumere quel ruolo: 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Se crei il ruolo IAM chiamando il comando [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) della CLI o un metodo SDK corrispondente, devi fornire la policy di attendibilità precedente come parametro di input di `assume-role-policy-document`. Non tentate di creare tale policy direttamente nella console di gestione IAM o di chiamare il comando AWS CLI [create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) o un metodo SDK corrispondente.

Affinché API Gateway richiami il AWS servizio integrato, devi anche associare a questo ruolo le politiche di autorizzazione IAM appropriate per la chiamata AWS ai servizi integrati. Ad esempio, per chiamare una funzione Lambda, devi includere la seguente policy di autorizzazione IAM nel ruolo IAM: 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "*"
        }
    ]
}
```

------

Lambda supporta le policy di accesso basate su risorse, che combinano policy di autorizzazione e di attendibilità. Quando integri un'API con una funzione Lambda utilizzando la console API Gateway, non ti viene richiesto di impostare questo ruolo IAM esplicitamente, poiché la console imposta automaticamente con il tuo consenso le autorizzazioni basate su risorse sulla funzione Lambda. 

**Nota**  
 Per implementare il controllo degli accessi a un AWS servizio, puoi utilizzare il modello di autorizzazioni basato sul chiamante, in cui una policy di autorizzazione è collegata direttamente all'utente o al gruppo del chiamante, oppure il modello di autorizzazione basato sui ruoli, in cui una policy di autorizzazioni è associata a un ruolo IAM che API Gateway può assumere. Le policy di autorizzazione possono differire nei due modelli. Ad esempio la policy basata su intermediario blocca l'accesso, mentre quella basata su ruolo lo consente. Puoi trarne vantaggio per richiedere che un utente acceda a un AWS servizio solo tramite un'API API Gateway. 

# Controllo degli accessi per invocare un'API
<a name="api-gateway-control-access-using-iam-policies-to-invoke-api"></a>

In questa sezione viene illustrato il modello di autorizzazioni per controllare l'accesso all'API utilizzando le autorizzazioni IAM. Quando l'autorizzazione IAM è abilitata, i client devono utilizzare Signature Version 4a (SigV4a) e Signature Version 4 (SigV4) per firmare le loro richieste con credenziali. AWS Per ulteriori informazioni, consultare [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html).

Questa sezione illustra un modello di istruzione di policy IAM e il riferimento all’istruzione di policy. Il riferimento all'istruzione di policy include i formati dei campi `Action` e `Resource` correlati al servizio di esecuzione dell'API. Si utilizzano questi riferimenti per creare l'istruzione di policy IAM. Quando si crea l'istruzione di policy IAM, è opportuno a volte considerare il modo in cui le policy delle risorse Gateway API influiscono sul flusso di lavoro di autorizzazione. Per ulteriori informazioni, consulta [Come le policy delle risorse API Gateway influiscono sul flusso di lavoro delle autorizzazioni](apigateway-authorization-flow.md).

Per uso privato APIs, è necessario utilizzare una combinazione di una policy per le risorse di API Gateway e una policy per gli endpoint VPC. Per ulteriori informazioni, consulta i seguenti argomenti:
+ [Controllo degli accessi a una REST API con le policy delle risorse Gateway API](apigateway-resource-policies.md)
+ [Usa le policy degli endpoint VPC per uso privato APIs in API Gateway](apigateway-vpc-endpoint-policies.md)

## Controllo di chi può chiamare un metodo API di API Gateway con le policy IAM
<a name="api-gateway-who-can-invoke-an-api-method-using-iam-policies"></a>

 Per controllare chi può o non può chiamare un'API distribuita con le autorizzazioni IAM, crea un documento di policy IAM con le autorizzazioni richieste. Di seguito viene mostrato un modello per questo tipo di documento di policy. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Permission",
      "Action": [
        "execute-api:Execution-operation"           
      ],
      "Resource": [
        "arn:aws:execute-api:region:123456789012:api-id/stage/METHOD_HTTP_VERB/Resource-path"
      ]
    }
  ]
}
```

------

 Nell'esempio riportato `Permission` deve essere sostituito da `Allow` o da `Deny` a seconda che si desideri concedere o revocare le autorizzazioni incluse. `Execution-operation` deve essere sostituito dalle operazioni supportate dal servizio di esecuzione dell'API. `METHOD_HTTP_VERB` indica un verbo HTTP supportato dalle risorse specificate. `Resource-path` è il segnaposto per il percorso URL dell'istanza `[Resource](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)` di un'API distribuita che supporta l'elemento `METHOD_HTTP_VERB` citato. Per ulteriori informazioni, consulta [Riferimento delle istruzioni delle policy IAM per l'esecuzione dell'API in API Gateway](#api-gateway-calling-api-permissions). 

**Nota**  
Affinché le policy IAM diventino effettive, devi avere abilitato l'autenticazione IAM sui metodi API impostando `AWS_IAM` per la proprietà `[authorizationType](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html#authorizationType)` del metodo. In caso contrario, questi metodi API saranno accessibili pubblicamente.

 Ad esempio, per concedere a un utente l'autorizzazione per visualizzare un elenco di animali domestici esposti tramite un'API specificata, rifiutandogli tuttavia l'autorizzazione per aggiungere un animale domestico all'elenco, è possibile includere nella policy IAM l'istruzione seguente: 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:111111111111:api-id/*/GET/pets"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "execute-api:Invoke"           
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:111111111111:api-id/*/POST/pets"
      ]
    }
  ]
}
```

------

Per concedere a un utente l'autorizzazione per visualizzare un animale domestico specifico esposto da un'API configurata come `GET /pets/{petId}`, è possibile includere nella policy IAM l'istruzione seguente:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:us-east-1:111122223333:api-id/*/GET/pets/a1b2"
            ]
        }
    ]
}
```

------

## Riferimento delle istruzioni delle policy IAM per l'esecuzione dell'API in API Gateway
<a name="api-gateway-calling-api-permissions"></a>

Le informazioni seguenti descrivono il formato Action e Resource delle istruzioni di policy IAM per le autorizzazioni di accesso per l'esecuzione di un'API.

### Formato dell'elemento Action delle autorizzazioni per l'esecuzione dell'API in API Gateway
<a name="api-gateway-iam-policy-action-format-for-executing-api"></a>

Il formato generale dell'espressione `Action` di esecuzione dell'API è il seguente:

```
execute-api:action
```

dove *action* è disponibile un'azione di esecuzione dell'API:
+ **\$1**, che rappresenta tutte le operazioni che seguono.
+ **Invoke**, utilizzato per invocare un'API su richiesta del client.
+ **InvalidateCache**, utilizzato per invalidare la cache dell'API su richiesta del client.

### Formato dell'elemento Resource delle autorizzazioni per l'esecuzione dell'API in API Gateway
<a name="api-gateway-iam-policy-resource-format-for-executing-api"></a>

Il formato generale dell'espressione `Resource` di esecuzione dell'API è il seguente:

```
arn:aws:execute-api:region:account-id:api-id/stage-name/HTTP-VERB/resource-path-specifier
```

dove:
+ *region*è la AWS regione (come **us-east-1** o **\$1** per tutte le AWS regioni) che corrisponde all'API distribuita per il metodo.
+ *account-id*è l'ID dell' AWS account a 12 cifre del proprietario dell'API REST. 
+ *api-id*è l'identificatore che API Gateway ha assegnato all'API per il metodo.
+ *stage-name*è il nome dello stadio associato al metodo.
+ *HTTP-VERB*è il verbo HTTP per il metodo. Può essere uno dei seguenti: GET, POST, PUT, DELETE, PATCH.
+ *resource-path-specifier*è il percorso del metodo desiderato.

**Nota**  
Se specifichi un carattere jolly (`*`), l'espressione `Resource` applica il carattere jolly al resto dell'espressione.

Alcuni esempi dell'espressione Resource includono:
+ **arn:aws:execute-api:\$1:\$1:\$1**per qualsiasi percorso di risorsa in qualsiasi fase, per qualsiasi API in qualsiasi AWS regione.
+ **arn:aws:execute-api:us-east-1:\$1:\$1**per qualsiasi percorso di risorsa in qualsiasi fase, per qualsiasi API nella AWS regione di`us-east-1`.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/\$1**per qualsiasi percorso di risorsa in qualsiasi fase, per l'API con l'identificatore di *api-id* nella AWS regione us-east-1.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/`test`/\$1**per qualsiasi percorso di risorsa nella fase di`test`, per l'API con l'identificatore di *api-id* nella AWS regione us-east-1.

Per ulteriori informazioni, consulta [Documentazione di riferimento Amazon Resource Name (ARN) API Gateway](arn-format-reference.md).

# Esempi di policy IAM per le autorizzazioni di esecuzione API
<a name="api-gateway-iam-policy-examples-for-api-execution"></a>

Per informazioni sui modelli di autorizzazioni e per altre informazioni di base, consulta [Controllo degli accessi per invocare un'API](api-gateway-control-access-using-iam-policies-to-invoke-api.md).

L'istruzione di policy seguente concede all'utente l'autorizzazione di chiamare qualsiasi metodo POST nel percorso `mydemoresource`, nella fase `test`, per l'API con l'identificatore `a123456789`, presupponendo che l'API corrispondente sia stata distribuita nella regione AWS us-east-1:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"
      ],
      "Resource": [
        "arn:aws:execute-api:us-east-1:*:a123456789/test/POST/my-demo-resource-path/*"
      ]
    }
  ]
}
```

------

L'istruzione di policy di esempio seguente concede all'utente l'autorizzazione di chiamare qualsiasi metodo nel percorso di risorsa `petstorewalkthrough/pets`, in qualsiasi fase, per l'API con l'identificativo `a123456789`, in qualsiasi regione AWS in cui è stata distribuita l'API corrispondente:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "execute-api:Invoke"
      ],
      "Resource": [
        "arn:aws:execute-api:*:*:a123456789/*/*/petstorewalkthrough/pets"
      ]
    }
  ]
}
```

------