Je souhaite utiliser les clés de condition basées sur des identifications PrincipalTag, ResourceTag, RequestTag et TagKeys dans une politique de Gestion des identités et des accès AWS (AWS IAM) afin de contrôler l'accès aux ressources AWS.
Résolution
Les exemples de politiques IAM suivants utilisent des clés de condition pour contrôler l'accès aux ressources AWS à l'aide d’identifications.
Pour déterminer les actions d’API pouvant être effectuées, il est recommandé de consulter la documentation de l’API du service utilisé.
Clé de condition PrincipalTag
Utilisez la clé de condition aws:PrincipalTag/tag-key pour comparer les identifications suivantes :
- L’identification attachée au principal qui effectue la demande
- L’identification que vous spécifiez dans la politique IAM
Dans l'exemple suivant, l'action PutObject d'Amazon Simple Storage Service (Amazon S3) refuse l'accès au compartiment à tous les utilisateurs, à l'exception de ceux portant le titre Product-Manager :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyAllButProductManagers",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::productionbucket/*"
],
"Condition": {
"StringNotEquals": {
"aws:PrincipalTag/job-title": "Product-Manager"
}
}
}
]
}
Clé de condition ResourceTag
Utilisez la clé de condition aws:ResourceTag/tag-key pour comparer la paire clé-valeur de l’identification spécifiée dans la politique IAM avec la paire clé-valeur attachée à la ressource AWS. Pour plus d’informations, consultez la section Contrôle de l’accès aux ressources AWS.
Vous pouvez utiliser la clé de condition aws:ResourceTag/tag-key avec la version globale aws:ResourceTag et les services AWS, tels que ec2:ResourceTag.
Dans l'exemple suivant, la politique IAM permet aux utilisateurs de démarrer, d'arrêter et de résilier les instances Amazon Elastic Compute Cloud (Amazon EC2) qui se trouvent dans l'environnement de test :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOnlyForTestEnvironment",
"Effect": "Allow",
"Action": [
"ec2:TerminateInstances",
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringLike": {
"ec2:ResourceTag/Env": "test"
}
}
}
]
}
Clé de condition RequestTag
Utilisez la clé de condition aws:RequestTag/tag-key pour comparer la paire clé-valeur dans la demande de l'utilisateur à la paire d’identifications spécifiée dans la politique IAM. Vous pouvez utiliser cette clé de condition pour contrôler les actions qui créent des ressources et pour valider les identifications au cours de ces opérations.
Dans l'exemple suivant, la politique IAM ne permet aux utilisateurs de créer des volumes Amazon Elastic Block Store (Amazon EBS) que s'ils incluent une identification Env avec les valeurs Dev, Prod ou QA :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateVolumeWithEnvTag",
"Effect": "Allow",
"Action": "ec2:CreateVolume",
"Resource": "arn:aws:ec2:*:*:volume/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/Env": [
"Dev",
"Prod",
"QA"
]
}
}
}
]
}
Clé de condition TagKeys
Utilisez la clé de condition aws:TagKeys pour comparer les clés d’identification d'une requête à celles que vous spécifiez dans la politique IAM. Cette clé de condition valide les clés d’identification attachées à une ressource.
Lorsqu'une demande contient plusieurs paires clé-valeur, utilisez les opérateurs d'ensemble ForAllValues ou ForAnyValue pour comparer ces valeurs.
Dans l'exemple suivant, la politique IAM limite la création d’identifications sur les ressources AWS. Elle permet aux utilisateurs de créer uniquement les identifications Env et CostCenter lorsque ces derniers créent un nouveau volume Amazon EBS. L'opérateur d’ensemble ForAllValues avec la clé de condition aws:TagKeys permet aux utilisateurs d'attacher les identifications requises à la ressource. La politique rend ces clés d’identification facultatives lors de la création de ressources et empêche la création d’identifications avec d'autres paires clé-valeur :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ec2:CreateVolume",
"Resource": "arn:aws:ec2:*:*:volume/*",
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"Env",
"CostCenter"
]
}
}
}
]
}
Informations connexes
Didacticiel IAM : Définir des autorisations d’accès aux ressources AWS en fonction des identifications