Je ne parviens pas à lancer d'instances EC2 avec des AMI chiffrées ou avec des volumes chiffrés à l'aide d'Amazon EC2 Auto Scaling

Date de la dernière mise à jour : 12/10/2021

Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling n'a pas réussi à lancer des instances à l’aide d’Amazon Machine Image (AMI) chiffrées ou de volumes chiffrés. Les identités AWS Identity and Access Management (IAM) (utilisateurs, rôles) utilisées pour créer Amazon EC2 Auto Scaling disposent des autorisations d'administrateur.

Brève description

Amazon EC2 Auto Scaling utilise des rôles liés au service pour obtenir les autorisations requises pour appeler d'autres services AWS. Les autorisations pour SLR sont codées en dur par AWS et ne peuvent pas être modifiées. Par défaut, les autorisations fournies à Amazon EC2 Auto Scaling SLR n'incluent pas les autorisations d'accès à la clé AWS KMS.

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

Résolution

Suivez ces instructions selon qu'Amazon EC2 Auto Scaling utilise la clé gérée par le client présente dans le même compte AWS ou dans un compte externe.

Remarque :

Amazon EC2 Auto Scaling utilise la clé gérée par le client présente dans le même compte AWS

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

Remarque : remplacez 123456789012 par l'ID de compte du groupe Amazon EC2 Auto Scaling.

{
    "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 la clé gérée par le client présente dans le compte AWS externe.

1.    Suivez les instructions pour modifier une stratégie clé. Modifiez la stratégie clé pour accorder des autorisations à l'entité IAM présente dans le compte AWS externe pour exécuter l'action 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 AWS CLI create-grant avec les informations d'identification d'une entité IAM présente dans le compte AWS propriétaire du groupe Amazon EC2 Auto Scaling.

Remarque : remplacez 444455556666 par l'ID de compte de la clé KMS.

$ 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

Remarque : assurez-vous que l'entité IAM dispose des autorisations nécessaires pour exécuter l'action CreateGrant API. Si les autorisations CreateGrant sont manquantes, ajoutez l'instruction suivante à la stratégie attachée de l'entité IAM :

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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?