Je ne peux pas utiliser Amazon EC2 Auto Scaling pour lancer des instances EC2 avec des AMI ou des volumes chiffrés

Lecture de 4 minute(s)
0

Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling n'a pas réussi à lancer des instances contenant une image Amazon Machine Image (AMI) chiffrée ou des volumes chiffrés. L'identité AWS Identity and Access Management (IAM) qui a créé l'Amazon EC2 Auto Scaling dispose d'autorisations d'administrateur.

Brève description

Amazon EC2 Auto Scaling utilise des rôles liés à un service pour obtenir les autorisations requises permettant d'appeler d'autres services AWS. Les autorisations pour SLR sont codées en dur. Elles ne peuvent donc pas être modifiées. Les autorisations par défaut transmises à Amazon EC2 Auto Scaling SLR n'incluent pas les autorisations d'accès aux clés AWS Key Management Service (AWS KMS).

Pour chiffrer des volumes ou des AMI Amazon Elastic Block Store (Amazon EBS) avec Amazon EC2 Auto Scaling, utilisez des clés gérées par AWS ou des clés gérées par le client. Pour utiliser les clés gérées par AWS, Amazon EC2 Auto Scaling n'a pas besoin d'autorisations supplémentaires. Toutefois, Amazon EC2 Auto Scaling SLR doit disposer d'autorisations supplémentaires avec des clés gérées par le client.

Résolution

Les exemples suivants utilisent Amazon EC2 Auto Scaling SLR par défaut AWSServiceRoleForAutoScaling, mais vous pouvez créer un nom de rôle unique.

Vous devrez créer des octrois AWS KMS à partir du compte propriétaire du groupe Amazon EC2 Auto Scaling, et non à partir du compte AWS KMS. Pour en savoir plus, reportez-vous à la section Octrois dans AWS KMS.

Remarque : si vous recevez des messages d'erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez bien la version la plus récente d'AWS CLI.

Amazon EC2 Auto Scaling utilise une clé gérée par le client qui se trouve dans le même compte AWS

Suivez les instructions pour modifier une politique clé et ajoutez l'exemple d'énoncé suivant :

Remarque : remplacez **123456789012 ** par l'ID de compte sur lequel le groupe Amazon EC2 Auto Scaling est déployé.

{    "Sid": "Allow service-linked role use of the KMS",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
},
{
    "Sid": "Allow attachment of persistent resources",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "Bool": {
            "kms:GrantIsForAWSResource": true
        }
    }
}

Amazon EC2 Auto Scaling utilise une clé gérée par le client qui se trouve dans un compte AWS externe

  1. Suivez les instructions pour modifier une stratégie de clé. Modifier la stratégie de clé afin que l'entité IAM présente dans le compte AWS externe puisse exécuter l'action d'API CreateGrant :

    {    "Sid": "Allow external account 111122223333 use of the KMS",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::111122223333:root"
            ]
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources in external account 111122223333",
        "Effect": "Allow",
        "Principal": {
            "AWS": [
                "arn:aws:iam::111122223333:root"
            ]
        },
        "Action": [
            "kms:CreateGrant"
        ],
        "Resource": "*"
    }
  2. Utilisez la commande create-grant de l'interface de la ligne de commande AWS avec les informations d'identification d'une entité IAM du compte AWS propriétaire du groupe Amazon EC2 Auto Scaling :
    Remarque : remplacez ** 444455556666** par l'ID de compte sur lequel la clé KMS est présente.

    $ aws kms create-grant --key-id arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling --operations Decrypt GenerateDataKeyWithoutPlaintext ReEncryptFrom ReEncryptTo CreateGrant

    Assurez-vous que l'entité IAM est autorisée à effectuer l'action d'API CreateGrant. Si les autorisations CreateGrant sont absentes, ajoutez l'instruction suivante à la politique attachée à l'entité IAM :

    {      "Sid": "AllowCreationOfGrantForTheKMSinExternalAccount444455556666",
          "Effect": "Allow",
          "Action": "kms:CreateGrant",
          "Resource": "arn:aws:kms:us-west-2:444455556666:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d"
    }

Informations connexes

Rôles liés à un service pour Amazon EC2 Auto Scaling

Stratégie de clé KMS requise pour une utilisation avec des volumes chiffrés

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois