Exemples de SCP pour le balisage de ressources - AWS Organizations

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.

Exemples de SCP pour le balisage de ressources

Exiger une balise sur des ressources créées spécifiées

La politique SCP suivante empêche les utilisateurs et les rôles IAM des comptes concernés de créer certains types de ressources si la demande n'inclut pas les balises spécifiées.

Important

N'oubliez pas de tester les politiques basées sur Deny avec les services que vous utilisez dans votre environnement. L'exemple suivant est un simple blocage des actions visant à créer des secrets non balisés ou d'exécuter des instances Amazon EC2 non balisées, et ne comporte aucune exception.

L'exemple de politique suivant n'est pas compatible avec AWS CloudFormation tel qu'il est écrit, car ce service crée un secret, puis le balise en deux étapes distinctes. Cet exemple de politique empêche efficacement AWS CloudFormation de créer un secret dans le cadre d'une pile, car une telle action aboutirait, aussi brièvement que ce soit, à un secret qui n'est pas balisé de la manière requise.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCreateSecretWithNoProjectTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyRunInstanceWithNoProjectTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyCreateSecretWithNoCostCenterTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } }, { "Sid": "DenyRunInstanceWithNoCostCenterTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } } ] }

Pour obtenir une liste de tous les services et actions pris en charge à la fois dans les politiques de contrôle des services AWS Organizations et dans les politiques d'autorisation IAM, consultez Actions, ressources et clés de conditions pour les services AWS dans le Guide de l'utilisateur IAM.

Empêcher la modification de balises sauf par des mandataires autorisés

La politique SCP suivante montre comment une politique peut autoriser uniquement les mandataires autorisés à modifier les balises attachées à vos ressources. Ceci est une partie importante de l'utilisation du contrôle d'accès basé sur les attributs (ABAC) dans le cadre de votre politique de sécurité dans le cloud AWS. Cette politique permet à un appelant de modifier les balises uniquement sur les ressources où la balise d'autorisation (dans cet exemple, access-project) correspond exactement à la même balise d'autorisation attachée à l'utilisateur ou rôle qui fait la demande. La politique empêche également l'utilisateur autorisé de modifier la valeur de la balise utilisée pour l'autorisation. Le mandataire appelant doit avoir la balise d'autorisation pour pouvoir effectuer des modifications.

Cette politique ne fait qu'empêcher les utilisateurs non autorisés de modifier des balises. Un utilisateur autorisé qui n'est pas bloqué par cette politique doit toujours disposer d'une politique IAM distincte qui accorde explicitement l'autorisation Allow sur les API de balisage appropriées. Par exemple, si votre utilisateur dispose d'une politique d'administrateur avec Allow */* (autoriser tous les services et toutes les opérations), la combinaison permet à l'utilisateur administrateur de modifier uniquement les balises dont la valeur de balise d'autorisation correspond à la valeur de balise d'autorisation attachée au mandataire de l'utilisateur. En effet, le Deny explicite dans cette politique remplace le Allow explicite contenu dans la politique d'administrateur.

Important

Il ne s'agit pas d'une solution de politique complète et elle ne doit pas être utilisée comme illustré ici. Cet exemple est destiné uniquement à illustrer une partie d'une politique ABAC et doit être personnalisé et testé pour les environnements de production.

Pour obtenir la politique complète avec une analyse détaillée de son fonctionnement, consultez Sécurisation des balises de ressources utilisées pour l'autorisation en utilisant une politique de contrôle des services dans AWS Organizations

N'oubliez pas de tester les politiques basées sur Deny avec les services que vous utilisez dans votre environnement.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyModifyTagsIfResAuthzTagAndPrinTagDontMatch", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "ec2:ResourceTag/access-project": "${aws:PrincipalTag/access-project}", "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "Null": { "ec2:ResourceTag/access-project": false } } }, { "Sid": "DenyModifyResAuthzTagIfPrinTagDontMatch", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "aws:RequestTag/access-project": "${aws:PrincipalTag/access-project}", "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "access-project" ] } } }, { "Sid": "DenyModifyTagsIfPrinTagNotExists", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "Null": { "aws:PrincipalTag/access-project": true } } } ] }