Utilisation de balises pour contrôler l'accès aux CodePipeline ressources - AWS CodePipeline

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.

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

Les conditions figurant dans les déclarations de politique IAM font partie de la syntaxe que vous utilisez pour spécifier les autorisations relatives aux ressources requises par CodePipeline les actions. L'utilisation des balises dans les conditions est un moyen de contrôler l'accès aux ressources et demandes. Pour plus d'informations sur le balisage CodePipeline des ressources, consultezBalisage des ressources. Cette rubrique explique le contrôle d'accès basé sur les balises.

Lorsque vous concevez des stratégies IAM, vous pouvez définir des autorisations granulaires en accordant l'accès à des ressources spécifiques. Au fur et à mesure que le nombre de ressources que vous gérez s'accroît, cette tâche devient plus difficile. Le balisage des ressources et l'utilisation de balises dans les déclarations de politique peuvent rendre cette tâche plus facile. Vous accordez l'accès en bloc à toute ressource avec une balise spécifique. Puis, vous appliquez cette balise à plusieurs reprises aux ressources correspondantes, lors de la création ou ultérieurement.

Les balises peuvent être attachées à la ressource ou transmises dans la demande aux services qui prennent en charge le balisage. Dans CodePipeline, les ressources peuvent avoir des balises, et certaines actions peuvent inclure des balises. Lorsque vous créez une politique IAM, vous pouvez utiliser des clés de condition de balise pour contrôler :

  • quels utilisateurs peuvent effectuer des actions sur une ressource de pipeline, 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.

Les opérateurs de condition de chaîne permettent de créer des éléments Condition qui limitent l'accès après comparaison d'une clé à une valeur de chaîne. Vous pouvez ajouter IfExists à la fin de n'importe quel nom d'opérateur de condition, à l'exception de la condition Null. Ceci équivaut à spécifier que « Si la clé de politique est présente dans le contexte de la demande, la clé doit être traitée comme spécifié dans la politique. Si la clé n'est pas présente, la condition évalue l'élément de condition comme vrai. » Par exemple, vous pouvez utiliser StringEqualsIfExists pour restreindre par condition des clés qui peuvent ne pas être présentes sur d'autres types de ressources.

Pour connaître la syntaxe et la sémantique complètes des clés de condition des balises, consultez la section Contrôle de l'accès à l'aide de balises. Pour plus d'informations sur les clés de condition, consultez les ressources suivantes. Les exemples CodePipeline de politique présentés dans cette section s'alignent sur les informations suivantes sur les clés de condition et les développent avec des exemples de nuances, CodePipeline telles que l'imbrication des ressources.

Les exemples suivants montrent comment spécifier les conditions des balises dans les politiques destinées CodePipeline aux utilisateurs.

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

La politique des utilisateurs AWSCodePipeline_FullAccess gérés donne aux utilisateurs des autorisations illimitées pour effectuer n'importe quelle CodePipeline action sur n'importe quelle ressource.

La politique suivante limite ce pouvoir et refuse aux utilisateurs non autorisés l'autorisation de créer des pipelines dans lesquels des balises spécifiques sont répertoriées dans la demande. Pour ce faire, elle refuse l'action CreatePipeline si la demande spécifie une balise nommée Project avec une valeur ProjectA ou ProjectB. (La clé de condition aws:RequestTag est utilisée pour contrôler les balises qui peuvent être transmises dans une demande IAM.)

Dans l'exemple suivant, le but de la politique est de refuser aux utilisateurs non autorisés l'autorisation de créer un pipeline avec les valeurs de balise spécifiées. Cependant, la création d'un pipeline nécessite d'accéder à des ressources en plus du pipeline lui-même (par exemple, les actions et les étapes du pipeline). Dans la mesure où la stratégie est 'Resource' spécifiée'*', la politique est évaluée par rapport à chaque ressource dotée d'un ARN et est créée lors de la création du pipeline. Ces ressources supplémentaires ne disposent pas de la clé de condition du tag. La StringEquals vérification échoue et l'utilisateur n'est pas autorisé à créer un pipeline. Pour éviter ce problème, utilisez l'opérateur de condition StringEqualsIfExists à la place. De cette façon, le test n'est effectué que si la clé de condition existe.

Vous pourriez lire ce qui suit : « Si la ressource vérifiée possède une clé de "RequestTag/Project" condition de balise, autorisez l'action uniquement si la valeur de la clé commence parprojectA. Si la ressource en cours de vérification n'est pas dotée de cette clé de condition, peu importe. »

En outre, la politique empêche ces utilisateurs non autorisés d'altérer les ressources en utilisant la clé de aws:TagKeys condition pour empêcher les actions de modification des balises d'inclure ces mêmes valeurs de balise. L'administrateur d'un client doit associer cette politique IAM aux utilisateurs administratifs non autorisés, en plus de la politique des utilisateurs gérés.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "aws:RequestTag/Project": ["ProjectA", "ProjectB"] } } }, { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
Exemple 2 : Limitez les actions de balisage en fonction des balises de ressources

La politique des utilisateurs AWSCodePipeline_FullAccess gérés donne aux utilisateurs des autorisations illimitées pour effectuer n'importe quelle CodePipeline action sur n'importe quelle ressource.

La stratégie suivante limite cette possibilité et interdit aux utilisateurs non autorisés d'effectuer des actions sur les pipelines de projets spécifiés. Pour ce faire, elle refuse certaines actions si la ressource possède une balise nommée Project avec une valeur ProjectA ou ProjectB. (La clé de condition aws:ResourceTag est utilisée pour contrôler l'accès aux ressources en fonction des balises sur ces ressources.) L'administrateur d'un client peut attacher cette stratégie IAM aux utilisateurs IAM non autorisés et à la stratégie d'utilisateur gérée.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": ["ProjectA", "ProjectB"] } } } ] }
Exemple 3 : Limiter les actions en fonction des balises dans la demande

La politique suivante autorise les utilisateurs à créer des pipelines de développement dans CodePipeline.

Pour ce faire, elle autorise les actions CreatePipeline et TagResource si la demande spécifie une balise nommée Project avec la valeur ProjectA. En d'autres termes, la seule clé de balise qui peut être spécifiée estProject, et sa valeur doit êtreProjectA.

La clé de aws:RequestTag condition est utilisée pour contrôler les balises qui peuvent être transmises dans une demande IAM. La condition aws:TagKeys garantit que la clé de balise est sensible à la casse. Cette politique est utile pour les utilisateurs ou les rôles auxquels la politique d'utilisateur AWSCodePipeline_FullAccess géré n'est pas attachée. La politique gérée donne aux utilisateurs des autorisations illimitées pour effectuer n'importe quelle CodePipeline action sur n'importe quelle ressource.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Project": "ProjectA" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
Exemple 4 : Limitez les actions de débalisage en fonction des balises de ressources

La politique des utilisateurs AWSCodePipeline_FullAccess gérés donne aux utilisateurs des autorisations illimitées pour effectuer n'importe quelle CodePipeline action sur n'importe quelle ressource.

La stratégie suivante limite cette possibilité et interdit aux utilisateurs non autorisés d'effectuer des actions sur les pipelines de projets spécifiés. Pour ce faire, elle refuse certaines actions si la ressource possède une balise nommée Project avec une valeur ProjectA ou ProjectB.

La politique empêche également ces utilisateurs non autorisés d'altérer les ressources en utilisant la clé de aws:TagKeys condition pour empêcher les actions de modification des balises de supprimer complètement la Project balise. L'administrateur d'un client doit associer cette politique IAM à des utilisateurs ou à des rôles non autorisés, en plus de la politique d'utilisateur géré.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }