J'ai lancé une instance EC2 avec des volumes chiffrés attachés, mais celle-ci ne démarre pas : elle passe immédiatement d'un état d'attente à un état arrêté. Comme résoudre ce problème ?

Si vous utilisez AWS Key Management Service (AWS KMS) pour protéger vos données dans un service intégré, soyez prudent lorsque vous spécifiez les opérateurs de condition d'adresse IP ou la clé de condition aws:SourceIp dans la même déclaration de stratégie d'accès. Si vous attachez un volume Amazon Elastic Block Store (Amazon EBS) chiffré à une instance Amazon Elastic Compute Cloud (Amazon EC2), Amazon EC2 envoie à AWS KMS une demande de déchiffrement de la clé de données chiffrée du volume. Cette demande provient d'une adresse IP associée à l'instance EC2, et non de l'adresse IP de l'utilisateur. La demande de déchiffrement est rejetée si une condition SourceIp est définie, et l'instance échoue.

Pour vérifier s'il s'agit de la raison, exécutez la commande describe-instances command pour votre instance. Si le message d'erreur suivant s'affiche, il est probable que vous ayez une condition sourceIp définie qui demande le déchiffrement via AWS KMS :

"StateReason": {
  "Message": "Client.InternalError: Client error on launch", 
  "Code": "Client.InternalError"
  },

Si vous utilisez AWS KMS pour protéger vos données dans un service intégré, soyez prudent lorsque vous spécifiez les opérateurs de condition d'adresse IP ou la clé de condition aws:SourceIp dans la même déclaration de stratégie d'accès. Si vous attachez un volume EBS chiffré à une instance EC2, Amazon EC2 envoie à AWS KMS une demande de déchiffrement de la clé de données chiffrée du volume. Cette demande provient d'une adresse IP associée à l'instance EC2, et non de l'adresse IP de l'utilisateur. La demande est rejetée si une condition sourceIp est définie, et l'instance échoue.

Utilisez la condition kms:ViaService. AWS KMS permet l'exécution d'interactions à partir de ce service en votre nom.

Remarque : les instances EC2 auxquelles des utilisateurs sont connectés ne peuvent pas interagir avec cette condition ; seul le service peut le faire en votre nom. Cette interaction est consignée dans AWS CloudTrail pour examen.

"userIdentity": {
  "sessionContext": {
    "sessionIssuer": {
      "accountId": "450822418798",
      "principalId": "450822418798:aws:ec2-infrastructure",
      "userName": "aws:ec2-infrastructure",
      "arn": "arn:aws:iam::450822418798:role/aws:ec2-infrastructure",
      "type": "Role"
     },
…
    "eventType": "AwsApiCall",
    "@log_group": "CloudTrail/AllRegionLogGroup",
    "awsRegion": "eu-west-1",
    "requestParameters": {
      "encryptionContext": {
        "aws:ebs:id": "vol-0ca158925aa9c1883"
      }    
},

Dans cet exemple, l'entrée CloudTrail pour un appel d'API est envoyée à AWS KMS. L'appel est effectué par aws:ec2-infrastructure, et non à partir d'une adresse IP spécifique. Lorsque vous ajoutez une stratégie à un utilisateur qui autorise AWS KMS à interagir avec EC2, l'appel d'API peut aboutir.


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 : 03/07/2017

Date de mise à jour : 18/07/2018