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

Contrôle de l’accès à une API REST 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 politiques 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 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 :

Pour plus d’informations sur l’utilisation de ce modèle d’autorisation, consultez Stratégies basées sur l'identité d'API Gateway.

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

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. 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 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 avec un service AWS (par exemple AWS Lambda) dans le back end, 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 politique 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 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 IAM Management console ou d’appeler la commande AWS CLI create-policy ou une méthode SDK correspondante.

Pour qu’API Gateway puisse appeler le service AWS intégré, vous devez également attacher à ce rôle des politiques d’autorisations IAM appropriées pour appeler des services AWS intégrés. Par exemple, pour appeler une fonction Lambda, vous devez inclure la politique 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 soit le modèle d’autorisation basé sur l’appelant où une politique d’autorisations est directement attachée au groupe ou à l’utilisateur de l’appelant, soit le modèle d’autorisation basé sur les rôles où une politique d’autorisations est attachée à un rôle IAM que peut endosser API Gateway. 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 profiter de cela pour imposer à un utilisateur d’accéder à un service AWS via une API API Gateway uniquement.