Comment puis-je restreindre l'accès des identités IAM à des ressources Amazon EC2 spécifiques ?

Lecture de 4 minute(s)
0

Je souhaite restreindre l'accès des identités AWS Identity and Access Management (IAM) à une ressource Amazon Elastic Compute Cloud (Amazon EC2) spécifique.

Brève description

Amazon EC2 prend partiellement en charge les autorisations ou les conditions au niveau des ressources. Vous pouvez utiliser des autorisations au niveau des ressources pour contrôler la manière dont les identités IAM sont autorisées à accéder à des ressources Amazon EC2 spécifiques.

Il est également possible d'utiliser l'ABAC (autorisation basée sur les balises) pour contrôler l'accès aux ressources AWS. Vous trouverez plus d'informations à ce sujet dans le tutoriel IAM : définition des autorisations d’accès aux ressources AWS en fonction des balises.

Résolution

Utilisez les exemples de politiques IAM suivants pour restreindre l'accès aux instances Amazon EC2 pour votre cas d'utilisation. Ensuite, associez la politique à l'identité IAM à laquelle vous souhaitez restreindre l'accès.

Restreindre l'accès uniquement aux instances de démarrage, d'arrêt ou de redémarrage

Vous trouverez ci-dessous un exemple de politique qui limite l'accès d'une identité IAM uniquement aux instances EC2 de démarrage, d'arrêt ou de redémarrage:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "Bob"
                }
            }
        }
    ]
}

Remarque : Remplacez ** Owner ** par votre clé de balise, ** Bob ** par votre valeur de balise et ** AccountId ** par vos identifiants de compte AWS.

Afin de restreindre d'autres ressources Amazon EC2 par région AWS, assurez-vous que les actions prennent en charge les autorisations et les conditions au niveau des ressources.

**Restreindre le lancement des instances EC2 par balise **

L'exemple de politique suivant utilise la clé de balise ** Owner** pour restreindre l'accès à une identité IAM afin de lancer uniquement des instances EC2 :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Owner": "*"
                }
            }
        },
        {
            "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/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

Remarque : Remplacez ** Owner ** par votre clé de balise et AccountId par vos identifiants de compte.

Restreindre le lancement d'instances EC2 par type d'instance

L'exemple de politique suivant limite l'accès d'une identité IAM au lancement d'instances EC2 avec le type d'instance t3.* :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "ec2:InstanceType": "t3.*"
                }
            }
        },
        {
            "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/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

**Remarque :remplacez le type d'instance t3.* par votre type d'instance, par exemple t3.nano. remplacez également ** AccountID par les identifiants de votre compte.

Pour plus d'informations, consultez la section Conventions de dénomination des types d'instances Amazon EC2.

Informations connexes

Comment puis-je créer une politique IAM pour contrôler l’accès aux ressources Amazon EC2 par le biais de balises ?

Comment utiliser les balises de politique IAM pour restreindre la manière dont une instance EC2 ou un volume EBS peuvent être créés et accessibles ?

Politiques basées sur l'identité sur Amazon EC2