Exemples de politiques basées sur l'identité pour Amazon Elastic Container Service - Amazon Elastic Container Service

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 politiques basées sur l'identité pour Amazon Elastic Container Service

Par défaut, les utilisateurs et les rôles ne sont pas autorisés à créer ou à modifier les ressources Amazon ECS. Ils ne peuvent pas non plus effectuer de tâches à l'aide de l'API AWS Management Console, AWS Command Line Interface (AWS CLI) ou de AWS l'API. Pour octroyer aux utilisateurs des autorisations d’effectuer des actions sur les ressources dont ils ont besoin, un administrateur IAM peut créer des politiques IAM. L’administrateur peut ensuite ajouter les politiques IAM aux rôles et les utilisateurs peuvent assumer les rôles.

Pour apprendre à créer une politique basée sur l’identité IAM à l’aide de ces exemples de documents de politique JSON, consultez Création de politiques IAM (console) dans le Guide de l’utilisateur IAM.

Pour plus de détails sur les actions et les types de ressources définis par Amazon ECS, y compris le ARNs format de chaque type de ressource, consultez la section Actions, ressources et clés de condition pour Amazon Elastic Container Service dans la référence d'autorisation du service.

Bonnes pratiques en matière de politique Amazon ECS

Les stratégies basées sur l'identité déterminent si une personne peut créer, consulter ou supprimer des ressources Amazon ECS dans votre compte. Ces actions peuvent entraîner des frais pour votre Compte AWS. Lorsque vous créez ou modifiez des politiques basées sur l’identité, suivez ces instructions et recommandations :

  • Commencez AWS par les politiques gérées et passez aux autorisations du moindre privilège : pour commencer à accorder des autorisations à vos utilisateurs et à vos charges de travail, utilisez les politiques AWS gérées qui accordent des autorisations pour de nombreux cas d'utilisation courants. Ils sont disponibles dans votre Compte AWS. Nous vous recommandons de réduire davantage les autorisations en définissant des politiques gérées par les AWS clients spécifiques à vos cas d'utilisation. Pour plus d’informations, consultez politiques gérées par AWS ou politiques gérées par AWS pour les activités professionnelles dans le Guide de l’utilisateur IAM.

  • Accordez les autorisations de moindre privilège : lorsque vous définissez des autorisations avec des politiques IAM, accordez uniquement les autorisations nécessaires à l’exécution d’une seule tâche. Pour ce faire, vous définissez les actions qui peuvent être entreprises sur des ressources spécifiques dans des conditions spécifiques, également appelées autorisations de moindre privilège. Pour plus d’informations sur l’utilisation d’IAM pour appliquer des autorisations, consultez politiques et autorisations dans IAM dans le Guide de l’utilisateur IAM.

  • Utilisez des conditions dans les politiques IAM pour restreindre davantage l’accès : vous pouvez ajouter une condition à vos politiques afin de limiter l’accès aux actions et aux ressources. Par exemple, vous pouvez écrire une condition de politique pour spécifier que toutes les demandes doivent être envoyées via SSL. Vous pouvez également utiliser des conditions pour accorder l'accès aux actions de service si elles sont utilisées par le biais d'un service spécifique Service AWS, tel que AWS CloudFormation. Pour plus d’informations, consultez Conditions pour éléments de politique JSON IAM dans le Guide de l’utilisateur IAM.

  • Utilisez l’Analyseur d’accès IAM pour valider vos politiques IAM afin de garantir des autorisations sécurisées et fonctionnelles : l’Analyseur d’accès IAM valide les politiques nouvelles et existantes de manière à ce que les politiques IAM respectent le langage de politique IAM (JSON) et les bonnes pratiques IAM. IAM Access Analyzer fournit plus de 100 vérifications de politiques et des recommandations exploitables pour vous aider à créer des politiques sécurisées et fonctionnelles. Pour plus d’informations, consultez Validation de politiques avec IAM Access Analyzer dans le Guide de l’utilisateur IAM.

  • Exiger l'authentification multifactorielle (MFA) : si vous avez un scénario qui nécessite des utilisateurs IAM ou un utilisateur root, activez l'authentification MFA pour une sécurité accrue. Compte AWS Pour exiger la MFA lorsque des opérations d’API sont appelées, ajoutez des conditions MFA à vos politiques. Pour plus d’informations, consultez Sécurisation de l’accès aux API avec MFA dans le Guide de l’utilisateur IAM.

Pour plus d’informations sur les bonnes pratiques dans IAM, consultez Bonnes pratiques de sécurité dans IAM dans le Guide de l’utilisateur IAM.

Autoriser les utilisateurs d'Amazon ECS à consulter leurs propres autorisations

Cet exemple montre comment créer une politique qui permet aux utilisateurs IAM d’afficher les politiques en ligne et gérées attachées à leur identité d’utilisateur. Cette politique inclut les autorisations permettant d'effectuer cette action sur la console ou par programmation à l'aide de l'API AWS CLI or AWS .

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Exemples de clusters Amazon ECS

La stratégie IAM suivante accorde l'autorisation de créer et de répertorier des clusters. Les actions CreateCluster et ListClusters n'acceptent aucune ressource. La définition de ressource est donc définie sur * pour toutes les ressources.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:ListClusters" ], "Resource": ["*"] } ] }

La stratégie IAM suivante accorde l'autorisation de décrire et de supprimer un cluster spécifique. Les DeleteCluster actions DescribeClusters et acceptent les clusters ARNs en tant que ressources.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeClusters", "ecs:DeleteCluster" ], "Resource": ["arn:aws:ecs:us-east-1:<aws_account_id>:cluster/<cluster_name>"] } ] }

La stratégie IAM suivante peut être liée à un utilisateur ou à groupe, ce qui autoriserait cet utilisateur ou ce groupe à effectuer des opérations uniquement sur un cluster spécifique.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:Describe*", "ecs:List*" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "ecs:DeleteCluster", "ecs:DeregisterContainerInstance", "ecs:ListContainerInstances", "ecs:RegisterContainerInstance", "ecs:SubmitContainerStateChange", "ecs:SubmitTaskStateChange" ], "Effect": "Allow", "Resource": "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/default" }, { "Action": [ "ecs:DescribeContainerInstances", "ecs:DescribeTasks", "ecs:ListTasks", "ecs:UpdateContainerAgent", "ecs:StartTask", "ecs:StopTask", "ecs:RunTask" ], "Effect": "Allow", "Resource": "*", "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/default"} } } ] }

Exemples d'instances de conteneur Amazon ECS

L'enregistrement des instances de conteneur est géré par l'agent Amazon ECS, mais vous pouvez parfois avoir besoin d'autoriser un utilisateur à annuler manuellement l'enregistrement d'une instance d'un cluster. Il est possible que l'instance de conteneur ait été enregistrée accidentellement dans le mauvais cluster ou que l'instance ait été résiliée alors que des tâches étaient en cours d'exécution.

La stratégie IAM suivante permet à un utilisateur de répertorier et d'annuler l'enregistrement des instances de conteneur qui se trouvent dans un cluster donné :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DeregisterContainerInstance", "ecs:ListContainerInstances" ], "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"] } ] }

La stratégie IAM qui suit permet à un utilisateur de décrire une instance de conteneur spécifiée dans un cluster donné. Pour accorder cette autorisation à toutes les instances de conteneur d'un cluster, vous pouvez remplacer l'UUID de l'instance de conteneur par *.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:DescribeContainerInstances"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:container-instance/<cluster_name>/<container_instance_UUID>"] } ] }

Exemples de définition de tâches Amazon ECS

Les politiques IAM de définition de tâche ne prennent pas en charge les autorisations au niveau des ressources, mais la politique IAM suivante autorise un utilisateur à enregistrer, répertorier et décrire des définitions de tâche :

Si vous utilisez la console, vous devez ajouter CloudFormation: CreateStack en tant qu'Action.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RegisterTaskDefinition", "ecs:ListTaskDefinitions", "ecs:DescribeTaskDefinition" ], "Resource": ["*"] } ] }

Exemple de tâche d'exécution d'Amazon ECS

Les ressources pour RunTask sont des définitions de tâches. Pour limiter les clusters sur lesquels un utilisateur peut exécuter des définitions de tâches, vous pouvez les spécifier dans le bloc Condition. Cette méthode présente l'avantage de ne pas avoir besoin de répertorier les définitions de tâche et les clusters de vos ressources pour accorder un accès approprié. Vous pouvez appliquer l'une ou l'autre, ou les deux.

La politique IAM suivante accorde l'autorisation d'exécuter toute révision d'une définition de tâche spécifique sur un cluster spécifique :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:RunTask"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:task-definition/<task_family>:*"] } ] }

Exemple de tâche de démarrage d'Amazon ECS

Les ressources pour StartTask sont des définitions de tâches. Pour limiter les clusters et les instances de conteneur sur lesquels un utilisateur peut démarrer des définitions de tâches, vous pouvez les spécifier dans le bloc Condition. Cette méthode présente l'avantage de ne pas avoir besoin de répertorier les définitions de tâche et les clusters de vos ressources pour accorder un accès approprié. Vous pouvez appliquer l'une ou l'autre, ou les deux.

La stratégie IAM suivante accorde l'autorisation de lancer la révision d'une définition de tâche spécifique sur un cluster spécifique et une instance de conteneur spécifique.

Note

Dans cet exemple, lorsque vous appelez l'StartTaskAPI avec le SDK AWS CLI ou un autre AWS SDK, vous devez spécifier la révision de la définition de tâche afin que le Resource mappage corresponde.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:StartTask"], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>", "ecs:container-instances": ["arn:aws:ecs:<region>:<aws_account_id>:container-instance/<cluster_name>/<container_instance_UUID>"] } }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:task-definition/<task_family>:*"] } ] }

Répertorier et décrire des exemples de tâches Amazon ECS

La stratégie IAM suivante autorise un utilisateur à répertorier les tâches pour un cluster spécifié :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:ListTasks"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["*"] } ] }

La stratégie IAM suivante permet à un utilisateur de décrire une tâche spécifiée dans un cluster spécifié :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:DescribeTasks"], "Condition": { "ArnEquals": {"ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>"} }, "Resource": ["arn:aws:ecs:<region>:<aws_account_id>:task/<cluster_name>/<task_UUID>"] } ] }

Créer un exemple de service Amazon ECS

La stratégie IAM suivante permet à un utilisateur de créer des services Amazon ECS dans la AWS Management Console :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:Describe*", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ecs:List*", "ecs:Describe*", "ecs:CreateService", "elasticloadbalancing:Describe*", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRoles", "iam:ListGroups", "iam:ListUsers" ], "Resource": ["*"] } ] }

Exemple de mise à jour du service Amazon ECS

La stratégie IAM suivante permet à un utilisateur de créer des services Amazon ECS dans la AWS Management Console :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:Describe*", "application-autoscaling:PutScalingPolicy", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ecs:List*", "ecs:Describe*", "ecs:UpdateService", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRoles", "iam:ListGroups", "iam:ListUsers" ], "Resource": ["*"] } ] }

Description des services Amazon ECS basée sur des balises

Vous pouvez utiliser des conditions dans votre stratégie basée sur l'identité pour contrôler l'accès aux ressources Amazon ECS en fonction des balises. Cet exemple montre comment créer une politique qui autorise la description de vos services. Toutefois, l'autorisation est accordée uniquement si l'étiquette de service Owner a la valeur du nom d'utilisateur de cet utilisateur. Cette politique accorde également les autorisations nécessaires pour réaliser cette action sur la console.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeServices", "Effect": "Allow", "Action": "ecs:DescribeServices", "Resource": "*" }, { "Sid": "ViewServiceIfOwner", "Effect": "Allow", "Action": "ecs:DescribeServices", "Resource": "arn:aws:ecs:*:*:service/*", "Condition": { "StringEquals": {"ecs:ResourceTag/Owner": "${aws:username}"} } } ] }

Vous pouvez rattacher cette politique aux utilisateurs IAM de votre compte. Si un utilisateur nommé richard-roe tente de décrire un service Amazon ECS service, le service doit être balisé Owner=richard-roe ou owner=richard-roe. Dans le cas contraire, l'utilisateur se voit refuser l'accès. La clé de condition d'étiquette Owner correspond à la fois à Owner et à owner, car les noms de clé de condition ne sont pas sensibles à la casse. Pour plus d'informations, veuillez consulter la rubrique Éléments de stratégie JSON IAM : Condition dans le Guide de l'utilisateur IAM.

Exemple de dérogation à l'espace de noms Refuser Amazon ECS Service Connect

La politique IAM suivante interdit à un utilisateur de remplacer l'espace de noms Service Connect par défaut dans une configuration de service. L'espace de noms par défaut est défini dans le cluster. Cependant, vous pouvez le remplacer dans une configuration de service. Par souci de cohérence, pensez à configurer tous vos nouveaux services pour qu'ils utilisent le même espace de noms. Utilisez les clés de contexte suivantes pour demander aux services d'utiliser un espace de noms spécifique. Remplacez la <region>, le <aws_account_id>, le <cluster_name> et l'<namespace_id> par les vôtres dans l'exemple suivant :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateService", "ecs:UpdateService" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>", "ecs:namespace": "arn:aws:servicediscovery:<region>:<aws_account_id>:namespace/<namespace_id>" } }, "Resource": "*" } ] }