Je souhaite autoriser les utilisateurs ou groupes AWS Identity and Access Management (IAM) à lancer de nouvelles instances Amazon Elastic Compute Cloud (Amazon EC2). Je souhaite également autoriser les utilisateurs IAM à créer de nouveaux volumes Amazon Elastic Block Store (Amazon EBS), mais uniquement lorsqu'ils appliquent des balises spécifiques.
Brève description
Spécifiez des balises d’instances EC2 et les volumes EBS dans l’appel d’API qui crée les ressources. En utilisant ce principe, vous pouvez exiger des utilisateurs IAM qu'ils balisent des ressources spécifiques en appliquant des conditions à leur stratégie IAM. Les stratégies de l’exemple qui suit ne permettent pas aux utilisateurs de créer des groupes de sécurité ou des paires de clés. Les utilisateurs doivent donc sélectionner les groupes de sécurité et les paires de clés pré-existants.
Les exemples de stratégies IAM suivants permettent aux utilisateurs de :
- Lancer les instances EC2 ayant des clés de balise et des valeurs correspondantes
- Lancer les instances EC2 ayant au moins une balise et une valeur correspondantes
- Lancer les instances EC2 ayant au moins une clé de balise correspondante
- Lancer les instances EC2 ayant uniquement la liste spécifiée de balises
Solution
Lancer les instances EC2 ayant des clés de balise et des valeurs correspondantes
L’exemple de stratégie qui suit permet à l’utilisateur de lancer une instance EC2 et de créer un volume EBS uniquement si l’utilisateur applique toutes les balises définies dans la stratégie avec le qualificatif ForAllValues. Si l'utilisateur applique une balise qui n'est pas incluse dans la stratégie, l'action est refusée. Afin d'appliquer la sensibilité à la casse, utilisez la condition aws:TagKeys.
Remarque : modifiez key1 et value1 dans les exemples de politiques pour y inclure les balises et valeurs s’appliquant à vos ressources :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowToDescribeAll",
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
},
{
"Sid": "AllowRunInstances",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*::image/*",
"arn:aws:ec2:*::snapshot/*",
"arn:aws:ec2:*:*:subnet/*",
"arn:aws:ec2:*:*:network-interface/*",
"arn:aws:ec2:*:*:security-group/*",
"arn:aws:ec2:*:*:key-pair/*"
]
},
{
"Sid": "AllowRunInstancesWithRestrictions",
"Effect": "Allow",
"Action": [
"ec2:CreateVolume",
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:network-interface/*"
],
"Condition": {
"StringEquals": {
"aws:RequestTag/key1": "value1",
"aws:RequestTag/key2": "value2"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"key1",
"key2"
]
}
}
},
{
"Sid": "AllowCreateTagsOnlyLaunching",
"Effect": "Allow",
"Action": [
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:network-interface/*"
],
"Condition": {
"StringEquals": {
"ec2:CreateAction": [
"RunInstances",
"CreateVolume"
]
}
}
}
]
}
Important : afin de réussir le lancement des instances EC2, cette politique doit inclure les clés et valeurs de balise correspondantes. Si les paires clé/valeur ne correspondent pas, vous recevez le message d'erreur « Launch Failed » (Échec du lancement) ou un message d’échec d’API similaire.
Résultats de l’exemple
| |
---|
Clé/valeur | Résultat |
key1/value1 et key2/value2 | autoriser |
key1/value1 | refuser |
key1/value2 | refuser |
aucune clé ou valeur | refuser |
Lancer les instances EC2 ayant au moins une balise et une valeur correspondantes
Dans l'exemple suivant, remplacez le bloc de condition AllowRunInstancesWithRestrictions pour permettre à un utilisateur de lancer une instance EC2 et créer des volumes EBS lorsqu'au moins une clé de balise est nommée key1 et que sa valeur est value1. Vous pouvez ajouter le nombre de balises supplémentaires que vous souhaitez dans la requête RunInstances :
"Condition": {
"StringEquals": {
"aws:RequestTag/key1": "value1"
},
"ForAnyValue:StringEquals": {
"aws:TagKeys": [
"key1"
]
}
}
Résultats de l’exemple
| |
---|
Clé/valeur | Résultat |
key1/value1 et key2/value2 | autoriser |
key1/value1 | autoriser |
key1/value2 | refuser |
aucune clé ou valeur | refuser |
Lancer les instances EC2 ayant au moins une clé de balise correspondante
Dans l'exemple de stratégie suivant, remplacez le bloc de condition AllowRunInstancesWithRestrictions pour permettre à un utilisateur de lancer une instance EC2 et de créer des volumes EBS lorsqu'au moins une clé de balise est nommée key1. Aucune valeur spécifique n'est requise pour la balise key1 et un nombre quelconque de balises supplémentaires peuvent être ajoutées dans la requête RunInstances .
"Condition": {
"ForAnyValue:StringEquals": {
"aws:TagKeys": [
"key1"
]
}
}
Résultats de l’exemple
| |
---|
Clé/valeur | Résultat |
key1/value1 et key2/value2 | autoriser |
key1/value1 | autoriser |
key1/value2 | autoriser |
aucune clé ou valeur | refuser |
Lancer les instances EC2 ayant uniquement la liste spécifiée de balises
Dans l'exemple de politique suivant, remplacez le bloc de condition AllowRunInstancesWithRestrictions pour permettre à un utilisateur de lancer une instance EC2 et créer des volumes EBS uniquement lorsque les clés de balise key1 et key2 sont fournies dans la requête. Aucune valeur spécifique n'est requise pour l'une ou l'autre des clés de balise, et aucune balise supplémentaire ne peut être ajoutée dans la requête RunInstances :
"Condition": {
"StringLike": {
"aws:RequestTag/key1": "*",
"aws:RequestTag/key2": "*"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"key1",
"key2"
]
}
}
Remarque : la condition StringLike est requise pour s'assurer que toutes les balises sont présentes.
Résultats de l’exemple
| |
---|
Clé/valeur | Résultat |
key1/AnyValue et key2/AnyValue | Autoriser |
key1/AnyValue | Refuser |
key2/AnyValue | Refuser |
Pas de clés ou de valeurs | Refuser |
key1/AnyValue, key2/AnyValue, key3/AnyValue | Refuser |
Informations connexes
Comment créer une stratégie IAM pour contrôler l'accès aux ressources Amazon EC2 à l'aide de balises ?
Création d'une condition avec plusieurs clés ou valeurs
Exemple de stratégie basée sur l’identité IAM
Vérifiez vos ressources Amazon EC2
Actions, ressources et clés de condition pour Amazon EC2