

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
<a name="security_iam_id-based-policy-examples"></a>

Par défaut, les utilisateurs et les rôles ne sont pas autorisés à créer ou à modifier les ressources Amazon ECS. 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.

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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) 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](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelasticcontainerservice.html) dans la *référence d'autorisation du service*.

**Topics**
+ [Pratiques exemplaires en matière de politiques Amazon ECS](#security_iam_service-with-iam-policy-best-practices)
+ [Autorisation aux utilisateurs IAM d’afficher leurs propres autorisations](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Exemples de cluster Amazon ECS](#IAM_cluster_policies)
+ [Exemples d’instances de conteneurs Amazon ECS](#IAM_container_instance_policies)
+ [Exemples de définition de tâche Amazon ECS](#IAM_task_definition_policies)
+ [Exemple d’exécution de tâche Amazon ECS](#IAM_run_policies)
+ [Exemple de démarrage de tâche Amazon ECS](#IAM_start_policies)
+ [Exemples de recensement et description de tâche Amazon ECS](#IAM_task_policies)
+ [Exemple de création d’un service Amazon ECS](#IAM_create_service_policies)
+ [Description des services Amazon ECS basée sur des balises](#security_iam_id-based-policy-examples-view-cluster-tags)
+ [Exemple de refus de remplacement de l’espace de noms Service Connect Amazon ECS](#IAM_disable_namespace_override_policies)

## Pratiques exemplaires en matière de politiques Amazon ECS
<a name="security_iam_service-with-iam-policy-best-practices"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) ou [politiques gérées par AWS pour les activités professionnelles](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 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 CloudFormation. Pour plus d’informations, consultez [Conditions pour éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans le *Guide de l’utilisateur IAM*.

## Autorisation aux utilisateurs IAM d’afficher leurs propres autorisations
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

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 cluster Amazon ECS
<a name="IAM_cluster_policies"></a>

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.

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:CreateCluster",
                "ecs:ListClusters"
            ],
            "Resource": "*"
        }
    ]
}
```

------

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeClusters",
                "ecs:DeleteCluster"
            ],
            "Resource": ["arn:aws:ecs:us-east-1:123456789012:cluster/cluster-name"]
        }
    ]
}
```

------

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.

------
#### [ JSON ]

****  

```
{
    "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:123456789012: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:123456789012:cluster/default"}
            }
        }
    ]
}
```

------

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.

------
#### [ JSON ]

****  

```
{
    "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:111122223333: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:111122223333:cluster/default"}
            }
        }
    ]
}
```

------

## Exemples d’instances de conteneurs Amazon ECS
<a name="IAM_container_instance_policies"></a>

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é :

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:DeregisterContainerInstance",
                "ecs:ListContainerInstances"
            ],
            "Resource": "arn:aws:ecs:us-east-1:123456789012:cluster/cluster_name"
        }
    ]
}
```

------

## Exemples de définition de tâche Amazon ECS
<a name="IAM_task_definition_policies"></a>

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`.

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RegisterTaskDefinition",
                "ecs:ListTaskDefinitions",
                "ecs:DescribeTaskDefinition"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Exemple d’exécution de tâche Amazon ECS
<a name="IAM_run_policies"></a>

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 :

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["ecs:RunTask"],
            "Condition": {
                "ArnEquals": {"ecs:cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/cluster_name"}
            },
            "Resource": ["arn:aws:ecs:us-east-1:123456789012:task-definition/task_family:*"]
        }
    ]
}
```

------

## Exemple de démarrage de tâche Amazon ECS
<a name="IAM_start_policies"></a>

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'`StartTask`API 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.

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["ecs:StartTask"],
            "Condition": {
                "ArnEquals": {
                    "ecs:cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/cluster_name",
                    "ecs:container-instances": ["arn:aws:ecs:us-east-1:123456789012:container-instance/cluster_name/container_instance_UUID"]
                }
            },
            "Resource": ["arn:aws:ecs:us-east-1:123456789012:task-definition/task_family:*"]
        }
    ]
}
```

------

## Exemples de recensement et description de tâche Amazon ECS
<a name="IAM_task_policies"></a>

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

------
#### [ JSON ]

****  

```
{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["ecs:DescribeTasks"],
            "Condition": {
                "ArnEquals": {"ecs:cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/cluster_name"}
            },
            "Resource": ["arn:aws:ecs:us-east-1:123456789012:task/cluster_name/task_UUID"]
        }
    ]
}
```

------

## Exemple de création d’un service Amazon ECS
<a name="IAM_create_service_policies"></a>

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

------
#### [ JSON ]

****  

```
{
    "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": "*"
        }
    ]
}
```

------

## Description des services Amazon ECS basée sur des balises
<a name="security_iam_id-based-policy-examples-view-cluster-tags"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) dans le *Guide de l'utilisateur IAM*.

## Exemple de refus de remplacement de l’espace de noms Service Connect Amazon ECS
<a name="IAM_disable_namespace_override_policies"></a>

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 :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:CreateService",
                "ecs:UpdateService"
            ],
            "Condition": {
                "ArnEquals": {
                    "ecs:cluster": "arn:aws:ecs:us-east-1:123456789012:cluster/cluster_name",
                    "ecs:namespace": "arn:aws:servicediscovery:us-east-1:123456789012:namespace/namespace_id"
                }
            },
            "Resource": "*"
        }
    ]
}
```

------