View a markdown version of this page

Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS) pour le téléchargement de nouveaux objets dans des compartiments de répertoire - 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 le téléchargement de nouveaux objets dans des compartiments de répertoire

Pour les compartiments d'annuaire, pour chiffrer vos données à l'aide du chiffrement côté serveur, vous pouvez utiliser le chiffrement côté serveur avec les clés gérées par Amazon S3 SSE-S3 () (valeur par défaut) ou le chiffrement côté serveur avec () keys (). AWS Key Management Service AWS KMS SSE-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 chargés dans un compartiment S3 sont automatiquement chiffrés au repos. Server-side le chiffrement avec les clés gérées par Amazon S3 (SSE-S3) est la configuration de chiffrement par défaut pour chaque compartiment d'Amazon S3. Si vous souhaitez spécifier un type de chiffrement différent pour un compartiment de répertoire, vous pouvez utiliser le chiffrement côté serveur avec AWS Key Management Service (AWS KMS) keys (SSE-KMS). Pour chiffrer de nouveaux objets dans un compartiment de répertoire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire une clé KMS (en particulier, une clé gérée par le client). La Clé gérée par AWS (aws/s3) n’est pas prise en charge. Votre SSE-KMS configuration ne peut prendre en charge qu'une seule clé gérée par le client par compartiment de répertoire pendant toute la durée de vie du compartiment. Une fois que vous avez 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 SSE-KMS configuration du bucket. Ensuite, lorsque vous spécifiez les paramètres de chiffrement côté serveur pour les nouveaux objets SSE-KMS, vous devez vous assurer que la clé de chiffrement est la même clé gérée par le client que celle que vous avez spécifiée pour la configuration de chiffrement par défaut du compartiment d'annuaire. 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 le spécifier à SSE-KMS l'aide des opérations de l'API AWS REST, des SDK 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 de l'API de point de terminaison Zonal UploadPartCopy, à l'exception de CopyObjectet, vous pouvez remplacer les paramètres de chiffrement par SSE-S3 ou SSE-KMS uniquement si vous avez précédemment spécifié le cryptage par défaut du bucket avec. SSE-KMS

    • Lorsque vous utilisez le AWS CLI ou CreateSessionles AWS SDK pour authentifier et autoriser les demandes 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 SSE-KMS précédemment spécifié le chiffrement par défaut du bucket avec. 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 SSE-KMS que vous avez défini la configuration de chiffrement par défaut de votre bucket avec une clé gérée par le client, vous ne pouvez pas modifier la clé gérée par le client pour la SSE-KMS configuration du bucket.

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épertoire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire une clé KMS (en particulier, une clé gérée par le client). Ensuite, lorsqu'une session est créée pour les opérations de l'API Zonal Endpoint, les nouveaux objets sont automatiquement chiffrés et déchiffrés avec SSE-KMS des 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 les AWS SDK, pourCreateSession, le jeton de session est automatiquement actualisé afin d'éviter les interruptions de service à l'expiration d'une session. Le AWS CLI ou les AWS SDK utilisent 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 de répertoire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire une clé KMS (en particulier, une clé gérée par le client). Ensuite, lorsque vous spécifiez les paramètres de chiffrement côté serveur pour les nouvelles copies d'objets SSE-KMS, vous devez vous assurer que la clé de chiffrement est la même clé gérée par le client que celle que vous avez spécifiée pour la configuration de chiffrement par défaut du compartiment de répertoire. En effet UploadPartCopy, pour chiffrer de nouvelles copies partielles d'objets dans un compartiment de répertoire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment de répertoire 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 figurant SSE-KMS dans les en-têtes de UploadPartCopydemande. 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 qui prennent 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 SSE-KMS des en-têtes avec l'CopyObjectopération, ils ne sont appliqués qu'à 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 l'utilise SSE-KMS, n'envoyez pas d'en-têtes de demande de chiffrement pour les GET HEAD demandes et les requêtes, sinon vous obtiendrez une BadRequest erreur HTTP 400.

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 SSE-KMS configuration ne peut prendre en charge qu'une seule clé gérée par le client par compartiment de répertoire pendant toute la durée de vie du compartiment. La Clé gérée par AWS (aws/s3) n’est pas prise en charge. En outre, une fois que vous avez 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 SSE-KMS configuration du bucket.

Vous pouvez identifier la clé gérée par le client que vous avez spécifiée pour la SSE-KMS configuration du bucket 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 (chiffrement côté serveur x-amz-aws-bucket-key activé)

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 SSE-KMS chiffrés depuis des compartiments à usage général vers des compartiments de répertoire, des compartiments de répertoire vers des compartiments à usage général, ou entre des compartiments de répertoire CopyObject, par le biais de UploadPartCopyl'opération Copy Batch Operations ou des jobs. import Dans ce cas, Amazon S3 effectue un appel à AWS KMS chaque fois qu'une demande de copie est faite pour un KMS-encrypted objet. Pour plus d’informations sur les clés de compartiment S3 dans les compartiments de répertoires, 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épertoire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire une clé KMS (en particulier, une clé gérée par le client). Ensuite, lorsqu'une session est créée pour les opérations de l'API Zonal Endpoint, les nouveaux objets sont automatiquement chiffrés et déchiffrés avec SSE-KMS des 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 put-bucket-encryption commande pour définir la configuration de chiffrement par défaut du compartiment de répertoire comme 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 Utilisation de 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 SSE-KMS chiffrés depuis des compartiments à usage général vers des compartiments de répertoire, des compartiments de répertoire vers des compartiments à usage général, ou entre des compartiments de répertoire CopyObject, par le biais de UploadPartCopyl'opération Copy Batch Operations ou des jobs. import Dans ce cas, Amazon S3 effectue un appel à AWS KMS chaque fois qu'une demande de copie est faite pour un KMS-encrypted objet.

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épertoire) et utiliser le SSE-KMS chiffrement pour les objets de destination. Pour ce faire, utilisez la put-bucket-encryption commande pour définir la configuration de chiffrement par défaut du compartiment de destination (par exemple, un compartiment de répertoire) comme SSE-KMS (aws:kms). Pour obtenir un exemple de commande, consultez Utilisation de 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

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

Note

Lorsque vous utilisez les AWS SDK, pourCreateSession, le jeton de session est automatiquement actualisé afin d'éviter les interruptions de service à 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épertoire avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut du compartiment d'annuaire une clé KMS (en particulier, une clé gérée par le client). Ensuite, lorsqu'une session est créée pour les opérations de l'API Zonal Endpoint, les nouveaux objets sont automatiquement chiffrés et déchiffrés avec SSE-KMS des clés de compartiment S3 pendant la session.

Pour plus d'informations sur l'utilisation AWS des SDK pour définir la configuration de chiffrement par défaut d'un bucket de répertoire en tant que tel SSE-KMS, consultezUtilisation de AWS Kits SDK.

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.