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

Dernière mise à jour: 31-03-2021

Amazon EC2 Auto Scaling n'a pas réussi à lancer des instances avec des AMI chiffrées ou avec des 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 (SLR) 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 aux clés principales du client (CMK).

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

Résolution

Suivez ces instructions selon que Amazon EC2 Auto Scaling utilise le CMK géré par le client présent dans le même compte AWS ou dans un compte externe.

Remarque :

Amazon EC2 Auto Scaling utilise le CMK géré par le client présent dans le même compte AWS

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

Remarque : Remplacez 123456789012 par l'ID de compte où le groupe Amazon EC2 Auto Scaling est déployé.

{
    "Sid": "Allow service-linked role use of the CMK",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
        ]
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKeyWithoutPlaintext"
    ],
    "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 le CMK géré par le client présent 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 CMK",
   "Effect": "Allow",
   "Principal": {
       "AWS": [
           "arn:aws:iam::111122223333:root"
       ]
   },
   "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKeyWithoutPlaintext"
   ],
   "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 où le CMK est présent.

$ 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": "AllowCreationOfGrantForTheCMKinExternalAccount444455556666",
      "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 ?