Je veux restreindre l'accès des utilisateurs afin qu'ils puissent lancer des instances Amazon Elastic Compute Cloud (Amazon EC2) uniquement depuis des images Amazon Machine Images (AMI) étiquetées. Comment puis-je restreindre l'accès au lancement d'instances EC2 à l’aide d’étiquettes AMI ?

Pour restreindre l'accès des utilisateurs au lancement d'instances EC2 au moyen d'images AMI étiquetées, créez une image AMI à partir d'une instance existante - ou utilisez une image AMI existante - puis ajoutez une étiquette à cette dernière. Ensuite, créez une stratégie IAM personnalisée avec une étiquette de condition qui restreint les autorisations des utilisateurs au lancement des seules instances qui utilisent l'image AMI étiquetée.

Dans cet exemple de stratégie IAM, il y a trois identifiants de déclaration (Sid, statement ID) :

  • L’identifiant de déclaration ReadOnlyAccess permet aux utilisateurs de visualiser toutes les ressources EC2 de votre compte à l'aide de Describe*, qui inclut toutes les actions EC2 commençant par Describe. L’identifiant de déclaration ReadOnlyAccess permet également aux utilisateurs d'obtenir la sortie console et les captures d'écran d'une instance EC2. Pour en savoir plus, consultez GetConsoleOutput et GetConsoleScreenshot. Les autorisations CloudWatch pour DescribeAlarms et GetMetricStatistics permettent l'affichage d'informations de santé essentielles sur les instances EC2 dans la console Amazon EC2. L'autorisation IAM pour ListInstanceProfiles permet aux profils d'instance existants d'être inscrits dans la liste des rôles IAM sur la page de configuration des détails de l'instance au lancement d'une instance EC2. Cependant, l'API ListInstanceProfiles ne permet pas aux utilisateurs d'attacher un rôle IAM à une instance EC2.
  • L’identifiant de déclaration ActionsRequiredtoRunInstancesInVPC autorise les utilisateurs à exécuter l'API RunInstances depuis n'importe quelle instance, paire de clés, groupe de sécurité, volume, interface réseau ou sous-réseau dans la région us-east-1, à l'aide d’autorisations au niveau des ressources, en spécifiant l'ARN pour chaque ressource.
  • L’identifiant de déclaration LaunchingEC2withAMIsAndTags permet aux utilisateurs de lancer des instances EC2 en utilisant une image AMI si cette dernière a une étiquette d'environnement définie sur « Prod » et que l'instance est dans la région us-east-1. Un ARN est attribué à l'autorisation au niveau des ressources pour toute imeage AMI se trouvant dans la région us-east-1, et l’état est identique aux valeurs de la clé de l’étiquette EC2:ResourceTag/Environment et de la clé « Prod ».

Cette stratégie permet aux utilisateurs de lister les rôles au lancement d'une instance EC2, mais ils ne pourront pas lancer une instance avec un rôle attaché à moins d'avoir l'autorisation iam:PassRole. Cette stratégie ne permet pas aux utilisateurs de créer de nouveaux groupes de sécurité. Les utilisateurs doivent sélectionner un groupe de sécurité existant pour lancer une instance EC2, sauf s'ils ont l'autorisation EC2:CreateSecurityGroup. L'étiquette EC2:CreateSecurityGroup permet uniquement de créer un groupe de sécurité - cette action n'ajoute ni ne modifie aucune règle. Pour ajouter des règles d'entrée, les utilisateurs doivent avoir les autorisations pour l'action de l'API EC2:AuthorizeSecurityGroupIngress entrante et l'action de l'API EC2:AuthorizeSecurityGroupEgress sortante.

La stratégie IAM suivante utilise les autorisations au niveau des ressources pour les ressources requises pour l'action RunInstances. Pour en savoir plus sur les ressources requises pour RunInstances, consultez la page Autorisations au niveau des ressources pour RunInstances.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ReadOnlyAccess",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:GetConsole*",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:GetMetricStatistics",
                "iam:ListInstanceProfiles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ActionsRequiredtoRunInstancesInVPC",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:us-east-1:AccountId:instance/*",
                "arn:aws:ec2:us-east-1:AccountId:key-pair/*",
                "arn:aws:ec2:us-east-1:AccountId:security-group/*",
                "arn:aws:ec2:us-east-1:AccountId:volume/*",
                "arn:aws:ec2:us-east-1:AccountId:network-interface/*",
                "arn:aws:ec2:us-east-1:AccountId:subnet/*"
            ]
        },
        {
            "Sid": "LaunchingEC2withAMIsAndTags",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Environment": "Prod"
                }
            }
        }
    ]
}

Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 09/05/2018