Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS) pour les chargements de nouveaux objets dans des compartiments de répertoires - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS) pour les chargements de nouveaux objets dans des compartiments de répertoires

Pour les compartiments d'annuaire, pour chiffrer vos données à l'aide du chiffrement côté serveur, vous pouvez utiliser soit le chiffrement côté serveur avec des clés gérées Amazon S3 (SSE-S3) (par défaut), soit le chiffrement côté serveur avec des clés () (SSE-KMS). AWS Key Management Service AWS KMS Nous recommandons que le chiffrement par défaut du compartiment utilise la configuration de chiffrement souhaitée et que vous ne remplaciez pas le chiffrement par défaut du compartiment dans vos demandes CreateSession ni dans vos demandes d’objets PUT. Les nouveaux objets seront ensuite automatiquement chiffrés avec les paramètres de chiffrement souhaités. Pour plus d'informations sur les comportements de remplacement du chiffrement dans les compartiments de répertoire, voir Spécifier le chiffrement côté serveur avec AWS KMS pour les téléchargements de nouveaux objets.

Le chiffrement est configuré par défaut pour tous les compartiments Amazon S3, et tous les nouveaux objets qui sont chargés dans un compartiment S3 sont automatiquement chiffrés au repos. Le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3) est la configuration de chiffrement par défaut pour chaque compartiment dans Amazon S3. Si vous souhaitez spécifier un type de chiffrement différent pour un compartiment de répertoires, vous pouvez utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS). Pour chiffrer de nouveaux objets dans un compartiment de répertoires avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut de ce compartiment avec une clé KMS (plus spécifiquement, une clé gérée par le client). La Clé gérée par AWS (aws/s3) n’est pas prise en charge. Votre configuration SSE-KMS ne peut prendre en charge qu’une seule clé gérée par le client par compartiment de répertoires pendant toute la durée de vie du compartiment. Après avoir spécifié une clé gérée par le client pour SSE-KMS, vous ne pouvez pas remplacer cette clé pour la configuration SSE-KMS du compartiment. Ensuite, lorsque vous spécifierez les paramètres de chiffrement côté serveur pour les nouveaux objets avec SSE-KMS, vous devrez vous assurer que la clé de chiffrement est la clé gérée par le client que vous avez spécifiée pour la configuration de chiffrement par défaut du compartiment de répertoires. Pour utiliser une nouvelle clé gérée par le client pour vos données, nous vous recommandons de copier vos objets existants dans un nouveau compartiment de répertoires avec une nouvelle clé gérée par le client.

Vous pouvez appliquer le chiffrement lorsque vous chargez un nouvel objet ou copiez un objet existant. Si vous modifiez le chiffrement d’un objet, un nouvel objet est créé pour remplacer l’ancien.

Vous pouvez spécifier SSE-KMS à l'aide des opérations de l'API REST AWS SDKs, et du AWS Command Line Interface ()AWS CLI.

Note
  • Pour les compartiments de répertoires, les comportements de remplacement du chiffrement sont les suivants :

    • Lorsque vous utilisez CreateSessionl'API REST pour authentifier et autoriser les demandes d'API de point de terminaison zonal, à l'exception de CopyObjectet UploadPartCopy, vous pouvez remplacer les paramètres de chiffrement par SSE-S3 ou par SSE-KMS uniquement si vous avez précédemment spécifié le chiffrement par défaut du compartiment avec SSE-KMS.

    • Lorsque vous utilisez CreateSessionwith the AWS CLI ou the AWS SDKs pour authentifier et autoriser des requêtes d'API de point de terminaison zonal, à l'exception de CopyObjectet UploadPartCopy, vous ne pouvez pas du tout annuler les paramètres de chiffrement.

    • Lorsque vous faites des CopyObjectdemandes, vous pouvez remplacer les paramètres de chiffrement par SSE-S3 ou SSE-KMS uniquement si vous avez précédemment spécifié le chiffrement par défaut du compartiment avec SSE-KMS. Lorsque vous faites des UploadPartCopydemandes, vous ne pouvez pas annuler les paramètres de chiffrement.

  • Vous pouvez utiliser plusieurs régions AWS KMS keys dans Amazon S3. Cependant, Amazon S3 traite actuellement les clés multi-régions comme s’il s’agissait de clés à région unique et n’utilise pas les fonctions multi-régions de la clé. Pour plus d’informations, consultez Utilisation des clés multi-régions dans le Guide du développeur AWS Key Management Service .

  • Si vous souhaitez utiliser une clé KMS qui appartient à un autre compte, vous devez avoir l’autorisation d’utiliser cette clé. Pour plus d’informations sur les autorisations intercomptes pour les clés KMS, consultez Création de clés KMS que d’autres comptes peuvent utiliser dans le Guide du développeur AWS Key Management Service .

Note

Une seule clé gérée par le client est prise en charge par compartiment de répertoires pendant toute la durée de vie de ce compartiment. La Clé gérée par AWS (aws/s3) n’est pas prise en charge. Une fois que vous avez spécifié SSE-KMS comme configuration de chiffrement par défaut de votre compartiment avec une clé gérée par le client, vous ne pourrez plus modifier cette clé pour la configuration SSE-KMS du compartiment.

Pour les opérations d'API du point de terminaison zonal (au niveau de l'objet), à l'exception de CopyObjectet UploadPartCopy, vous authentifiez et autorisez les demandes pour une faible latence. CreateSession Nous recommandons que le chiffrement par défaut du compartiment utilise les configurations de chiffrement souhaitées et que vous ne remplaciez pas le chiffrement par défaut du compartiment dans vos demandes CreateSession ni dans vos demandes d’objets PUT. Les nouveaux objets seront ensuite automatiquement chiffrés avec les paramètres de chiffrement souhaités. Pour chiffrer de nouveaux objets dans un compartiment de répertoires avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut de ce compartiment avec une clé KMS (plus spécifiquement, une clé gérée par le client). Ensuite, lorsqu’une session sera créée pour les opérations de l’API de point de terminaison zonal, les nouveaux objets seront automatiquement chiffrés et déchiffrés avec les clés SSE-KMS et les clés de compartiment S3 pendant la session. Pour plus d'informations sur les comportements de remplacement du chiffrement dans les compartiments de répertoire, voir Spécifier le chiffrement côté serveur avec AWS KMS pour les téléchargements de nouveaux objets.

Dans les appels d'API de point de terminaison zonaux (sauf CopyObjectet UploadPartCopy) utilisant l'API REST, vous ne pouvez pas remplacer les valeurs des paramètres de chiffrement (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-idx-amz-server-side-encryption-context, etx-amz-server-side-encryption-bucket-key-enabled) de la CreateSession demande. Il n’est pas nécessaire de spécifier explicitement les valeurs de ces paramètres de chiffrement dans les appels d’API de point de terminaison zonal. Amazon S3 utilisera les valeurs des paramètres de chiffrement de la demande CreateSession pour protéger les nouveaux objets dans le compartiment de répertoires.

Note

Lorsque vous utilisez le AWS CLI ou le AWS SDKs, pourCreateSession, le jeton de session est automatiquement actualisé pour éviter les interruptions de service à l'expiration d'une session. AWS CLI Ou AWS SDKs utilisez la configuration de chiffrement par défaut du compartiment pour la CreateSession demande. Il n’est pas possible de remplacer les valeurs des paramètres de chiffrement dans la demande CreateSession. De plus, dans les appels d'API du point de terminaison zonal (sauf CopyObjectet UploadPartCopy), il n'est pas possible de remplacer les valeurs des paramètres de chiffrement de la CreateSession demande.

En effet CopyObject, pour chiffrer de nouvelles copies d'objets dans un compartiment d'annuaire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire avec une clé KMS (en particulier, une clé gérée par le client). Ensuite, lorsque vous spécifierez les paramètres de chiffrement côté serveur pour les nouvelles copies d’objets avec SSE-KMS, vous devrez vous assurer que la clé de chiffrement est la clé gérée par le client que vous avez spécifiée pour la configuration de chiffrement par défaut du compartiment de répertoires. En effet UploadPartCopy, pour chiffrer de nouvelles copies partielles d'objets dans un compartiment d'annuaire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire avec une clé KMS (en particulier, une clé gérée par le client). Vous ne pouvez pas spécifier de paramètres de chiffrement côté serveur pour les nouvelles copies partielles d'objets avec SSE-KMS dans les en-têtes de demande. UploadPartCopy En outre, les paramètres de chiffrement que vous fournissez dans la CreateMultipartUploaddemande doivent correspondre à la configuration de chiffrement par défaut du compartiment de destination.

Opérations d’API REST Amazon S3 prenant en charge SSE-KMS

Les opérations d’API REST suivantes au niveau de l’objet dans les compartiments de répertoires acceptent les en-têtes de demande x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id et x-amz-server-side-encryption-context.

  • CreateSession— Lorsque vous utilisez les opérations d'API du point de terminaison zonal (au niveau de l'objet) (sauf CopyObject et UploadPartCopy), vous pouvez spécifier ces en-têtes de requête.

  • PutObject – Lorsque vous chargez des données avec l'opération d'API PUT, vous pouvez spécifier ces en-têtes de demande.

  • CopyObject – Lorsque vous copiez un objet, vous disposez d'un objet source et d'un objet cible. Lorsque vous transmettez les en-têtes SSE-KMS avec l’opération CopyObject, ils sont appliqués uniquement à l’objet cible.

  • CreateMultipartUpload : lorsque vous chargez des objets volumineux avec l’opération d’API de chargement partitionné, vous pouvez spécifier ces en-têtes. Vous spécifiez ces en-têtes dans la demande CreateMultipartUpload.

Les en-têtes de réponse des opérations d’API REST suivantes renvoient l’en-tête x-amz-server-side-encryption lorsqu’un objet est stocké grâce au chiffrement côté serveur.

Important
  • Toutes les demandes GET et PUT pour un objet protégé par AWS KMS échouent si vous ne les faites pas en utilisant le protocole TLS (Transport Layer Security) ou Signature Version 4.

  • Si votre objet utilise le SSE-KMS, n'envoyez pas d'en-têtes de demande de chiffrement pour les GET requêtes et les HEAD requêtes, sinon vous obtiendrez une erreur HTTP 400. BadRequest

Contexte de chiffrement (x-amz-server-side-encryption-context)

Si vous spécifiez x-amz-server-side-encryption:aws:kms, l’API Amazon S3 vous permet de fournir un contexte de chiffrement explicite avec l’en-tête x-amz-server-side-encryption-context. Pour les compartiments de répertoires, un contexte de chiffrement est un ensemble de paires clé-valeur qui contient des informations contextuelles supplémentaires sur les données. La valeur doit correspondre au contexte de chiffrement par défaut, à savoir l’Amazon Resource Name (ARN) du compartiment. Aucune valeur supplémentaire de contexte de chiffrement n’est prise en charge.

Pour plus d’informations sur le contexte de chiffrement dans les compartiments de répertoires, consultez Contexte de chiffrement. Pour des informations générales sur le contexte de chiffrement, consultez Concepts AWS Key Management Service - Contexte de chiffrement dans le Guide du développeur AWS Key Management Service .

AWS KMS ID de clé (x-amz-server-side-encryption-aws-kms-key-id)

Vous pouvez utiliser l’en-tête x-amz-server-side-encryption-aws-kms-key-id pour spécifier l’ID de la clé gérée par le client utilisée pour protéger les données.

Votre configuration SSE-KMS ne peut prendre en charge qu’une seule clé gérée par le client par compartiment de répertoires pendant toute la durée de vie du compartiment. La Clé gérée par AWS (aws/s3) n’est pas prise en charge. De même, après avoir spécifié une clé gérée par le client pour SSE-KMS, vous ne pouvez pas remplacer la clé gérée par le client pour la configuration SSE-KMS du compartiment.

Vous pouvez identifier la clé gérée par le client que vous avez spécifiée pour la configuration SSE-KMS du compartiment de la manière suivante :

  • Effectuez une demande d’opération d’API HeadObject pour trouver la valeur de x-amz-server-side-encryption-aws-kms-key-id dans la réponse.

Pour utiliser une nouvelle clé gérée par le client pour vos données, nous vous recommandons de copier vos objets existants dans un nouveau compartiment de répertoires avec une nouvelle clé gérée par le client.

Pour plus d’informations sur le contexte de chiffrement dans les compartiments de répertoires, consultez AWS KMS keys.

Clés de compartiment S3 (x-amz-server-side-encryption-aws-bucket-key-enabled)

Les clés de compartiment S3 sont toujours activées pour les opérations GET et PUT dans un compartiment de répertoires et ne peuvent pas être désactivées. Les clés de compartiment S3 ne sont pas prises en charge lorsque vous copiez des objets chiffrés avec SSE-KMS depuis des compartiments à usage général vers des compartiments de répertoires, depuis des compartiments de répertoires vers des compartiments à usage général ou entre des compartiments de répertoires, par le biais de CopyObject, d’UploadPartCopy, de l’opération Copy dans les opérations par lot ou des tâches import. Dans ce cas, Amazon S3 effectue un appel à AWS KMS chaque fois qu'une demande de copie est faite pour un objet chiffré par KMS. Pour plus d’informations sur les clés de compartiment S3 dans les compartiments de répertoire, consultez Contexte de chiffrement.

Note

Lorsque vous utilisez le symbole AWS CLI, forCreateSession, le jeton de session est automatiquement actualisé pour éviter les interruptions de service lors de l'expiration d'une session. Il n’est pas possible de remplacer les valeurs des paramètres de chiffrement pour la demande CreateSession. De plus, dans les appels d'API du point de terminaison zonal (sauf CopyObjectet UploadPartCopy), il n'est pas possible de remplacer les valeurs des paramètres de chiffrement de la CreateSession demande.

Pour chiffrer de nouveaux objets dans un compartiment de répertoires avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut de ce compartiment avec une clé KMS (plus spécifiquement, une clé gérée par le client). Ensuite, lorsqu’une session sera créée pour les opérations de l’API de point de terminaison zonal, les nouveaux objets seront automatiquement chiffrés et déchiffrés avec les clés SSE-KMS et les clés de compartiment S3 pendant la session.

Pour utiliser les exemples de AWS CLI commandes suivants, remplacez-les user input placeholders par vos propres informations.

Lorsque vous chargez un nouvel objet ou que vous copiez un objet existant, vous pouvez spécifier l'utilisation du chiffrement côté serveur avec des AWS KMS clés pour chiffrer vos données. Pour ce faire, utilisez la commande put-bucket-encryption afin de définir la configuration de chiffrement par défaut du compartiment de répertoires en tant que chiffrement SSE-KMS (aws:kms). Plus précisément, ajoutez l’en-tête --server-side-encryption aws:kms à la demande. Utilisez le --ssekms-key-id example-key-id pour ajouter la AWS KMS clé gérée par le client que vous avez créée. Si vous le spécifiez--server-side-encryption aws:kms, vous devez fournir un identifiant de AWS KMS clé pour votre clé gérée par le client. Les compartiments de répertoire n'utilisent pas de clé AWS gérée. Pour obtenir un exemple de commande, consultez En utilisant le AWS CLI.

Ensuite, lorsque vous chargez un nouvel objet à l’aide de la commande suivante, Amazon S3 utilise les paramètres du compartiment pour le chiffrement par défaut afin de chiffrer l’objet par défaut.

aws s3api put-object --bucket bucket-base-name--zone-id--x-s3 --key example-object-key --body filepath

Vous n’avez pas besoin d’ajouter -\-bucket-key-enabled explicitement dans les commandes d’opérations d’API de point de terminaison zonal. Les clés de compartiment S3 sont toujours activées pour les opérations GET et PUT dans un compartiment de répertoires et ne peuvent pas être désactivées. Les clés de compartiment S3 ne sont pas prises en charge lorsque vous copiez des objets chiffrés avec SSE-KMS depuis des compartiments à usage général vers des compartiments de répertoires, depuis des compartiments de répertoires vers des compartiments à usage général ou entre des compartiments de répertoires, par le biais de CopyObject, d’UploadPartCopy, de l’opération Copy dans les opérations par lot ou des tâches import. Dans ce cas, Amazon S3 effectue un appel à AWS KMS chaque fois qu'une demande de copie est faite pour un objet chiffré par KMS.

Vous pouvez copier un objet d’un compartiment source (par exemple, un compartiment à usage général) vers un nouveau compartiment (par exemple, un compartiment de répertoires) et utiliser le chiffrement SSE-KMS pour les objets de destination. Pour ce faire, utilisez la commande put-bucket-encryption afin de définir la configuration de chiffrement par défaut du compartiment de destination en tant que chiffrement SSE-KMS (aws:kms). Pour obtenir un exemple de commande, consultez En utilisant le AWS CLI. Ensuite, lorsque vous copiez un objet à l’aide de la commande suivante, Amazon S3 utilise les paramètres du compartiment pour le chiffrement par défaut afin de chiffrer l’objet par défaut.

aws s3api copy-object --copy-source amzn-s3-demo-bucket/example-object-key --bucket bucket-base-name--zone-id--x-s3 --key example-object-key

Lors de l'utilisation AWS SDKs, vous pouvez demander à Amazon S3 de l'utiliser AWS KMS keys pour le chiffrement côté serveur. Les exemples suivants montrent comment utiliser SSE-KMS avec AWS SDKs pour Java et .NET. Pour plus d'informations sur les autres SDKs, consultez la section Exemples de code et de bibliothèques sur le AWS Developer Center.

Note

Lorsque vous utilisez le symbole AWS SDKs, forCreateSession, le jeton de session est automatiquement actualisé pour éviter les interruptions de service lors de l'expiration d'une session. Il n’est pas possible de remplacer les valeurs des paramètres de chiffrement pour la demande CreateSession. De plus, dans les appels d'API du point de terminaison zonal (sauf CopyObjectet UploadPartCopy), il n'est pas possible de remplacer les valeurs des paramètres de chiffrement de la CreateSession demande.

Pour chiffrer de nouveaux objets dans un compartiment de répertoires avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut de ce compartiment avec une clé KMS (plus spécifiquement, une clé gérée par le client). Ensuite, lorsqu’une session sera créée pour les opérations de l’API de point de terminaison zonal, les nouveaux objets seront automatiquement chiffrés et déchiffrés avec les clés SSE-KMS et les clés de compartiment S3 pendant la session.

Pour plus d'informations sur l'utilisation AWS SDKs de la configuration de chiffrement par défaut d'un bucket d'annuaire en tant que SSE-KMS, consultez. En utilisant le AWS SDKs

Important

Lorsque vous utilisez un AWS KMS key pour le chiffrement côté serveur dans Amazon S3, vous devez choisir une clé KMS de chiffrement symétrique. Amazon S3 ne prend en charge que les clés KMS à chiffrement symétrique. Pour plus d’informations sur ces clés, consultez Clés KMS de chiffrement symétriques dans le Guide du développeur AWS Key Management Service .

Pour plus d'informations sur la création de clés gérées par le client, consultez la section Programmation de l' AWS KMS API dans le Guide du AWS Key Management Service développeur.