Utilisation de balises pour contrôler l'accès aux ressources API Gateway - Amazon API Gateway

Utilisation de balises pour contrôler l'accès aux ressources API Gateway

Les conditions des stratégies AWS Identity and Access Management font partie de la syntaxe que vous utilisez pour spécifier des autorisations sur les ressources API Gateway. Pour de plus amples informations sur la spécification de stratégies IAM, veuillez consulter Contrôle de l'accès à une API avec des autorisations IAM. Dans API Gateway, les ressources et certaines actions peuvent comporter des balises. Lorsque vous créez une stratégie IAM, vous pouvez utiliser des clés de condition de balise pour contrôler :

  • quels utilisateurs peuvent effectuer des actions sur une ressource API Gateway, en fonction des balises que la ressource possède déjà ;

  • quelles balises peuvent être transmises dans une demande d'action ;

  • si des clés de balise spécifiques peuvent être utilisées dans une demande.

L’utilisation du contrôle d'accès basé sur les balises peut permettre un contrôle plus précis que le contrôle au niveau de l'API, et un contrôle plus dynamique que le contrôle d'accès basé sur les ressources. Il est possible de créer des stratégies IAM qui autorisent ou interdisent une opération en fonction des balises fournies dans la demande (balises de demande) ou des balises sur la ressource à laquelle les stratégies s’appliquent (balises de ressource). En général, les balises de ressource sont destinées aux ressources qui existent déjà. Les balises de demande conviennent lorsque vous créez des ressources.

Pour connaître la syntaxe complète et la sémantique des clés de condition de balise, consultez Contrôle de l'accès à l'aide de balises dans le Guide de l'utilisateur IAM .

Les exemples suivants montrent comment spécifier des conditions de balises dans les stratégies pour les utilisateurs API Gateway.

Exemple 1 : Limiter les actions en fonction des balises de ressource

L'exemple de stratégie suivant accorde aux utilisateurs l'autorisation d'exécuter des actions GET sur toutes les ressources. En outre, si une ressource a une balise nommée iamrole avec la valeur readWrite, la stratégie autorise les utilisateurs à effectuer toutes les actions sur la ressource.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:GET", "Resource": "*" }, { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/iamrole": "readWrite" } } } ] }

Exemple 2 : Limiter les actions en fonction des balises dans la demande

L'exemple de stratégie suivant spécifie que :

  • Lorsque l'utilisateur crée une nouvelle étape, la demande de création de l'étape doit contenir une balise nommée stage.

  • La valeur de la balise stage doit être beta, gamma ou prod. Sinon, la demande de création de l'étape est refusée.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages", "Condition": { "Null": { "aws:RequestTag/stage": "true" } } }, { "Effect": "Deny", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:*::/restapis/*/stages", "Condition": { "ForAnyValue:StringNotEquals": { "aws:RequestTag/stage": [ "beta", "gamma", "prod" ] } } } ] }

Exemple 3 : Refuser des actions en fonction de balises de ressource

L'exemple de stratégie suivant permet aux utilisateurs d'exécuter toutes les actions sur les ressources API Gateway par défaut. Si une ressource a une balise nommée stage avec la valeur prod, les utilisateurs ne sont pas autorisés à effectuer des modifications (PATCH, PUT, POST, DELETE) sur la ressource.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/stage": "prod" } } } ] }

Exemple 4 : Limiter les actions en fonction des balises de ressource

L'exemple de stratégie suivant permet aux utilisateurs d'exécuter toutes les actions sur toutes les ressources API Gateway par défaut. Si une ressource possède une balise nommée environment dont la valeur est prod, les utilisateurs ne sont pas autorisés à effectuer des opérations sur la ressource.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "prod" } } } ] }

Exemple 5 : Limiter les actions basées sur des clés de balise de ressource

L'exemple de stratégie suivant permet aux utilisateurs d'exécuter toutes les actions sur toutes les ressources API Gateway par défaut. Si une ressource a une balise nommée prod avec une valeur quelconque, y compris une chaîne vide, les utilisateurs ne sont pas autorisés à effectuer des opérations qui modifient la ressource.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "apigateway:PATCH", "apigateway:PUT", "apigateway:POST", "apigateway:DELETE" ], "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/prod": "false" } } } ] }