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 :
-
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 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) 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 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) 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.
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.