Dois-je spécifier la clé AWS KMS lorsque je télécharge un objet chiffré par KMS depuis Amazon S3 ?

Dernière mise à jour : 10/11/2020

Je souhaite télécharger des objets stockés dans Amazon Simple Storage Service (Amazon S3) qui utilisent le chiffrement côté serveur avec des clés gérées par AWS Key Management Service (SSE-KMS). Dois-je spécifier la clé AWS KMS pour télécharger ces objets à partir du compartiment ?

Résolution

Non, vous ne devez pas spécifier l’ID de clé AWS KMS lorsque vous téléchargez un objet chiffré par SSE-KMS à partir d’un compartiment S3. À la place, vous devez disposer l’autorisation de déchiffrer la clé AWS KMS.

Lorsque l’utilisateur envoie une requête GET, Amazon S3 vérifie si l’utilisateur ou le rôle AWS Identity and Access Management (IAM) qui envoie la demande est autorisé à déchiffrer la clé associée à l’objet. Si l’utilisateur ou le rôle IAM appartient au même compte AWS que la clé, l’autorisation de déchiffrer doit être octroyée dans la stratégie de la clé AWS KMS.

Remarque : si l'utilisateur ou le rôle IAM et la clé KMS se trouvent dans le même compte, vous pouvez également utiliser des stratégies IAM pour contrôler l'accès à la clé. Toutefois, vous devez modifier la stratégie de clé de manière à explicitement activer les stratégies IAM pour autoriser l'accès à la clé. Pour plus d'informations, consultez la section Utilisation de stratégies IAM avec AWS KMS.

Si l’utilisateur ou le rôle IAM appartient à un autre compte que la clé, l’autorisation de déchiffrement doit être octroyée à la fois dans la stratégie de l’utilisateur IAM et dans la stratégie de la clé.

Vous trouverez ci-après un exemple de stratégie IAM permettant à l’utilisateur de déchiffrer la clé AWS KMS et de télécharger depuis le compartiment S3 :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:kms:example-region-1:123456789012:key/example-key-id",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}
Vous trouverez ci-après un exemple de déclaration de stratégie de clé permettant à l’utilisateur de déchiffrer la clé :
{
  "Sid": "Allow decryption of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::123456789012:user/Bob"
    ]
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*"
}

Important : pour les utilisateurs ou les rôles IAM appartenant à un autre compte que le compartiment, assurez-vous que la stratégie du compartiment accorde également à l’utilisateur un accès aux objets. Par exemple, si l’utilisateur a besoin d’effectuer un téléchargement à partir du compartiment, l’utilisateur doit avoir l’autorisation d’exécuter l’opération s3:GetObject dans la stratégie du compartiment.

Une fois que vous avez l’autorisation de déchiffrer la clé, vous pouvez télécharger des objets S3 chiffrés avec la clé en utilisant une commande d’interface de ligne de commande AWS (AWS CLI) telle que celle-ci :

aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key dir/example-object-name example-object-name

Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, assurez-vous que vous utilisez la version la plus récente d’AWS CLI.