

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 d’accès à une API REST avec des politiques de ressources API Gateway
<a name="apigateway-resource-policies"></a>

Les *politiques de ressources* Amazon API Gateway sont des documents de politique JSON que vous attachez à une API pour contrôler si un principal spécifié (généralement un groupe ou un rôle IAM) peut appeler l’API. Vous pouvez utiliser des politiques de ressources API Gateway pour autoriser l’appel sécurisé de votre API par :
+ Utilisateurs d'un AWS compte spécifié.
+ les plages d’adresses IP ou les blocs d’adresse CIDR d’un source spécifiée ;
+ Clouds privés virtuels (VPCs) ou points de terminaison VPC spécifiés (quel que soit le compte).

Vous pouvez joindre une politique de ressources pour n'importe quel type de point de terminaison d'API dans API Gateway à l' AWS Management Console aide de la AWS CLI ou AWS SDKs. Pour le [mode privé APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html), vous pouvez utiliser des politiques de ressources ainsi que des politiques de point de terminaison VPC pour contrôler quels principaux ont accès à quelles ressources et actions. Pour de plus amples informations, veuillez consulter [Utiliser les politiques de point de terminaison VPC pour le mode privé APIs dans API Gateway](apigateway-vpc-endpoint-policies.md).

 Les politiques de ressources API Gateway sont différentes des politiques basées sur l’identité IAM. Les politiques basées sur l’identité IAM sont attachées à des utilisateurs, groupes ou rôles IAM et définissent les actions que ces identités sont capables d’exécuter, ainsi que les ressources sur lesquelles peuvent porter ces actions. Les politiques de ressources API Gateway sont attachées à des ressources. Vous pouvez utiliser des politiques de ressources API Gateway avec les politiques IAM. Pour plus d’informations, consultez [Politiques basées sur l’identité et politiques basées sur une ressource](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

**Topics**
+ [Présentation du langage de la politique d’accès pour Amazon API Gateway](apigateway-control-access-policy-language-overview.md)
+ [Comment les politiques de ressources API Gateway affectent le flux de travail d’autorisation](apigateway-authorization-flow.md)
+ [Exemples de politiques de ressources API Gateway](apigateway-resource-policies-examples.md)
+ [Création et attachement d’une politique de ressources API Gateway à une API](apigateway-resource-policies-create-attach.md)
+ [AWS clés de condition pouvant être utilisées dans les politiques de ressources d'API Gateway](apigateway-resource-policies-aws-condition-keys.md)

# Présentation du langage de la politique d’accès pour Amazon API Gateway
<a name="apigateway-control-access-policy-language-overview"></a>

Cette page décrit les éléments de base utilisés dans les politiques de ressources Amazon API Gateway.

Les politiques de ressources sont spécifiées en utilisant la même syntaxe que dans les politiquess IAM. Pour obtenir des informations complètes sur le langage de politique d’accès, consultez [Présentation des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) et [Référence des politiques Gestion des identités et des accès AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) dans le *Guide de l’utilisateur IAM*.

Pour plus d'informations sur la manière dont un AWS service décide si une demande donnée doit être autorisée ou refusée, voir [Déterminer si une demande est autorisée ou refusée](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow).

## Éléments courants dans une stratégie d’accès
<a name="apigateway-common-elements-in-an-access-policy"></a>

Une politique de ressources contient à la base les éléments suivants :
+ **Ressources** : APIs il s'agit des ressources Amazon API Gateway pour lesquelles vous pouvez autoriser ou refuser des autorisations. Dans une politique, vous pouvez utiliser l’Amazon Resource Name (ARN) pour identifier la ressource. Vous pouvez également utiliser une syntaxe abrégée, qui sera automatiquement développée par API Gateway en ARN complet lors de l’enregistrement d’une politique de ressources. Pour en savoir plus, veuillez consulter la section [Exemples de politiques de ressources API Gateway](apigateway-resource-policies-examples.md).

  Pour connaître le format de l’élément `Resource` complet, consultez [Format de l’expression Resource des autorisations d’exécution d’API dans API Gateway](api-gateway-control-access-using-iam-policies-to-invoke-api.md#api-gateway-iam-policy-resource-format-for-executing-api).
+ **Actions** – pour chaque ressource, Amazon API Gateway prend en charge un ensemble d’opérations. Vous identifiez les opérations de ressource que vous accordez (ou refusez) en utilisant des mots clés d’action.

  Par exemple, l’autorisation `execute-api:Invoke` va permettre à l’utilisateur d’appeler une API sur demande d’un client.

  Pour connaître le format de l’élément `Action`, consultez [Format de l’expression Action des autorisations d’exécution d’API dans API Gateway](api-gateway-control-access-using-iam-policies-to-invoke-api.md#api-gateway-iam-policy-action-format-for-executing-api).
+ **Effet** – L’effet produit lorsque l’utilisateur demande une action spécifique. Il peut s’agir de `Allow` ou `Deny`. Vous pouvez aussi explicitement refuser l’accès à une ressource, ce que vous pouvez faire afin de vous assurer qu’un utilisateur n’y a pas accès, même si une politique différente octroie l’accès. 
**Note**  
« Refus implicite » est la même chose que « Refus par défaut ».  
Un « refus implicite » est différent d’un « refus explicite ». Pour plus d’informations, consultez [Différence entre refus par défaut et refus explicite](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#AccessPolicyLanguage_Interplay).
+ **Principal** – Compte ou utilisateur autorisé à accéder aux actions ou ressources dans l’instruction. Dans une politique de ressources, le principal est l’utilisateur ou le compte qui reçoit cette autorisation.

L’exemple de politique de ressources suivant montre les éléments de politique courants précédemment évoqués. La politique accorde l'accès à l'API selon les termes spécifiés *account-id* *region* à tout utilisateur dont l'adresse IP source se trouve dans le bloc d'adresses*123.4.5.6/24*. La politique refuse tout accès à l’API si l’adresse IP source de l’utilisateur n’est pas comprise dans cette plage.

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

------

# Comment les politiques de ressources API Gateway affectent le flux de travail d’autorisation
<a name="apigateway-authorization-flow"></a>

Lorsqu’API Gateway évalue la politique de ressources attachée à votre API, le résultat est affecté par le type d’authentification que vous avez défini pour l’API, comme illustré dans les diagrammes présentés dans les sections suivantes.

**Topics**
+ [Politique de ressources API Gateway uniquement](#apigateway-authorization-flow-resource-policy-only)
+ [Mécanisme d’autorisation Lambda et politique de ressources](#apigateway-authorization-flow-lambda)
+ [Politique de ressources et authentification IAM](#apigateway-authorization-flow-iam)
+ [Politique de ressources et d’authentification Amazon Cognito](#apigateway-authorization-flow-cognito)
+ [Tableaux de résultat des évaluations de politiques](#apigateway-resource-policies-iam-policies-interaction)

## Politique de ressources API Gateway uniquement
<a name="apigateway-authorization-flow-resource-policy-only"></a>

Dans ce flux de travail, une politique de ressources API Gateway est attachée à l’API, mais aucun type d’authentification n’est défini pour l’API. L’évaluation de la politique consiste à obtenir une autorisation explicite en fonction des critères entrants de l’appelant. Un refus implicite ou explicite entraîne le refus de l’appelant.

![\[Flux d’autorisation pour une politique de ressources uniquement.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/apigateway-auth-resource-policy-only.png)


Voici un exemple de politique de ressources.

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

------

## Mécanisme d’autorisation Lambda et politique de ressources
<a name="apigateway-authorization-flow-lambda"></a>

Dans ce flux de travail, un mécanisme d’autorisation Lambda est configuré pour l’API en plus d’une politique de ressources. La politique de ressources est évaluée en deux phases. Avant d’appeler le mécanisme d’autorisation Lambda, API Gateway évalue la politique et vérifie tout refus explicite. S’il en trouve, l’accès sera immédiatement refusé à l’utilisateur. Sinon, le mécanisme d’autorisation Lambda est appelé et renvoie un [document de politique](api-gateway-lambda-authorizer-output.md) évalué avec la politique de ressources. Si votre mécanisme d’autorisation utilise la mise en cache, API Gateway peut renvoyer le document de politique mis en cache. Le résultat est déterminé sur la base du [tableau A](#apigateway-resource-policies-iam-policies-interaction).

Dans l’exemple de politique de ressources suivant, les appels sont autorisés uniquement à partir du point de terminaison de VPC dont l’ID est `vpce-1a2b3c4d`. Pendant l’évaluation d’authentification préalable, seuls les appels provenant du point de terminaison de VPC indiqué dans l’exemple peuvent continuer et évaluer le mécanisme d’autorisation Lambda. Tous les appels restants sont bloqués. Ce flux de travail d’autorisation est le même si vous utilisez un nom de domaine personnalisé pour une API privée.

![\[Flux d’autorisation pour une politique de ressources et un mécanisme d’autorisation Lambda.\]](http://docs.aws.amazon.com/fr_fr/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"
                }
            }
        }
    ]
}
```

------

## Politique de ressources et authentification IAM
<a name="apigateway-authorization-flow-iam"></a>

Dans ce flux de travail, vous configurez l’authentification IAM pour l’API en plus d’une politique de ressources. Une fois que vous avez authentifié l’utilisateur auprès du service IAM, l’API évalue à la fois les politiques attachées à l’utilisateur et la politique de ressources. Le résultat varie selon que l'appelant est le même que le propriétaire de Compte AWS l'API Compte AWS ou non. 

Si l’appelant et le propriétaire de l’API relèvent de comptes distincts, les politiques IAM et la politique de ressources autorisent toutes deux explicitement l’appelant à continuer. Pour plus d’informations, consultez [Tableau B](#apigateway-resource-policies-iam-policies-interaction). 

Cependant, si l’appelant et le propriétaire de l’API relèvent du même Compte AWS, les politiques utilisateur IAM ou la politique de ressources doivent explicitement autoriser l’appelant à continuer. Pour plus d’informations, consultez [Tableau A](#apigateway-resource-policies-iam-policies-interaction).

![\[Flux d’autorisation pour une politique de ressources et une authentification IAM.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/apigateway-auth-iam-resource-policy.png)


Voici un exemple de politique de ressources entre comptes. À supposer que la politique IAM contient un effet Allow (Autoriser), cette politique de ressources autorise uniquement les appels du VPC dont l’ID est `vpc-2f09a348`. Pour plus d’informations, consultez [Tableau 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"
                    }
            }
        }
    ]
}
```

------

## Politique de ressources et d’authentification Amazon Cognito
<a name="apigateway-authorization-flow-cognito"></a>

Dans ce flux de travail, un [groupe d’utilisateurs Amazon Cognito](apigateway-integrate-with-cognito.md) est configuré pour l’API en plus d’une politique de ressources. API Gateway tente d’abord d’authentifier l’appelant via Amazon Cognito. Ceci est généralement effectué via un [jeton JWT](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html) fourni par l’appelant. Si l’authentification est réussie, la politique de ressources est évaluée de façon indépendante, et une autorisation explicite est requise. Un refus ou « ni autoriser ni refuser » entraîne un refus. Voici un exemple de politique de ressources pouvant être utilisée avec des groupes d’utilisateurs Amazon Cognito.

![\[Flux d’autorisation pour une politique de ressources et un mécanisme d’autorisation Amazon Cognito.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/apigateway-auth-cognito-resource-policy.png)


Voici un exemple de politique de ressources qui autorise les appels uniquement à partir d'une source spécifiée IPs, en supposant que le jeton d'authentification Amazon Cognito contienne une autorisation. Pour plus d’informations, consultez [Tableau 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" ]
                }
            }
        }
    ]
}
```

------

## Tableaux de résultat des évaluations de politiques
<a name="apigateway-resource-policies-iam-policies-interaction"></a>

Le tableau A répertorie le comportement obtenu lorsque l’accès à une API API Gateway est contrôlé par une politique IAM ou un mécanisme d’autorisation Lambda et une politique de ressources API Gateway, qui se trouvent toutes les deux dans le même Compte AWS.


| **Politique IAM (ou mécanisme d’autorisation Lambda)** | **Politique de ressources API Gateway** | **Comportement obtenu** | 
| --- | --- | --- | 
| Autorisation | Autorisation | Autorisation | 
| Autorisation | Ni autorisation ni refus | Autorisation | 
| Autorisation | Refuser | Refus explicite | 
| Ni autorisation ni refus | Autorisation | Autorisation | 
| Ni autorisation ni refus | Ni autorisation ni refus | Refus implicite | 
| Ni autorisation ni refus | Refuser | Refus explicite | 
| Refuser | Autorisation | Refus explicite | 
| Refuser | Ni autorisation ni refus | Refus explicite | 
| Refuser | Refuser | Refus explicite | 

Le tableau B répertorie le comportement qui en résulte lorsque l'accès à une API API Gateway est contrôlé par une politique IAM ou un autorisateur de groupes d'utilisateurs Amazon Cognito et une politique de ressources API Gateway, qui sont différentes. Comptes AWS Si l’un des deux est silencieux (pas d’autorisation ni de refus), l’accès entre comptes est refusé. En effet, l’accès intercompte nécessite que la politique de ressources et la politique IAM ou le mécanisme d’autorisation des groupes d’utilisateurs Amazon Cognito accordent explicitement l’accès.


| **Politique IAM (ou mécanisme d’autorisation des groupes d’utilisateurs Amazon Cognito)** | **Politique de ressources API Gateway** | **Comportement obtenu** | 
| --- | --- | --- | 
| Autorisation | Autorisation | Autorisation | 
| Autorisation | Ni autorisation ni refus | Refus implicite | 
| Autorisation | Refuser | Refus explicite | 
| Ni autorisation ni refus | Autorisation | Refus implicite | 
| Ni autorisation ni refus | Ni autorisation ni refus | Refus implicite | 
| Ni autorisation ni refus | Refuser | Refus explicite | 
| Refuser | Autorisation | Refus explicite | 
| Refuser | Ni autorisation ni refus | Refus explicite | 
| Refuser | Refuser | Refus explicite | 

# Exemples de politiques de ressources API Gateway
<a name="apigateway-resource-policies-examples"></a>

Cette page présente quelques exemples de cas d’utilisation standard des politiques de ressources API Gateway.

Les exemples de politique suivants utilisent une syntaxe simplifiée pour spécifier la ressource d’API. Cette syntaxe simplifiée est une façon abrégée qui vous permet de faire référence à une ressource d’API plutôt que de spécifier l’Amazon Resource Name (ARN) complet. API Gateway convertit la syntaxe abrégée en ARN complet lorsque vous enregistrez la politique. Par exemple, vous pouvez spécifier la ressource `execute-api:/stage-name/GET/pets` dans une politique de ressources. API Gateway convertit la ressource `arn:aws:execute-api:us-east-2:123456789012:aabbccddee/stage-name/GET/pets` lorsque vous enregistrez la politique de ressources. API Gateway crée l'ARN complet en utilisant la région actuelle, votre ID de AWS compte et l'ID de l'API REST à laquelle la politique de ressources est associée. Vous pouvez utiliser `execute-api:/*` pour représenter toutes les étapes, méthodes et chemins dans l’API actuelle. Pour en savoir plus sur le langage de la politique d’accès, consultez [Présentation du langage de la politique d’accès pour Amazon API Gateway](apigateway-control-access-policy-language-overview.md).

**Topics**
+ [Exemple : autoriser les rôles d'un autre AWS compte à utiliser une API](#apigateway-resource-policies-cross-account-example)
+ [Exemple : refuser le trafic API en fonction de l’adresse IP source ou de la plage](#apigateway-resource-policies-source-ip-address-example)
+ [Exemple : Refuser le trafic API en fonction de l’adresse IP source ou de la plage lors de l’utilisation d’une API privée](#apigateway-resource-policies-source-ip-address-vpc-example)
+ [Exemple : autoriser le trafic de l’API privée en fonction du point de terminaison d’un VPC ou d’un VPC source](#apigateway-resource-policies-source-vpc-example)

## Exemple : autoriser les rôles d'un autre AWS compte à utiliser une API
<a name="apigateway-resource-policies-cross-account-example"></a>

L'exemple de politique de ressources suivant accorde l'accès à l'API dans un AWS compte à deux rôles dans un AWS compte différent via les [protocoles Signature Version 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html) (SigV4) ou [Signature Version 4a](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html#how-sigv4a-works) (SigV4a). Plus précisément, le rôle de développeur et d'administrateur du AWS compte identifié par `account-id-2` est autorisé à exécuter l'`GET`action sur la `pets` ressource (API) de votre AWS compte. `execute-api:Invoke`

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

------

## Exemple : refuser le trafic API en fonction de l’adresse IP source ou de la plage
<a name="apigateway-resource-policies-source-ip-address-example"></a>

L’exemple de politique de ressources suivant refuse (bloque) le trafic entrant vers une API à partir de deux blocs d’adresses IP source spécifiés.

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

------

Si vous utilisez des politiques utilisateur IAM ou des politiques de ressources API Gateway pour contrôler l'accès à API Gateway ou à toute autre API Gateway APIs, vérifiez que vos politiques sont mises à jour pour inclure les plages d' IPv6 adresses. Les politiques qui ne sont pas mises à jour pour gérer IPv6 les adresses peuvent avoir un impact sur l'accès du client à API Gateway lorsqu'il commence à utiliser le point de terminaison dualstack. Pour de plus amples informations, veuillez consulter [Utilisation des IPv6 adresses dans les politiques IAM](api-ref.md#api-reference-service-endpoints-dualstack-iam).

## Exemple : Refuser le trafic API en fonction de l’adresse IP source ou de la plage lors de l’utilisation d’une API privée
<a name="apigateway-resource-policies-source-ip-address-vpc-example"></a>

L’exemple de politique de ressources suivant refuse (bloque) le trafic entrant vers une API privée à partir de deux blocs d’adresses IP source spécifiés. Lorsque vous utilisez le mode privé APIs, le point de terminaison VPC pour `execute-api` réécrit l'adresse IP source d'origine. La condition `aws:VpcSourceIp` filtre la demande par rapport à l’adresse IP du demandeur d’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" : {
                "IpAddress": {
                    "aws:VpcSourceIp": ["192.0.2.0/24", "198.51.100.0/24"]
                }
            }
        }
    ]
}
```

------

## Exemple : autoriser le trafic de l’API privée en fonction du point de terminaison d’un VPC ou d’un VPC source
<a name="apigateway-resource-policies-source-vpc-example"></a>

L’exemple de politiques de ressources suivant autorise le trafic entrant vers une API privée uniquement à partir d’un VPC (Virtual Private Cloud) spécifié ou d’un point de terminaison d’un VPC.

Cet exemple de politique de ressources spécifie un VPC source :

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

------

Cet exemple de politique de ressources spécifie un point de terminaison d’un VPC source :

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

------

# Création et attachement d’une politique de ressources API Gateway à une API
<a name="apigateway-resource-policies-create-attach"></a>

Pour permettre à un utilisateur d’accéder à votre API en appelant le service d’exécution des API, vous devez créer une politique de ressources API Gateway et l’attacher à l’API. Lorsque vous attachez une politique votre API, celle-ci applique les autorisations de la politique aux méthodes de l’API. En cas de mise à jour de la politique de ressources, vous devrez déployer l’API.

**Topics**
+ [Conditions préalables](#apigateway-resource-policies-prerequisites)
+ [Attachement d’une politique de ressources à une API API Gateway](#apigateway-resource-policies-create-attach-procedure)
+ [Résolution des problèmes liés à votre politique de ressources](#apigateway-resource-policies-troubleshoot)

## Conditions préalables
<a name="apigateway-resource-policies-prerequisites"></a>

 Pour mettre à jour une politique de ressources API Gateway, vous devez disposer des autorisations `apigateway:UpdateRestApiPolicy` et `apigateway:PATCH`.

Pour une API optimisée pour la périphérie ou régionale, vous pouvez attacher votre politique de ressources à votre API lors de sa création ou après son déploiement. Pour une API privée, vous ne pouvez pas déployer votre API sans politique de ressources. Pour de plus amples informations, veuillez consulter [REST privé APIs dans API Gateway](apigateway-private-apis.md).

## Attachement d’une politique de ressources à une API API Gateway
<a name="apigateway-resource-policies-create-attach-procedure"></a>

La procédure suivante vous montre comment attacher une politique de ressources à une API API Gateway.

------
#### [ AWS Management Console ]

**Pour attacher une politique de ressources à une API API Gateway**

1. Connectez-vous à la console API Gateway à l'adresse [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Choisissez une API REST.

1. Dans le panneau de navigation principal, choisissez **Stratégie de ressources**.

1. Choisissez **Create Policy** (Créer une stratégie).

1. (Facultatif) Choisissez **Sélectionnez un modèle** pour générer un exemple de politique.

   Dans les exemples de politiques, les espaces réservés sont délimitées par des doubles accolades (`"{{placeholder}}"`). Remplacez chacun des espaces réservés (y compris les accolades) par les informations nécessaires.

1. Si vous n’utilisez pas l’un des exemples de modèle, entrez votre politique de ressources.

1. Sélectionnez **Enregistrer les modifications**.

Si l’API a déjà été déployée dans la console API Gateway, vous devez la redéployer pour que la politique de ressources prenne effet.

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

 AWS CLI Pour créer une nouvelle API et y associer une politique de ressources, utilisez la [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)commande suivante :

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

 AWS CLI Pour associer une politique de ressources à une API existante, utilisez la [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)commande suivante : 

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

Vous pouvez également joindre votre politique de ressources dans un `policy.json` fichier distinct et l'inclure dans votre [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)commande. La [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)commande suivante crée une nouvelle API avec une politique de ressources :

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

`policy.json` est une politique de ressources API Gateway, comme [Exemple : refuser le trafic API en fonction de l’adresse IP source ou de la plage](apigateway-resource-policies-examples.md#apigateway-resource-policies-source-ip-address-example).

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

Vous pouvez l'utiliser CloudFormation pour créer une API avec une politique de ressources. L’exemple suivant crée une API REST avec l’exemple de politique de ressources [Exemple : refuser le trafic API en fonction de l’adresse IP source ou de la plage](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
```

------

## Résolution des problèmes liés à votre politique de ressources
<a name="apigateway-resource-policies-troubleshoot"></a>

Les conseils suivants peuvent vous aider à résoudre les problèmes liés à votre politique de ressources.

### Mon API renvoie \$1"Message":"L’utilisateur: anonyme n’est pas autorisé à exécuter : execute-api:Invoke sur la ressource : 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>

Dans votre politique de ressources, si vous attribuez au principal un AWS principal, tel que ce qui suit :

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

------

Vous devez utiliser l’autorisation `AWS_IAM` pour chaque méthode de votre API, sinon votre API renvoie le message d’erreur précédent. Pour plus d’instructions sur l’activation de l’autorisation `AWS_IAM` pour une méthode, consultez [Méthodes pour REST APIs dans API Gateway](how-to-method-settings.md).

### Ma politique de ressources n’est pas mise à jour
<a name="apigateway-resource-policies-troubleshoot-deploy"></a>

 Si vous mettez à jour la politique de ressources une fois l’API créée, vous devez déployer l’API pour propager les changements une fois le rattachement de la politique mise à jour effectué. La simple mise à jour ou le simple enregistrement de la politique ne modifie pas le comportement d’exécution de l’API. Pour plus d’informations sur le déploiement de votre API, consultez [Déploiement d’une API REST dans API Gateway](how-to-deploy-api.md). 

### Ma politique de ressources renvoie l’erreur suivante : document de politique non valide. Vérifiez la syntaxe de la politique et assurez-vous que les principaux sont valides.
<a name="apigateway-resource-policies-troubleshoot-invalid-principal"></a>

Pour corriger cette erreur, nous vous recommandons de vérifier d’abord la syntaxe de la politique. Pour de plus amples informations, veuillez consulter [Présentation du langage de la politique d’accès pour Amazon API Gateway](apigateway-control-access-policy-language-overview.md). Nous vous recommandons également de vérifier que tous les principaux spécifiés sont valides et n’ont pas été supprimés.

En outre, si votre API se trouve dans une [région d’acceptation](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#optinregion), vérifiez que la région est activée pour tous les comptes de la politique de ressources. 

# AWS clés de condition pouvant être utilisées dans les politiques de ressources d'API Gateway
<a name="apigateway-resource-policies-aws-condition-keys"></a>

Le tableau suivant contient les clés de AWS condition qui peuvent être utilisées dans les politiques de ressources d'API Gateway pour chaque type d'autorisation. APIs 

Pour plus d'informations sur les clés de AWS condition, consultez la section [Clés contextuelles de condition AWS globales](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).


| **Clés de condition** | **Critères** | **Nécessite `AuthN` ?** | **Type d’autorisation** | 
| --- | --- | --- | --- | 
| aws:CurrentTime | Aucun | Non | Tous | 
| aws:EpochTime | Aucun | Non | Tous | 
| aws:TokenIssueTime | Cette clé est uniquement présente dans les demandes signées à l'aide d'informations d'identification de sécurité temporaires. | Oui | IAM | 
| aws:MultiFactorAuthPresent | Cette clé est uniquement présente dans les demandes signées à l'aide d'informations d'identification de sécurité temporaires. | Oui | IAM | 
| aws:MultiFactorAuthAge | La clé est présente uniquement si l’élément MFA est présent dans la demande. | Oui | IAM | 
| aws:PrincipalAccount | Aucun | Oui | IAM | 
| aws:PrincipalArn | Aucun | Oui | IAM | 
| aws:PrincipalOrgID | Cette clé ne figure dans le contexte de la demande que si le mandataire est membre d'une organisation. | Oui | IAM | 
| aws:PrincipalOrgPaths | Cette clé ne figure dans le contexte de la demande que si le mandataire est membre d'une organisation. | Oui | IAM | 
| aws:PrincipalTag | Cette clé figure dans le contexte de la demande si le mandataire utilise un utilisateur IAM avec des balises attachées. Elle est incluse pour un mandataire utilisant un rôle IAM avec des balises attachées ou des balises de session. | Oui | IAM | 
| aws:PrincipalType | Aucun | Oui | IAM | 
| aws:Referer | La clé est présente uniquement si la valeur est fournie par le mandataire dans l'en-tête HTTP. | Non | Tous | 
| aws:SecureTransport | Aucun | Non | Tous | 
| aws:SourceArn | Aucun | Non | Tous | 
| aws:SourceIp | Aucun | Non | Tous | 
| aws:SourceVpc | Cette clé ne peut être utilisée qu'à des fins privées APIs. | Non | Tous | 
| aws:SourceVpce | Cette clé ne peut être utilisée qu'à des fins privées APIs. | Non | Tous | 
| aws:VpcSourceIp | Cette clé ne peut être utilisée qu'à des fins privées APIs. | Non | Tous | 
| aws:UserAgent | La clé est présente uniquement si la valeur est fournie par le mandataire dans l'en-tête HTTP. | Non | Tous | 
| aws:userid | Aucun | Oui | IAM | 
| aws:username | Aucun | Oui | IAM | 