Comment puis-je créer une stratégie IAM pour la restriction basée sur des balises avec les clés de condition PrincipalTag, ResourceTag, RequestTag et TagKeys ?

Date de la dernière mise à jour : 09/02/2021

Je souhaite créer une stratégie AWS Identity and Access Management (IAM) pour la restriction basée sur les balises. Comment puis-je utiliser les clés de condition PrincipalTag, ResourceTag, RequestTag et TagKeys ?

Brève description

Utilisez les exemples de stratégies IAM suivants pour créer une restriction basée sur des balises avec des clés de condition pour votre cas d'utilisation.

Résolution

Clé de condition PrincipalTag

La clé de condition aws:PrincipalTag est utilisée pour faire correspondre la balise attachée au mandataire qui effectue la demande avec la balise dans la stratégie IAM. La valeur de la clé PrincipalTag est entrée avec la valeur de la balise IAM avec la clé de balise correspondante si elle est présente sur le mandataire de la demande.

L'exemple de stratégie IAM suivant fournit une restriction pour un compartiment Amazon Simple Storage Service (Amazon S3). L'action Amazon S3 PutObject a refusé l'autorisation du compartiment à tous les utilisateurs, sauf 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

La clé de condition aws:ResourceTag/tag-key est utilisée pour comparer la paire clé-valeur de balise spécifiée dans la stratégie IAM avec la paire clé-valeur attachée à la ressource AWS. Pour plus d'informations, consultez Contrôle de l'accès aux ressources AWS.

Lors de l'évaluation de la stratégie IAM, la valeur de la clé ResourceTag est entrée avec la valeur de la balise IAM avec la paire clé-valeur correspondante si elle est présente pour la ressource AWS. Cette clé de condition peut être utilisée avec la version globale aws:ResourceTag et les services AWS tels que ec2:ResourceTag. Pour plus d'informations, consultez Actions, ressources et clés de condition pour les services AWS.

L'exemple de stratégie IAM suivant permet aux utilisateurs de démarrer, d'arrêter et de mettre fin à des instances qui se trouvent dans l'environnement « 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

La clé de condition aws:RequestTag/tag-key utilisée pour comparer la paire clé-valeur transmise dans la requête de l'utilisateur avec la paire de balises spécifiée dans la politique IAM. La clé de condition est disponible pour les actions qui créent une ressource ou une balise sur une ressource et vérifie la valeur de la balise.

L'exemple de stratégie IAM suivant oblige les utilisateurs à créer une balise spécifique « Env » avec les valeurs « Dev », « Prod » ou « QA » lors de la création d'un volume Amazon Elastic Block Store (Amazon EBS).

{
    "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

La clé de condition aws:TagKeys est utilisée pour comparer les clés de balise dans une requête avec les clés spécifiées dans la stratégie IAM. La valeur de la clé TagKeys est entrée avec la liste des balises dans la demande de ressource AWS. La clé de condition TagKeys est utilisée pour valider les clés de balises attachées à une ressource.

Étant donné que vous pouvez définir plusieurs paires clé-valeur de balise dans une demande, la demande peut avoir plusieurs valeurs. Ces valeurs peuvent être comparées à l'aide du jeu d'opérateurs ForAllValues ou ForAnyValue.

L'exemple de stratégie suivant limite les balises créées sur une ressource AWS. Les balises « Env » et « CostCenter » sont les seules clés de balises que les utilisateurs peuvent créer avec un nouveau volume Amazon EBS. L'utilisation de l'opérateur ForAllValues avec aws:TagKeys limite les utilisateurs à attacher uniquement les balises requises sur la ressource AWS. Cela n'oblige pas les utilisateurs à fournir ces clés de balises dans la demande de création de ressources, mais empêche les utilisateurs de 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"
                    ]
                }
            }
        }
    ]
}

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?