Utiliser les politiques de point de terminaison VPC pour le mode privé APIs dans API Gateway - Amazon API Gateway

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.

Utiliser les politiques de point de terminaison VPC pour le mode privé APIs dans API Gateway

Pour améliorer la sécurité de votre API privée, vous pouvez créer une politique de point de terminaison de VPC. La politique de point de terminaison de VPC est une politique de ressources IAM qui est jointe au point de terminaison d’un VPC. Pour plus d’informations, consultez Contrôle de l'accès aux services avec des points de terminaison de VPC.

Vous pouvez créer une politique de point de terminaison de VPC pour exécuter les tâches suivantes.

  • Autoriser uniquement certaines organisations ou ressources à accéder à votre point de terminaison de VPC et à invoquer votre API.

  • Utiliser une seule politique et éviter les politiques basées sur les sessions ou les rôles pour contrôler le trafic à destination de votre API.

  • Resserrez le périmètre de sécurité de votre application lors de la migration d'une application sur site vers AWS.

Considérations d’une politique de point de terminaison de VPC

Voici les points à prendre en compte pour votre politique de point de terminaison VPC :

  • L’identité de l’invocateur est évaluée en fonction de la valeur de l’en-tête Authorization. La politique de point de terminaison du VPC est d'abord évaluée, puis API Gateway évalue la demande, en fonction du type d'autorisation configuré dans la demande de méthode. Le tableau suivant montre comment la politique de point de terminaison du VPC est évaluée en fonction du contenu de la valeur d'Authorizationen-tête.

    Contenu de la valeur Authorization d'en-tête

    Comment est évaluée la politique de point de terminaison du VPC

    Aucun contenu L'invocateur est évalué en tant qu'utilisateur anonyme
    Signature SigV4 valide L'invocateur est évalué comme l'identité IAM authentifiée à partir de la signature.
    Signature SigV4 non valide API Gateway refuse l'accès
    Informations d'autorisation non SIGv4, telles qu'un jeton porteur L'invocateur est évalué en tant qu'utilisateur anonyme
  • Si votre contrôle d'accès repose sur l'utilisation d'un jeton porteur, tel qu'un autorisateur Lambda ou Amazon Cognito, vous pouvez contrôler votre périmètre de sécurité à l'aide des propriétés de la ressource.

  • Si vos contrôles d'autorisation utilisent l'autorisation IAM, vous pouvez contrôler votre périmètre de sécurité en utilisant les propriétés de la ressource et les propriétés du principal.

  • Les politiques de point de terminaison de VPC peuvent être utilisées conjointement avec des politiques de ressources API Gateway. La politique de ressources API Gateway spécifie les principaux pouvant accéder à l’API. La politique de point de terminaison spécifie qui peut accéder au VPC et qui APIs peut être appelé depuis le point de terminaison du VPC. Votre API privée a besoin d’une politique de ressources, mais il n’est pas nécessaire de créer une politique de point de terminaison de VPC personnalisée.

Exemples de politique de point de terminaison de VPC

Vous pouvez créer des politiques pour les points de terminaison Amazon Virtual Private Cloud pour Amazon API Gateway dans lesquelles vous pouvez spécifier :

  • Le principal qui peut exécuter des actions.

  • Les actions qui peuvent être effectuées.

  • Les ressources qui peuvent avoir des actions exécutées sur elles.

Cela peut dépendre du contenu de votre en-tête d'autorisation. Pour de plus amples informations, veuillez consulter Considérations d’une politique de point de terminaison de VPC. Pour d'autres exemples de politiques, consultez la section Exemples de politiques de périmètre des données sur le GitHub site Web.

Pour attacher la politique au point de terminaison de VPC, vous devez utiliser la console VPC. Pour plus d’informations, consultez Contrôle de l'accès aux services avec des points de terminaison de VPC.

Exemple 1 : politique de point de terminaison VPC accordant l'accès à deux APIs

L'exemple de politique suivant n'accorde l'accès qu'à deux points spécifiques APIs via le point de terminaison VPC auquel la politique est attachée.

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*", "arn:aws:execute-api:us-east-1:123412341234:aaaaa11111/*" ] } ] }

Exemple 2 : politique de point de terminaison de VPC accordant l’accès aux méthodes GET

L’exemple de politique suivant accorde aux utilisateurs l’accès aux méthodes GET pour une API spécifique via le point de terminaison de VPC auquel la politique est attachée.

{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/stageName/GET/*" ] } ] }

Exemple 3 : politique de point de terminaison de VPC accordant à un utilisateur spécifique l’accès à une API spécifique

L’exemple de politique suivant accorde à un utilisateur spécifique l’accès à une API spécifique via le point de terminaison de VPC auquel la politique est attachée.

Dans ce cas, étant donné que la politique restreint l’accès à des principaux IAM spécifiques, vous devez définir authorizationType sur AWS_IAM ou NONE.

{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/MyUser" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1:123412341234:a1b2c3d4e5/*" ] } ] }

Exemple 4 : politique de point de terminaison de VPC autorisant les utilisateurs à accéder à un nom de domaine personnalisé spécifique et à chaque API mappée à ce domaine

L'exemple de politique suivant accorde aux utilisateurs l'accès à un nom de domaine personnalisé spécifique pour le mode privé APIs via le point de terminaison VPC auquel la politique est attachée. Avec cette politique, tant qu'un utilisateur a créé une association d'accès au nom de domaine entre le point de terminaison VPC et le nom de domaine personnalisé et qu'il est autorisé à invoquer le nom de domaine personnalisé et toute API privée mappée au nom de domaine personnalisé, l'utilisateur peut invoquer n'importe quelle API APIs mappée à ce nom de domaine personnalisé. Pour de plus amples informations, veuillez consulter Noms de domaine personnalisés pour le privé APIs dans API Gateway.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "execute-api:Invoke", "Resource": [ "*" ], "Condition": { "ArnEquals": { "execute-api:viaDomainArn": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.test.com+f4g5h6", } } } ] }

Exemple 5 : politique de point de terminaison VPC accordant ou refusant l'accès à des ressources spécifiques APIs et de domaine

L'exemple de politique suivant accorde aux utilisateurs l'accès à des ressources spécifiques APIs et à des domaines. Avec cette politique, tant qu'un utilisateur a créé une association d'accès au nom de domaine entre le point de terminaison VPC et le nom de domaine personnalisé et qu'il est autorisé à invoquer le nom de domaine personnalisé et toute API privée mappée au nom de domaine personnalisé, l'utilisateur peut invoquer les ressources privées APIs et de domaine autorisées. Pour de plus amples informations, veuillez consulter Noms de domaine personnalisés pour le privé APIs dans API Gateway.

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.test.com+f4g5h6", "arn:aws:execute-api:us-west-2:111122223333:a1b2c3d4e5/*" ] }, { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:a1b2c3d4e5/admin/*", "arn:aws:execute-api:us-west-2:111122223333:bcd123455/*" ] } ] }

Exemple 6 : politique de point de terminaison VPC accordant ou refusant l'accès aux principaux et aux ressources appartenant à une organisation

L'exemple de politique suivant accorde l'accès aux principaux et aux ressources appartenant à une organisation.

{ "Version": "2012-10-17", "Statement": [ { "Condition": { "StringEquals": { "aws:ResourceOrgID": "o-abcd1234", "aws:PrincipalOrgID": "o-abcd1234" } }, "Action": "*", "Resource": "*", "Effect": "Allow", "Principal": { "AWS": "*" }, "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources" } ] }