Contrôler l'accès pour l'appel d'une API - Amazon API Gateway

Contrôler l'accès pour l'appel d'une API

Dans cette section, vous allez apprendre à écrire les déclarations de stratégie IAM pour contrôler qui peut appeler une API déployée dans API Gateway. Ici, vous trouverez également la référence de déclaration de stratégie, y compris les formats des champs Action et Resource liés au service de l'exécution des API. Vous devez également étudier la section IAM de Comment les stratégies de ressources API Gateway affectent le flux de travail d'autorisation.

Pour les API privées, vous devez utiliser une combinaison constituée d'une stratégie de ressources API Gateway et d’un point de terminaison de VPC. Pour plus d'informations, consultez les rubriques suivantes :

Contrôler qui peut appeler une méthode d'API API Gateway avec les stratégies IAM

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Permission", "Action": [ "execute-api:Execution-operation" ], "Resource": [ "arn:aws:execute-api:region:account-id: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 d'API déployée prenant en charge ledit verbe METHOD_HTTP-VERB. Pour plus d'informations, consultez Référence de déclaration de stratégie IAM pour l'exécution des API dans API Gateway.

Note

Pour que les stratégies 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 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 l'instruction suivante dans la stratégie IAM :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id:api-id/*/GET/pets" ] }, { "Effect": "Deny", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account-id: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 l'instruction suivante dans la stratégie IAM :

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

Pour une équipe de développement testant les API, vous pouvez inclure l'instruction suivante dans la stratégie IAM afin de permettre à l'équipe d'appeler n'importe quelle méthode sur n'importe quelle ressource de n'importe quelle API dans l'étape test, l'appel pouvant être fait par n'importe quel développeur.

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

Référence de déclaration de stratégie IAM pour l'exécution des API dans API Gateway

Les informations suivantes décrivent le format des expressions Action et Resource des déclarations de stratégie 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

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

execute-api:action

action est une action d'exécution d'API disponible :

  • *, 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

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 région AWS (telle que us-east-1 ou * pour toutes les régions AWS) qui correspond à l'API déployée pour la méthode.

  • account-id est l'ID de compte AWS à 12 chiffres du propriétaire de l'API REST.

  • api-id est l'identifiant qu' API Gateway a affecté à l'API pour la méthode. (* peut être utilisé pour toutes les API, quel que soit l'identificateur de l'API.)

  • stage-name est le nom de l'étape associée à la méthode (* peut être utilisé pour toutes les étapes, quel que soit le nom de l'étape.)

  • HTTP-VERB est le verbe HTTP pour la méthode. Il peut s'agir de l'un des suivants : GET, POST, PUT, DELETE, PATCH. (* peut être utilisé pour tous les verbes HTTP).

  • resource-path-specifier est le chemin de la méthode souhaitée. (* peut être utilisé pour tous les chemins.)

Voici quelques exemples d'expression Resource :

  • arn:aws:execute-api:*:*:* pour tout chemin de ressource de toute étape, pour toute API de toute région AWS. (Cette expression est similaire à *).

  • arn:aws:execute-api:us-east-1:*:* pour tout chemin de ressource de toute étape, pour toute API de toute région AWS us-east-1.

  • arn:aws:execute-api:us-east-1:*:api-id/* pour tout chemin de ressource de toute étape, pour toute API avec l'identifiant api-id dans la région AWS us-east-1.

  • arn:aws:execute-api:us-east-1:*:api-id/test/* pour tout chemin de ressource à l'étape test, pour toute API avec l'identifiant api-id dans la région AWS us-east-1.

  • arn:aws:execute-api:us-east-1:*:api-id/test/*/mydemoresource/* pour tout chemin de ressource avec le chemin mydemoresource, pour toute méthode HTTP à l'étape test, pour l'API avec l'identifiant api-id dans la région AWS us-east-1.

  • arn:aws:execute-api:us-east-1:*:api-id/test/GET/mydemoresource/* pour toute méthode GET sous tout chemin de ressource avec le chemin mydemoresource, à l'étape test, pour l'API avec l'identifiant api-id dans la région AWS us-east-1.

Pour en savoir plus, consultez la section Référence ARN (Amazon Resource Name) API Gateway.