

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Contrôle de l’accès à une API REST avec des autorisations IAM
<a name="permissions"></a>

 Vous contrôlez l’accès à votre API Amazon API Gateway avec les [autorisations IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html) en contrôlant l’accès aux deux processus de composant API Gateway suivants : 
+  Pour créer, déployer et gérer une API dans API Gateway, vous devez accorder les autorisations aux développeurs d’API pour qu’ils exécutent les actions requises prises en charge par le composant de gestion des API API Gateway. 
+  Pour appeler une API déployée ou pour actualiser la mise en cache de l’API, vous devez accorder les autorisations de l’appelant d’API pour exécuter les actions IAM obligatoires prises en charge par le composant de l’exécution d’API API Gateway. 

 Le contrôle d’accès pour les deux processus implique différents modèles d’autorisation, expliqués plus bas.

## Modèle d’autorisation API Gateway pour créer et gérer une API
<a name="api-gateway-control-access-iam-permissions-model-for-managing-api"></a>

 Pour permettre à un développeur d’API de créer et gérer une API dans API Gateway, vous devez [créer des politiques d’autorisation IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) qui permettent à un développeur d’API spécifié de créer, mettre à jour, déployer, afficher ou supprimer les [entités d’API](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) requises. Vous attachez la politique d’autorisations à un utilisateur, un rôle ou un groupe. 

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
+ Utilisateurs et groupes dans AWS IAM Identity Center :

  Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
+ Utilisateurs gérés dans IAM par un fournisseur d’identité :

  Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
+ Utilisateurs IAM :
  + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
  + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d’autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l’utilisateur IAM*.

Pour plus d’informations sur l’utilisation de ce modèle d’autorisation, consultez [Stratégies basées sur l'identité d'API Gateway](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies). 

## Modèle d’autorisation API Gateway pour l’appel d’une API
<a name="api-gateway-control-access-iam-permissions-model-for-calling-api"></a>

Pour permettre à un appelant d’API d’appeler l’API ou d’actualiser sa mise en cache, vous devez créer des politiques IAM qui permettent à un appelant d’API spécifié d’appeler la méthode d’API pour laquelle l’authentification d’utilisateur est activée. Le développeur d’API définit la propriété `authorizationType` de la méthode sur `AWS_IAM` pour imposer à l’appelant de soumettre les informations d’identification de l’utilisateur à l’authentification. API Gateway prend en charge Signature Version 4a (SigV4a) et Signature Version 4 (SigV4) pour authentifier les informations d’identification de l’utilisateur. Pour plus d’informations, consultez [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html). Vous pouvez ensuite attacher la politique à un utilisateur, un groupe ou un rôle. 

Dans cette déclaration de politique d’autorisation IAM, l’élément IAM `Resource` contient la liste des méthodes d’API déployées et identifiées par les verbes HTTP fournis et les [chemins d’accès des ressources](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html) API Gateway. L’élément IAM `Action` contient les actions d’exécution requises des API API Gateway. Ces actions incluent `execute-api:Invoke` ou `execute-api:InvalidateCache`, où `execute-api` désigne le composant d’exécution des API sous-jacent d’API Gateway. 

Pour plus d’informations sur l’utilisation de ce modèle d’autorisation, consultez [Contrôler l’accès pour l’appel d’une API](api-gateway-control-access-using-iam-policies-to-invoke-api.md). 

 Lorsqu'une API est intégrée à un AWS service (par exemple, AWS Lambda) dans le back-end, API Gateway doit également être autorisée à accéder aux AWS ressources intégrées (par exemple, en invoquant une fonction Lambda) au nom de l'appelant de l'API. Pour accorder ces autorisations, créez un rôle IAM du type **service AWS pour API Gateway**. Lorsque vous créez ce rôle dans la console de gestion IAM, le rôle résultant contient la politique d’approbation IAM suivante qui déclare API Gateway en tant qu’entité de confiance autorisée à assumer le rôle : 

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

****  

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

------

Si vous créez le rôle IAM en appelant la commande [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) de la CLI ou une méthode de kit SDK correspondante, vous devez fournir la politique d’approbation ci-dessus en tant que paramètre d’entrée de `assume-role-policy-document`. N'essayez pas de créer une telle politique directement dans la console de gestion IAM ou d'appeler la commande AWS CLI [create-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy.html) ou une méthode du SDK correspondante.

Pour qu'API Gateway puisse appeler le AWS service intégré, vous devez également associer à ce rôle des politiques d'autorisation IAM appropriées pour appeler les AWS services intégrés. Par exemple, pour appeler une fonction Lambda, vous devez inclure la politique d’autorisations IAM suivante dans le rôle IAM : 

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

****  

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

------

Notez que Lambda prend en charge la stratégie d’accès basée sur les ressources, qui combine les stratégies d’approbation et d’autorisation. Lors de l’intégration d’une API à une fonction Lambda à l’aide de la console API Gateway, il ne vous est pas demandé de définir ce rôle IAM explicitement, car la console définit pour vous les autorisations basées sur les ressources sur la fonction Lambda, avec votre consentement. 

**Note**  
 Pour mettre en place un contrôle d'accès à un AWS service, vous pouvez utiliser le modèle d'autorisation basé sur l'appelant, dans lequel une politique d'autorisation est directement attachée à l'utilisateur ou au groupe de l'appelant, ou le modèle d'autorisation basé sur les rôles, dans lequel une politique d'autorisation est attachée à un rôle IAM que API Gateway peut assumer. Les politiques d’autorisation peuvent varier dans les deux modèles. Par exemple, la politique basée sur l’appelant bloque l’accès tandis que la politique basée sur les rôles l’autorise. Vous pouvez en profiter pour demander à un utilisateur d'accéder à un AWS service uniquement via une API API Gateway. 

# Contrôler l’accès pour l’appel d’une API
<a name="api-gateway-control-access-using-iam-policies-to-invoke-api"></a>

Dans cette section, vous allez découvrir le modèle d’autorisation permettant de contrôler l’accès à votre API avec des autorisations IAM. Lorsque l'autorisation IAM est activée, les clients doivent utiliser la version de signature 4a (SIGv4a) et la version de signature 4 (Sigv4) pour signer leurs demandes avec des informations d'identification. AWS Pour plus d’informations, consultez [AWS Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html).

Dans cette section, nous allons vous présenter un modèle de déclaration de politique IAM et la référence de cette déclaration. La référence de la déclaration de politique inclut les formats des champs `Action` et `Resource` liés au service d’exécution des API. Utilisez ces références pour créer votre déclaration de politique IAM. Lorsque vous créez votre déclaration de politique IAM, tenez compte de la façon dont les politiques de ressources API Gateway affectent le flux d’autorisation. Pour de plus amples informations, veuillez consulter [Comment les politiques de ressources API Gateway affectent le flux de travail d’autorisation](apigateway-authorization-flow.md).

Pour le mode privé APIs, vous devez utiliser une combinaison d'une politique de ressources API Gateway et d'une politique de point de terminaison VPC. Pour plus d’informations, consultez les rubriques suivantes :
+ [Contrôle d’accès à une API REST avec des politiques de ressources API Gateway](apigateway-resource-policies.md)
+ [Utiliser les politiques de point de terminaison VPC pour le mode privé APIs dans API Gateway](apigateway-vpc-endpoint-policies.md)

## Contrôle des personnes habilitées à appeler une méthode d’API API Gateway avec les politiques IAM
<a name="api-gateway-who-can-invoke-an-api-method-using-iam-policies"></a>

 Pour contrôler qui peut ou non appeler une API déployée avec les autorisations IAM, créez un document de politique IAM avec les autorisations requises. Un modèle pour un tel document de politique est affiché comme suit. 

------
#### [ 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"
      ]
    }
  ]
}
```

------

 Ici, `Permission` doit être remplacé par `Allow` ou `Deny`, selon que vous voulez accorder ou révoquer les autorisations incluses. `Execution-operation` doit être remplacé par les opérations prises en charge par le service d’exécution des API. `METHOD_HTTP_VERB` représente un verbe HTTP pris en charge par les ressources spécifiées. `Resource-path` est l’espace réservé du chemin d’URL d’une instance `[Resource](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)` d’API déployée prenant en charge ledit verbe `METHOD_HTTP_VERB`. Pour de plus amples informations, veuillez consulter [Référence de déclaration de politique IAM pour l’exécution des API dans API Gateway](#api-gateway-calling-api-permissions). 

**Note**  
Pour que les politiques IAM soient efficaces, vous devez avoir activé l’authentification IAM sur les méthodes de l’API en définissant `AWS_IAM` pour la propriété `[authorizationType](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html#authorizationType)` de la méthode. Faute de quoi ces méthodes d’API seront accessibles au public.

 Par exemple, pour accorder à un utilisateur l’autorisation d’afficher la liste des « pets » exposés par une API spécifiée, mais lui refuser l’autorisation d’ajouter un « pet » à la liste, vous pouvez inclure la déclaration suivante dans la politique IAM : 

------
#### [ 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"
      ]
    }
  ]
}
```

------

Pour accorder à un utilisateur l’autorisation d’afficher un « pet » exposé spécifique par une API configurée en tant que `GET /pets/{petId}`, vous pouvez inclure la déclaration suivante dans la politique IAM :

------
#### [ 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"
            ]
        }
    ]
}
```

------

## Référence de déclaration de politique IAM pour l’exécution des API dans API Gateway
<a name="api-gateway-calling-api-permissions"></a>

Les informations suivantes décrivent le format des expressions Action et Resource des déclarations de politique IAM d’autorisation d’accès pour l’exécution d’une API.

### Format de l’expression Action des autorisations d’exécution d’API dans API Gateway
<a name="api-gateway-iam-policy-action-format-for-executing-api"></a>

L’expression `Action` des autorisations d’exécution d’API a le format général suivant :

```
execute-api:action
```

où se *action* trouve une action d'exécution d'API disponible :
+ **\$1**, qui représente l’ensemble des actions suivantes.
+ **Invoke**, utilisée pour appeler une API sur demande d’un client.
+ **InvalidateCache**, utilisée pour invalider le cache API sur demande d'un client.

### Format de l’expression Resource des autorisations d’exécution d’API dans API Gateway
<a name="api-gateway-iam-policy-resource-format-for-executing-api"></a>

L’expression `Resource` des autorisations d’exécution d’API a le format général suivant :

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

où :
+ *region*est la AWS région (telle que **us-east-1** ou **\$1** pour toutes les AWS régions) qui correspond à l'API déployée pour la méthode.
+ *account-id*est l'identifiant de AWS compte à 12 chiffres du propriétaire de l'API REST. 
+ *api-id*est l'identifiant qu'API Gateway a attribué à l'API pour la méthode.
+ *stage-name*est le nom de l'étape associée à la méthode.
+ *HTTP-VERB*est le verbe HTTP de la méthode. Les valeurs possibles sont GET, POST, PUT, DELETE, PATCH.
+ *resource-path-specifier*est le chemin d'accès à la méthode souhaitée.

**Note**  
Si vous spécifiez un caractère générique (`*`), l’expression `Resource` applique le caractère générique au reste de l’expression.

Voici quelques exemples d’expression Resource :
+ **arn:aws:execute-api:\$1:\$1:\$1**pour n'importe quel chemin de ressource à n'importe quelle étape, pour n'importe quelle API dans n'importe quelle AWS région.
+ **arn:aws:execute-api:us-east-1:\$1:\$1**pour tout chemin de ressource à n'importe quelle étape, pour toute API de la AWS région de`us-east-1`.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/\$1**pour tout chemin de ressource à n'importe quelle étape, pour l'API dont l'identifiant est *api-id* dans la AWS région de us-east-1.
+ **arn:aws:execute-api:us-east-1:\$1:*api-id*/`test`/\$1**pour tout chemin de ressource au stade de`test`, pour l'API dont l'identifiant est situé *api-id* dans la AWS région us-east-1.

Pour en savoir plus, veuillez consulter la section [Référence Amazon Resource Name (ARN) API Gateway](arn-format-reference.md).

# Exemples de politiques IAM pour les autorisations d’exécution d’API
<a name="api-gateway-iam-policy-examples-for-api-execution"></a>

Pour en savoir plus sur les modèles d’autorisation et pour d’autres informations générales, consultez [Contrôler l’accès pour l’appel d’une API](api-gateway-control-access-using-iam-policies-to-invoke-api.md).

La déclaration de politique suivante donne à l’utilisateur l’autorisation d’appeler n’importe quelle méthode POST sur le chemin `mydemoresource`, à l’étape `test`, pour l’API avec l’identifiant `a123456789`, en supposant que l’API correspondante a été déployée dans la région 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’exemple de déclaration de politique suivant accorde à l’utilisateur l’autorisation d’appeler n’importe quelle méthode sur le chemin de ressource `petstorewalkthrough/pets`, à n’importe quelle étape, pour l’API ayant l’identifiant `a123456789`, dans n’importe quelle région AWS où l’API correspondante a été déployée :

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

****  

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

------