Contrôle de l'accès à une API avec des autorisations IAM - Amazon API Gateway

Contrôle de l'accès à une API avec des autorisations IAM

Vous contrôlez l'accès à votre API Amazon API Gateway avec les autorisations IAM 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

Pour permettre à un développeur d'API de créer et gérer une API dans API Gateway, vous devez créer des stratégies d'autorisation IAM qui permettent à un développeur d'API spécifié de créer, mettre à jour, déployer, afficher ou supprimer les entités d'API requises. Vous attachez la stratégie d'autorisation à un utilisateur IAM représentant le développeur, à un groupe IAM contenant l'utilisateur ou à un rôle IAM pris en charge par l'utilisateur.

Dans ce document de stratégie IAM, l'élément IAM Resource contient une liste d'entités API API Gateway, y compris les ressources API Gateway et les liens-relations API Gateway. L'élément IAM Action contient les actions requises de gestion des API API Gateway. Ces actions sont déclarées au format apigateway:HTTP_VERB, où apigateway désigne le composant de gestion sous-jacent des API API Gateway et HTTP_VERB les verbes HTTP pris en charge par API Gateway.

Pour plus d'informations sur l'utilisation de ce modèle d'autorisation, consultez Contrôler l'accès à la gestion d'une API.

Modèle d'autorisation API Gateway pour l'appel d'une API

Pour permettre à un appelant de l'API d'appeler l'API ou d'actualiser sa mise en cache, vous devez créer des stratégies IAM qui permettent à un appelant de l'API spécifié d'appeler la méthode d'API pour laquelle l'authentification de l'utilisateur IAM est activée. Le développeur de l'API définit la propriété authorizationType de la méthode sur AWS_IAM pour exiger que l'appelant soumette les clés d'accès de l'utilisateur IAM à l'authentification. Ensuite, vous attachez la stratégie à un utilisateur IAM représentant l'appelant de l'API, à un groupe IAM contenant l'utilisateur ou à un rôle IAM assumé par l'utilisateur.

Dans cette déclaration de stratégie 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 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.

Lorsqu'une API est intégrée à un service AWS (par exemple, AWS Lambda) du backend, API Gateway doit également disposer des autorisations pour accéder aux ressources AWS intégrées (par exemple, appeler une fonction Lambda) pour le compte 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 stratégie d'approbation IAM suivante qui déclare API Gateway en tant qu'entité de confiance autorisée à assumer le rôle :

{ "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 de l'interface de ligne de commande ou une méthode de kit SDK correspondante, vous devez fournir la stratégie d'approbation ci-dessus en tant que paramètre d'entrée de assume-role-policy-document. Ne tentez pas de créer une telle stratégie directement dans la console de gestion IAM, ou en appelant la commande create-policy de l'interface de ligne de commande AWS ou une méthode de kit SDK correspondante.

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

{ "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 accorder le contrôle d'accès à un service AWS, vous pouvez utiliser le modèle d'autorisation basé sur l'appelant, où une stratégie d'autorisation est directement attachée au groupe ou à l'utilisateur IAM de l'appelant, ou le modèle d'autorisation basé sur les rôles, où une stratégie d'autorisation est attachée à un rôle IAM qu'API Gateway peut assumer. Les stratégies d'autorisation peuvent varier dans les deux modèles. Par exemple, la stratégie basée sur l'appelant bloque l'accès tandis que la stratégie basée sur les rôles l'autorise. Vous pouvez en tirer parti afin d'exiger qu'un utilisateur IAM accède à un service AWS via une API API Gateway uniquement.