

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 double couche côté serveur à l'aide de AWS KMS clés (DSSE-KMS)
<a name="specifying-dsse-encryption"></a>

Vous pouvez appliquer le chiffrement lorsque vous chargez un nouvel objet ou copiez un objet existant. 

Vous pouvez spécifier DSSE-KMS en utilisant la console Amazon S3, l’API REST Amazon S3 et l’ AWS Command Line Interface  (AWS CLI). Pour plus d’informations, consultez les rubriques suivantes. 

**Note**  
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](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) dans le *Guide du développeur AWS Key Management Service *.

**Note**  
Si vous souhaitez utiliser une clé KMS qui appartient à un autre compte, vous devez avoir l’autorisation d’utiliser la clé. Pour plus d'informations sur les autorisations intercomptes pour les clés KMS, consultez la section [Creating KMS keys that other accounts can use](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) (Création de clés KMS que d'autres comptes peuvent utiliser) dans le *Guide du développeur AWS Key Management Service *. 

## Utilisation de la console S3
<a name="add-object-encryption-dsse"></a>

Cette section explique comment définir ou modifier le type de chiffrement d'un objet afin d'utiliser un chiffrement double couche côté serveur avec des clés AWS Key Management Service (AWS KMS) (DSSE-KMS) à l'aide de la console Amazon S3.

**Note**  
Vous pouvez modifier le chiffrement d’un objet si sa taille est inférieure à 5 Go. Si la taille de votre objet est supérieure à 5 Go, vous devez utiliser le [AWS CLI](mpu-upload-object.md#UsingCLImpUpload)ou [AWS SDKs](CopyingObjectsMPUapi.md)pour modifier le chiffrement d'un objet.
Pour obtenir la liste des autorisations supplémentaires requises pour modifier le chiffrement d’un objet, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md). Pour obtenir un exemple de politiques qui accorde ces autorisations, consultez [Exemples de politiques basées sur l’identité pour Amazon S3](example-policies-s3.md).
Si vous modifiez le chiffrement d'un objet, un nouvel objet est créé pour remplacer l'ancien. Si la gestion des versions S3 est activée, une nouvelle version de l’objet est créée et l’objet existant devient une version plus ancienne. Le rôle qui modifie la propriété devient également le propriétaire du nouvel objet ou (version de l'objet). 

**Pour ajouter ou modifier le chiffrement d’un objet**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation, choisissez **Compartiments**, puis l’onglet **Compartiments à usage général**. Accédez au compartiment ou au dossier Amazon S3 contenant les objets que vous souhaitez modifier.

1. Cochez la case correspondant aux objets à modifier.

1. Dans le menu **Actions**, choisissez **Modifier le chiffrement côté serveur** dans la liste d’options qui s’affiche.

1. Accédez à la section **Chiffrement côté serveur**.

1. Sous **Paramètres de chiffrement**, choisissez **Utiliser les paramètres du compartiment pour le chiffrement par défaut** ou **Ignorer les paramètres du compartiment pour le chiffrement par défaut**.

1. Si vous avez choisi **Ignorer les paramètres de chiffrement par défaut du compartiment**, configurez les paramètres de chiffrement suivants.

   1. Sous **Type de chiffrement**, choisissez Chiffrement **double couche côté serveur avec AWS Key Management Service clés (DSSE-KMS)**. 

   1. Sous **CléAWS KMS **, choisissez votre clé KMS avec l’une des options suivantes :
      + Pour choisir parmi une liste de clés KMS disponibles, choisissez **Choisir parmi vos AWS KMS keys**, puis sélectionnez votre **Clé KMS** dans la liste des clés disponibles.

        La clé Clé gérée par AWS (`aws/s3`) et la clé gérée par votre client apparaissent toutes deux dans cette liste. Pour plus d’informations sur les clés gérées par le client, consultez [Clés de client et clés AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) dans le *Guide du développeur AWS Key Management Service *.
      + Pour saisir l'ARN de la clé KMS, choisissez **Enter AWS KMS key ARN**, puis entrez l'ARN de votre clé KMS dans le champ qui apparaît. 
      + Pour créer une nouvelle clé gérée par le client dans la AWS KMS console, choisissez **Create a KMS key**.

        Pour plus d'informations sur la création d'un AWS KMS key, consultez la section [Création de clés](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) dans le *Guide du AWS Key Management Service développeur*.
**Important**  
Vous pouvez uniquement utiliser des clés KMS disponibles dans la même Région AWS que le compartiment. La console Amazon S3 répertorie uniquement les 100 premières clés KMS dans la même région que le compartiment. Pour utiliser une clé KMS qui n’est pas répertoriée, vous devez saisir l’ARN de votre clé KMS. Si vous souhaitez utiliser une clé KMS qui appartient à un autre compte, vous devez d’abord avoir l’autorisation d’utiliser cette clé, puis vous devez saisir l’ARN de la clé KMS.  
Amazon S3 prend uniquement en charge les clés KMS symétriques de chiffrement et ne prend pas en charge les clés KMS asymétriques. Pour plus d’informations, consultez [Identification des clés KMS asymétriques](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) dans le *Guide du développeur AWS Key Management Service *.

1. Pour **Clé de compartiment**, choisissez **Désactiver**. Les clés de compartiment S3 ne sont pas prises en charge pour DSSE-KMS.

1. Sous **Paramètres de copie supplémentaires**, choisissez **Copie des paramètres source**, **Aucune spécification de paramètres** ou **Spécification des paramètres**. L’option par défaut est **Copie des paramètres source**. Si vous souhaitez uniquement copier l’objet sans les attributs des paramètres source, choisissez **Aucune spécification de paramètres**. Choisissez **Spécifier les paramètres** pour définir les paramètres de classe de stockage ACLs, les balises d'objet, les métadonnées, le chiffrement côté serveur et les sommes de contrôle supplémentaires.

1. Sélectionnez **Save Changes (Enregistrer les modifications)**.

**Note**  
Cette action applique le chiffrement à tous les objets spécifiés. Lorsque vous chiffrez des dossiers, attendez la fin de l’opération d’enregistrement pour ajouter de nouveaux objets au dossier.

## Utilisation de l'API REST
<a name="DSSEUsingRESTAPI"></a>

Lorsque vous créez un objet, c'est-à-dire lorsque vous téléchargez un nouvel objet ou que vous copiez un objet existant, vous pouvez spécifier l'utilisation du chiffrement double couche côté serveur AWS KMS keys (DSSE-KMS) pour chiffrer vos données. Pour ce faire, ajoutez l’en-tête `x-amz-server-side-encryption` à la demande. Configurez la valeur de l’en-tête sur l’algorithme de chiffrement `aws:kms:dsse`. Amazon S3 confirme que votre objet est stocké avec un chiffrement DSSE-KMS en renvoyant l’en-tête de réponse `x-amz-server-side-encryption`. 

Si vous spécifiez l’en-tête `x-amz-server-side-encryption` avec une valeur de `aws:kms:dsse`, vous pouvez également utiliser les en-têtes de demandes suivants :
+ `x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId`
+ `x-amz-server-side-encryption-context: SSEKMSEncryptionContext`

**Topics**
+ [Opérations de l’API REST Amazon S3 prenant en charge DSSE-KMS](#dsse-request-headers-kms)
+ [Contexte de chiffrement (`x-amz-server-side-encryption-context`)](#s3-dsse-encryption-context)
+ [AWS KMS ID de clé (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-dsse-key-id-api)

### Opérations de l’API REST Amazon S3 prenant en charge DSSE-KMS
<a name="dsse-request-headers-kms"></a>

Les opérations d’API REST suivantes 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`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) – Lorsque vous chargez des données avec l'opération d'API `PUT`, vous pouvez spécifier ces en-têtes de demande. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) – Lorsque vous copiez un objet, vous disposez d'un objet source et d'un objet cible. Lorsque vous transmettez des en-têtes DSSE-KMS avec l’opération `CopyObject`, ils s’appliquent uniquement à l’objet cible. Lorsque vous copiez un objet existant, que l’objet source soit chiffré ou non, l’objet de destination n’est pas chiffré sauf si vous demandez explicitement un chiffrement côté serveur.
+ [Objet POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) – Lorsque vous utilisez une opération `POST` pour charger un objet, plutôt que des en-têtes de demande, vous fournissez les mêmes informations dans les champs du formulaire.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) – Lorsque vous chargez des objets volumineux en procédant à un chargement partitionné, vous pouvez spécifier 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é avec un chiffrement côté serveur.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [Objet POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**Important**  
Toutes `GET` les `PUT` demandes relatives à un objet protégé par AWS KMS échouent si vous ne les créez pas à l'aide du protocole SSL (Secure Sockets Layer), du protocole TLS (Transport Layer Security) ou de la version 4 de signature.
Si votre objet utilise DSSE-KMS, n’envoyez pas d’en-têtes de demande de chiffrement pour les demandes `GET` et les demandes `HEAD`, car vous obtiendrez une erreur HTTP 400 (Demande incorrecte).

### Contexte de chiffrement (`x-amz-server-side-encryption-context`)
<a name="s3-dsse-encryption-context"></a>

Si vous spécifiez `x-amz-server-side-encryption:aws:kms:dsse`, l’API Simple Storage Service (Amazon S3) prend en charge un contexte de chiffrement avec l’en-tête `x-amz-server-side-encryption-context`. Un contexte de chiffrement est un ensemble de paires valeur clé qui contient des informations contextuelles supplémentaires sur les données.

Amazon S3 utilise automatiquement l’Amazon Resource Name (ARN) de l’objet en tant que paire de contexte de chiffrement ; par exemple, `arn:aws:s3:::object_ARN`.

Vous pouvez éventuellement fournir une paire de contexte de chiffrement supplémentaire à l'aide de l'en-tête `x-amz-server-side-encryption-context`. Toutefois, étant donné que le contexte de chiffrement n’est pas chiffré, assurez-vous qu’il n’inclut pas d’informations sensibles. Amazon S3 stocke cette paire de clés supplémentaire avec le contexte de chiffrement par défaut.

Pour plus d’informations sur le contexte de chiffrement dans Simple Storage Service (Amazon S3), consultez [Contexte de chiffrement](UsingKMSEncryption.md#encryption-context). Pour des informations générales sur le contexte de chiffrement, consultez la section [Concepts AWS Key Management Service - Contexte de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) du *Guide du développeur AWS Key Management Service *. 

### AWS KMS ID de clé (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-dsse-key-id-api"></a>

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. Si vous spécifiez l'`x-amz-server-side-encryption:aws:kms:dsse`en-tête mais que vous ne le `x-amz-server-side-encryption-aws-kms-key-id` fournissez pas, Amazon S3 utilise le Clé gérée par AWS (`aws/s3`) pour protéger les données. Si vous souhaitez utiliser une clé gérée par le client, vous devrez fournir l’en-tête `x-amz-server-side-encryption-aws-kms-key-id` de la clé gérée par le client.

**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](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) dans le *Guide du développeur AWS Key Management Service *.

## À l'aide du AWS CLI
<a name="DSSEUsingCLI"></a>

Lorsque vous chargez un nouvel objet ou copiez un objet existant, vous pouvez spécifier l’utilisation de DSSE-KMS pour chiffrer vos données. Pour ce faire, ajoutez le paramètre `--server-side-encryption aws:kms:dsse` à l’en-tête. Utilisez le paramètre `--ssekms-key-id example-key-id` pour ajouter la [clé AWS KMS gérée par le client](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) que vous avez créée. Si vous spécifiez`--server-side-encryption aws:kms:dsse`, mais que vous ne fournissez pas d'identifiant de AWS KMS clé, Amazon S3 utilisera la clé AWS gérée (`aws/s3`).

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id --body filepath
```

Vous pouvez chiffrer un objet non chiffré pour utiliser DSSE-KMS en recopiant l’objet à son emplacement.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --copy-source amzn-s3-demo-bucket/example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id
```