Je souhaite créer une politique AWS Identity and Access Management (IAM) pour appliquer des restrictions basées sur les balises. Je souhaite utiliser les clés de condition PrincipalTag, ResourceTag, RequestTag et TagKeys.
Résolution
Les exemples de politiques IAM suivants utilisent des clés de condition pour appliquer une restriction basée sur des balises.
Remarque : Pour déterminer les actions d’API que vous pouvez effectuer, il est recommandé de consulter la documentation de l’API du service que vous utilisez.
Clé de condition PrincipalTag
Utilisez la clé de condition aws:PrincipalTag/tag-key pour faire correspondre la balise associée au principal de demande avec la balise de la politique IAM.
L’exemple de politique IAM suivant applique des restrictions d’accès à un compartiment Amazon Simple Storage Service (Amazon S3). L’action Amazon S3 PutObject interdit à tous les utilisateurs d’accéder au compartiment, à l'exception de ceux dont le titre est 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 la balise spécifiée dans la politique IAM avec la paire clé-valeur associée à la ressource AWS. Pour en savoir plus, consultez la page Contrôle de l’accès aux ressources AWS.
Vous pouvez utiliser cette clé de condition avec la version globale de la clé aws:ResourceTag et les services AWS, tels que ec2:ResourceTag. Pour en savoir plus, consultez la page Actions, ressources et clés de condition pour les services AWS.
L’exemple de politique IAM suivant permet aux utilisateurs de démarrer, d’arrêter et de résilier des instances 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 transmise dans la demande de l'utilisateur avec la paire de balises spécifiée dans la politique IAM. Vous pouvez utiliser cette clé de condition sur les actions qui créent une ressource ou une balise de ressource et qui vérifient la valeur de la balise.
L’exemple de politique suivant oblige les utilisateurs à créer une balise Env spécifique lorsqu’ils créent un volume Amazon Elastic Block Store (Amazon EBS). La balise Env doit avoir 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 de balise transmises dans une demande avec les clés spécifiées dans la politique IAM. Cette clé de condition valide les clés de balise associées à une ressource.
Comme vous pouvez définir plusieurs paires clé-valeur de balise dans une demande, celle-ci peut contenir plusieurs valeurs. Pour comparer ces valeurs, utilisez les opérateurs ForAllValues ou ForAnyValue définis.
L’exemple de politique suivant limite les balises créées sur une ressource AWS. Les balises Env et CostCenter sont les seules clés de balise que les utilisateurs peuvent créer avec un nouveau volume Amazon EBS. L’utilisation de l'opérateur ForAllValues défini avec aws:TagKeys permet aux utilisateurs d’associer uniquement les balises requises à la ressource AWS. Cette politique ne contraint pas les utilisateurs à fournir ces clés de balise dans la demande de création de ressources. Au lieu de cela, la politique n’autorise pas les utilisateurs à créer des balises 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éfinition des autorisations d’accès aux ressources AWS en fonction des balises