

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.

# Protection des données avec le chiffrement côté serveur
<a name="serv-side-encryption"></a>

**Important**  
Comme [annoncé le 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service déploie un nouveau paramètre de sécurité des compartiments par défaut qui désactive automatiquement le chiffrement côté serveur à l'aide de clés fournies par le client (SSE-C) pour tous les nouveaux compartiments à usage général. Pour les compartiments existants ne Comptes AWS contenant aucun objet chiffré SSE-C, Amazon S3 désactivera également le SSE-C pour toutes les nouvelles demandes d'écriture. Dans le cas Comptes AWS de l'utilisation du SSE-C, Amazon S3 ne modifiera la configuration de chiffrement des compartiments sur aucun des compartiments existants de ces comptes. Ce déploiement a débuté le 6 avril 2026 et s'achèvera au cours des prochaines semaines dans 37 AWS régions, dont la AWS Chine et AWS GovCloud les États-Unis.  
Avec ces modifications, les applications nécessitant un chiffrement SSE-C doivent délibérément activer le SSE-C en utilisant l'opération d'[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API après avoir créé un nouveau compartiment. Pour plus d'informations sur cette modification, consultez[FAQ sur le paramètre SSE-C par défaut pour les nouveaux buckets](default-s3-c-encryption-setting-faq.md).

**Important**  
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d’objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. L'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour le téléchargement de nouveaux objets est disponible dans CloudTrail les journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS CLI et AWS SDKs. Pour plus d'informations, consultez la [FAQ sur le chiffrement par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Le chiffrement côté serveur est le chiffrement des données à leur destination par l’application ou le service qui les reçoit. Amazon S3 chiffre vos données au niveau de l'objet lorsqu'il les écrit sur les disques des centres de AWS données et les déchiffre pour vous lorsque vous y accédez. Tant que vous authentifiez votre demande et que vous avez des autorisations d’accès, il n’y a aucune différence dans la manière dont vous accédez aux objets chiffrés ou déchiffrés. Par exemple, si vous partagez vos objets en utilisant une URL présignée, cette URL fonctionne de la même manière pour les objets chiffrés et déchiffrés. En outre, quand vous répertoriez les objets de votre compartiment, les opérations d’API de liste renvoient la liste de tous les objets, qu’ils soient chiffrés ou non.

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. Pour utiliser un autre type de chiffrement, vous pouvez soit spécifier le type de chiffrement côté serveur à utiliser dans vos demandes S3 `PUT`, soit actualiser la configuration du chiffrement par défaut dans le compartiment de destination. 

Si vous souhaitez spécifier un type de chiffrement différent dans vos `PUT` demandes, vous pouvez utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), le chiffrement double couche côté serveur avec des clés (DSSE-KMS) ou le chiffrement côté serveur avec des AWS KMS clés fournies par le client (SSE-C). Si vous souhaitez définir une autre configuration de chiffrement par défaut dans le compartiment de destination, vous pouvez utiliser SSE-KMS ou DSSE-KMS.

Pour plus d’informations sur la modification de la configuration du chiffrement par défaut de vos compartiments à usage général, consultez [Configuration du chiffrement par défaut](default-bucket-encryption.md). 

Lorsque vous remplacez la configuration du chiffrement par défaut de votre compartiment par SSE-KMS, le type de chiffrement des objets Amazon S3 existants du compartiment n’est pas modifié. Pour modifier le type de chiffrement de vos objets préexistants après avoir remplacé la configuration de chiffrement par défaut par SSE-KMS, vous pouvez utiliser Amazon S3 Batch Operations. Vous fournissez une liste d’objets à S3 Batch Operations, qui appelle l’opération d’API correspondante. Vous pouvez utiliser l’action [Copie d’objets](batch-ops-copy-object.md) pour copier des objets existants et les réécrire dans le même compartiment en tant qu’objets chiffrés par SSE-KMS. Une tâche d’opérations par lots peut effectuer l’opération spécifiée sur des milliards d’objets. Pour plus d’informations, consultez [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md) et la publication [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) dans le *blog sur le stockage AWS *. 

**Note**  
Vous ne pouvez pas appliquer simultanément différents types de chiffrement côté serveur au même objet.

Si vous devez chiffrer vos objets existants, utilisez S3 Batch Operations et S3 Inventory. Pour plus d’informations, consultez [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) (Chiffrement d’objets avec Amazon S3 Batch Operations) et [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md).

Lorsque vous stockez des données dans Amazon S3, vous avez le choix entre quatre options de chiffrement côté serveur qui s’excluent mutuellement. Votre choix dépendra de la façon dont vous décidez de gérer les clés de chiffrement et du nombre de couches de chiffrement que vous souhaitez appliquer.

**Chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)**  
Le chiffrement est configuré par défaut pour tous les compartiments Amazon S3. L’option par défaut pour le chiffrement côté serveur est avec des clés gérées Amazon S3 (SSE-S3). Chaque objet est chiffré à l’aide d’une clé unique. Comme protection supplémentaire, SSE-S3 chiffre la clé elle-même à l’aide d’une clé racine dont il effectue une rotation régulière. SSE-S3 utilise l’un des chiffrements par bloc les plus puissants qui existent, Advanced Encryption Standard 256 bits (AES-256), pour chiffrer vos données. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

**Chiffrement côté serveur avec clés AWS Key Management Service (AWS KMS) (SSE-KMS)**  
Le chiffrement côté serveur avec AWS KMS keys (SSE-KMS) est fourni par le biais d'une intégration du service à AWS KMS Amazon S3. Avec AWS KMS, vous avez plus de contrôle sur vos clés. Par exemple, vous pouvez afficher des clés distinctes, modifier des politiques de contrôle et suivre les clés dans AWS CloudTrail. En outre, vous pouvez créer et gérer les clés gérées par le client ou utiliser les Clés gérées par AWS qui sont propres à vous-même, à votre service et à votre région. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md).

**Chiffrement double couche côté serveur avec clés AWS Key Management Service (AWS KMS) (DSSE-KMS)**  
Le chiffrement double couche côté serveur avec AWS KMS keys (DSSE-KMS) est similaire au SSE-KMS, mais le DSSE-KMS applique deux couches indépendantes de chiffrement AES-256 au lieu d'une couche : d'abord à l'aide d'une clé de chiffrement des AWS KMS données, puis à l'aide d'une clé de chiffrement distincte gérée par Amazon S3. Comme les deux couches de chiffrement sont appliquées à un objet côté serveur, vous pouvez utiliser un large éventail d'outils Services AWS et d'outils pour analyser les données dans S3 tout en utilisant une méthode de chiffrement conforme aux exigences de conformité en matière de chiffrement multicouche. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement double couche côté serveur avec AWS KMS clés (DSSE-KMS)](UsingDSSEncryption.md).

**Chiffrement côté serveur avec clés fournies par le client (SSE-C)**  
Dans le cadre du chiffrement côté serveur avec des clés fournies par le client (SSE-C), vous gérez les clés de chiffrement, et Amazon S3 gère le chiffrement à mesure qu’il écrit les données sur les disques et le déchiffrement au moment où vous accédez à vos objets. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur avec les clés fournies par le client (SSE-C)](ServerSideEncryptionCustomerKeys.md).

**Note**  
Lorsque vous utilisez des points d'accès pour les systèmes de FSx fichiers Amazon à l'aide de points d'accès S3, vous disposez d'une option pour le chiffrement côté serveur.  
Le chiffrement de tous les systèmes de FSx fichiers Amazon est configuré par défaut et sont chiffrés au repos à l'aide de clés gérées à l'aide de AWS Key Management Service. Les données sont automatiquement chiffrées et déchiffrées par le système de fichiers lors de leur écriture et de leur lecture dans ce dernier. Ces processus sont gérés de manière transparente par Amazon FSx.

# Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3
<a name="bucket-encryption"></a>

**Important**  
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d’objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. L'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour le téléchargement de nouveaux objets est disponible dans CloudTrail les journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS CLI et AWS SDKs. Pour plus d’informations, consultez la [FAQ sur le chiffrement par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Tous les compartiments Amazon S3 ont le chiffrement configuré par défaut et les objets sont automatiquement chiffrés à l’aide du chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3). Ce paramètre de chiffrement s’applique à tous les objets de vos compartiments Amazon S3.

Si vous avez besoin d'un contrôle accru sur vos clés, par exemple pour gérer la rotation des clés et les autorisations de politique d'accès, vous pouvez choisir d'utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) ou le chiffrement côté serveur à double couche avec clés (DSSE-KMS). AWS KMS Pour en savoir plus sur la modification des clés KMS, consultez [Modification des clés](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) dans le *Guide du développeur AWS Key Management Service *. 

**Note**  
Nous avons modifié les compartiments afin de chiffrer automatiquement les nouveaux chargements d’objets. Si vous avez déjà créé un compartiment sans chiffrement par défaut, Amazon S3 activera le chiffrement par défaut pour le compartiment à l’aide de SSE-S3. Aucune modification ne sera apportée à la configuration de chiffrement par défaut d’un compartiment existant pour lequel le chiffrement SSE-S3 ou SSE-KMS est déjà configuré. Si vous souhaitez chiffrer vos objets avec SSE-KMS, vous devez modifier le type de chiffrement dans les paramètres de votre compartiment. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md). 

Lorsque vous configurez votre compartiment pour utiliser le chiffrement par défaut avec SSE-KMS, vous pouvez également activer les clés de compartiment S3 afin de réduire le trafic de demandes en provenance d'Amazon S3 AWS KMS et de réduire le coût du chiffrement. Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

Pour identifier les compartiments dont le chiffrement par défaut est activé par SSE-KMS, vous pouvez utiliser les métriques Amazon S3 Storage Lens. S3 Storage Lens est une fonction d'analyse du stockage dans le cloud que vous pouvez utiliser pour obtenir une visibilité à l'échelle de l'organisation sur l'utilisation et l'activité du stockage d'objets. Pour plus d’informations, consultez [Utilisation de S3 Storage Lens pour protéger vos données](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html?icmpid=docs_s3_user_guide_bucket-encryption.html).

Lorsque vous utilisez le chiffrement côté serveur, Amazon S3 chiffre un objet avant de l’enregistrer sur disque et le déchiffre lorsque vous téléchargez l’objet. Pour plus d’informations sur la protection des données à l’aide du chiffrement côté serveur et de la gestion des clés de chiffrement, consultez [Protection des données avec le chiffrement côté serveur](serv-side-encryption.md).

Pour en savoir plus sur les autorisations nécessaires pour le chiffrement par défaut, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) dans la *documentation de référence de l'API Amazon Simple Storage Service*.

Vous pouvez configurer le comportement de chiffrement par défaut d'Amazon S3 pour un compartiment S3 à l'aide de la console Amazon S3, de l'API REST Amazon S3 et de l'interface de ligne de AWS commande (AWS CLI). AWS SDKs

**Chiffrement des objets existants**  
Pour chiffrer vos objets Amazon S3 non chiffrés existants, vous pouvez utiliser Amazon S3 Batch Operations. Vous fournissez à la fonctionnalité d’opérations par lots S3 une liste d’objets sur lesquels agir. La fonctionnalité d’opérations par lots appelle l’API correspondante pour exécuter l’opération spécifiée. Vous pouvez utiliser l’[opération de copie de Batch Operations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) pour copier des objets non chiffrés et les réécrire dans le même compartiment en tant qu’objets chiffrés. Une tâche d’opérations par lots peut effectuer l’opération spécifiée sur des milliards d’objets. Pour plus d’informations, consultez [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md) et le billet de *blog sur le stockage AWS * intitulé [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

Vous pouvez également chiffrer des objets existants à l'aide de l'opération `CopyObject` API ou de la `copy-object` AWS CLI commande. Pour plus d’informations, consultez le billet de *blog sur le stockage AWS * intitulé [Encrypting existing Amazon S3 objects with the AWS CLI](https://aws.amazon.com/blogs/storage/encrypting-existing-amazon-s3-objects-with-the-aws-cli/).

**Note**  
Les compartiments Amazon S3 pour lesquels le chiffrement de compartiment par défaut est défini sur SSE-KMS ne peuvent pas servir de compartiments de destination pour [Enregistrement de demandes avec journalisation des accès au serveur](ServerLogs.md). Seul le chiffrement par défaut SSE-S3 est pris en charge pour les compartiments de destination du journal d’accès au serveur.

## Utilisation du chiffrement SSE-KMS pour les opérations intercomptes
<a name="bucket-encryption-update-bucket-policy"></a>

Tenez compte des éléments suivants lors de l’utilisation du chiffrement pour les opérations inter-comptes :
+ Si aucun nom de ressource AWS KMS key Amazon (ARN) ou alias n'est fourni au moment de la demande ou via la configuration de chiffrement par défaut du bucket, le Clé gérée par AWS (`aws/s3`) est utilisé.
+ Si vous téléchargez ou accédez à des objets S3 à l'aide de principes Gestion des identités et des accès AWS (IAM) identiques Compte AWS à ceux de votre clé KMS, vous pouvez utiliser le Clé gérée par AWS (). `aws/s3` 
+ Utilisez une clé gérée par le client si vous souhaitez accorder un accès intercompte à vos objets S3. Vous pouvez configurer la politique d’une clé gérée par le client afin d’autoriser l’accès à partir d’un autre compte.
+ Si vous spécifiez une clé KMS gérée par le client, nous recommandons d’utiliser un ARN de clé KMS complet. Si vous utilisez plutôt un alias de clé KMS, AWS KMS la clé est résolue dans le compte du demandeur. En raison de ce comportement, les données peuvent être chiffrées avec une clé KMS qui appartient au demandeur, et non au propriétaire du compartiment.
+ Vous devez spécifier une clé pour laquelle vous (le demandeur) avez obtenu l’autorisation de `Encrypt`. Pour en savoir plus, consultez [Permettre aux utilisateurs de clés d'utiliser une clé KMS pour les opérations de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) dans le *Guide de l'utilisateur AWS Key Management Service *.

Pour plus d'informations sur les circonstances dans lesquelles utiliser des clés gérées par le client et des clés KMS AWS gérées, consultez [Dois-je utiliser une clé gérée par le client Clé gérée par AWS ou une clé gérée par le client pour chiffrer mes objets dans Amazon S3 ?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

## Utilisation du chiffrement par défaut avec la réplication
<a name="bucket-encryption-replication"></a>

Après avoir activé le chiffrement par défaut pour un compartiment de destination de réplication, le comportement de chiffrement suivant s’applique :
+ Si des objets du compartiment source ne sont pas chiffrés, les objets réplica du compartiment de destination sont chiffrés à l’aide des paramètres de chiffrement par défaut du compartiment de destination. Par conséquent, les étiquettes d'entité (ETags) des objets sources sont différentes de celles ETags des objets répliqués. Si certaines applications l'utilisent ETags, vous devez les mettre à jour pour tenir compte de cette différence.
+ Si les objets du compartiment source sont chiffrés à l'aide d'un chiffrement côté serveur avec des clés gérées Amazon S3 (SSE-S3), d'un chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) ou d'un chiffrement double couche côté serveur avec AWS KMS clés (DSSE-KMS), les objets répliques du compartiment de destination utilisent le même type de chiffrement que les objets source. Les paramètres de chiffrement par défaut du compartiment de destination ne sont pas utilisés.

Pour plus d’informations sur l’utilisation du chiffrement par défaut avec SSE-KMS, consultez [Réplication d’objets chiffrés](replication-config-for-kms-objects.md).

## Utilisation des clés de compartiment Amazon S3 avec chiffrement par défaut
<a name="bucket-key-default-encryption"></a>

Lorsque vous configurez votre compartiment pour utiliser SSE-KMS comme le comportement de chiffrement par défaut sur de nouveaux objets, vous pouvez également configurer des clés de compartiment S3. Les clés de compartiment S3 réduisent le nombre de transactions depuis Amazon S3 AWS KMS afin de réduire le coût du SSE-KMS. 

Lorsque vous configurez votre compartiment pour utiliser les clés de compartiment S3 pour SSE-KMS sur de nouveaux objets, il AWS KMS génère une clé au niveau du compartiment qui est utilisée pour créer une [clé de données](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) unique pour les objets du compartiment. Cette clé de compartiment S3 est utilisée pendant une période limitée dans le temps dans Amazon S3, ce qui réduit la nécessité pour Amazon S3 de faire des demandes AWS KMS pour effectuer des opérations de chiffrement. 

Pour plus d’informations sur l’utilisation des clés de compartiment S3, consultez [Utilisation de clés de compartiment Amazon S3.](bucket-key.md).

# Configuration du chiffrement par défaut
<a name="default-bucket-encryption"></a>

**Important**  
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d’objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. L'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour le téléchargement de nouveaux objets est disponible dans CloudTrail les journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS CLI et AWS SDKs. Pour plus d’informations, consultez la [FAQ sur le chiffrement par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Les compartiments Amazon S3 ont le chiffrement des compartiments activé par défaut et les nouveaux objets sont automatiquement chiffrés à l'aide du chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3). Ce chiffrement s’applique à tous les nouveaux objets de vos compartiments Amazon S3, sans frais.

Si vous avez besoin d'un contrôle accru sur vos clés de chiffrement, par exemple pour gérer la rotation des clés et l'attribution des politiques d'accès, vous pouvez choisir d'utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) ou le chiffrement côté serveur à double couche avec clés (DSSE-KMS). AWS KMS Pour en savoir plus sur SSE-KMS, consultez [Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS)](specifying-kms-encryption.md). Pour en savoir plus sur DSSE-KMS, consultez [Utilisation du chiffrement double couche côté serveur avec AWS KMS clés (DSSE-KMS)](UsingDSSEncryption.md). 

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 [Création de clés KMS que d’autres comptes peuvent utiliser](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) dans le *Guide du développeur AWS Key Management Service *. 

Lorsque vous définissez le chiffrement de compartiment par défaut sur SSE-KMS, vous pouvez également configurer une clé de compartiment S3 afin de réduire les coûts de vos AWS KMS demandes. Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

**Note**  
Si vous avez l'habitude [PutBucketEncryption](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketEncryption.html)de définir le chiffrement de votre compartiment par défaut sur SSE-KMS, vous devez vérifier que l'ID de votre clé KMS est correct. Amazon S3 ne valide pas l'ID de clé KMS fourni dans les PutBucketEncryption demandes.

Il n’y a pas de frais supplémentaires relatifs à l’utilisation du chiffrement par défaut pour les compartiments S3. Les demandes de configuration du comportement de chiffrement par défaut seront facturées comme des demandes Amazon S3 standard. Pour obtenir des informations sur la tarification, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/). [Pour le SSE-KMS et le DSSE-KMS, des AWS KMS frais s'appliquent et sont indiqués dans le prix.AWS KMS](https://aws.amazon.com/kms/pricing/) 

Le chiffrement côté serveur avec des clés fournies par le client (SSE-C) n’est pas pris en charge pour le chiffrement par défaut.

Vous pouvez configurer le chiffrement par défaut d'Amazon S3 pour un compartiment S3 à l'aide de la console Amazon S3 AWS SDKs, de l'API REST Amazon S3 et du AWS Command Line Interface (AWS CLI).

**Modifications à prendre en compte avant d’activer le chiffrement par défaut**  
Après avoir activé le chiffrement par défaut pour un compartiment, le comportement de chiffrement suivant s’applique :
+ Il n’y a pas de modification pour le chiffrement des objets qui existaient dans le compartiment avant l’activation du chiffrement par défaut. 
+ Lorsque vous chargez des objets après l’activation du chiffrement par défaut :
  + Si vos en-têtes de demandes `PUT` ne comportent pas d’informations de chiffrement, Amazon S3 utilise les paramètres de chiffrement par défaut du compartiment pour chiffrer les objets. 
  + Si vos en-têtes de demandes `PUT` comportent des informations de chiffrement, Amazon S3 utilise les informations de la demande `PUT` pour chiffrer les objets avant de les stocker dans Amazon S3.
+ Si vous utilisez l’option SSE-KMS ou DSSE-KMS pour votre configuration du chiffrement par défaut, vous êtes soumis aux quotas RPS (demandes par seconde) de AWS KMS. Pour plus d'informations sur les quotas de AWS KMS et sur la procédure à suivre pour demander une augmentation des quotas, consultez [Quotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) dans le *Guide du développeur AWS Key Management Service *. 

**Note**  
Les objets chargés avant l’activation du chiffrement par défaut ne seront pas chiffrés. Pour plus d’informations sur le chiffrement d’objets existants, consultez [Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3](bucket-encryption.md).

## Utilisation de la console S3
<a name="bucket-encryption-how-to-set-up-console"></a>

**Pour configurer le chiffrement par défaut sur un compartiment Amazon S3**

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 panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le nom du compartiment que vous souhaitez utiliser. 

1. Choisissez l’onglet **Propriétés**.

1. Sous **Default encryption (Chiffrement par défaut)**, choisissez **Edit (Modifier)**.

1. Pour configurer le chiffrement, sous **Type de chiffrement**, choisissez l’une des options suivantes : 
   + **Chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)**
   + **Chiffrement côté serveur avec AWS Key Management Service clés (SSE-KMS)**
   + **Chiffrement double couche côté serveur avec AWS Key Management Service clés (DSSE-KMS)**
**Important**  
Si vous utilisez l’option SSE-KMS ou DSSE-KMS pour votre configuration du chiffrement par défaut, vous êtes soumis aux quotas RPS (demandes par seconde) de AWS KMS. Pour plus d'informations sur les AWS KMS quotas et sur la manière de demander une augmentation de quota, consultez la section [Quotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) dans le *guide du AWS Key Management Service développeur*. 

   Les compartiments et les nouveaux objets sont chiffrés par défaut avec SSE-S3, sauf si vous spécifiez un autre type de chiffrement par défaut pour vos compartiments. Pour plus d’informations sur le chiffrement par défaut, consultez [Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3](bucket-encryption.md).

   Pour en savoir plus sur l’utilisation du chiffrement côté serveur Amazon S3 pour chiffrer vos données, consultez [Utilisation du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. Si vous avez choisi le **chiffrement côté serveur avec AWS Key Management Service clés (SSE-KMS)** ou le **chiffrement côté serveur double couche avec AWS Key Management Service clés (DSSE-KMS**), procédez comme suit : 

   1. Sous **CléAWS KMS **, spécifiez votre clé KMS de l’une des manières suivantes :
      + Pour choisir parmi une liste de clés KMS disponibles, **choisissez Choisir parmi vos AWS KMS keys**, puis choisissez 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 la section Clés et AWS clés](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) client dans le *Guide du AWS Key Management Service développeur*.
      + Pour saisir l’ARN de la clé KMS, choisissez **Saisir l’ARN de AWS KMS key **, puis saisissez l’ARN de votre clé KMS dans le champ qui s’affiche. 
      + 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 ne pouvez utiliser que les clés KMS activées au même endroit Région AWS que le bucket. Lorsque vous choisissez **Choisissez une clé parmi vos clés KMS**, la console S3 ne répertorie que 100 clés KMS par Région. Si vous avez plus de 100 clés KMS dans la même Région, vous ne pourrez voir que les 100 premières clés KMS dans la console S3. Pour utiliser une clé KMS qui ne figure pas dans la console, choisissez **Saisir l’ARN de AWS KMS key **, puis saisissez l’ARN de la clé KMS.  
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 prend uniquement en charge que les clés KMS de chiffrement symétriques. 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 *.

      Pour plus d’informations sur l’utilisation de SSE-KMS avec Amazon S3, consultez [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md). Pour en savoir plus sur l’utilisation de DSSE-KMS, consultez [Utilisation du chiffrement double couche côté serveur avec AWS KMS clés (DSSE-KMS)](UsingDSSEncryption.md).

   1. Lorsque vous configurez votre compartiment pour utiliser le chiffrement par défaut avec SSE-KMS, vous pouvez également activer la clé de compartiment S3. Les clés de compartiment S3 réduisent le coût du chiffrement en diminuant le trafic de demandes d'Amazon S3 vers AWS KMS. Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

      Pour utiliser les clés de compartiment S3, sous la **Clé de compartiment**, choisissez **Activer**.
**Note**  
Les clés de compartiment S3 ne sont pas prises en charge pour DSSE-KMS.

1. Sélectionnez **Enregistrer les modifications**.

## À l'aide du AWS CLI
<a name="default-bucket-encryption-cli"></a>

Ces exemples montrent comment configurer le chiffrement par défaut en utilisant SSE-S3 ou SSE-KMS avec une clé de compartiment S3.

Pour plus d’informations sur le chiffrement par défaut, consultez [Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3](bucket-encryption.md). Pour plus d'informations sur l'utilisation du AWS CLI pour configurer le chiffrement par défaut, consultez [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html).

**Example — Chiffrement par défaut avec SSE-S3**  
Cet exemple montre comment configurer le chiffrement du compartiment par défaut avec les clés gérées par Amazon S3.  

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example — Chiffrement par défaut avec SSE-KMS à l’aide d’une clé de compartiment S3**  
Cet exemple configure le chiffrement du compartiment par défaut avec SSE-KMS à l'aide d'une clé de compartiment S3.   

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Utilisation de l'API REST
<a name="bucket-encryption-how-to-set-up-api"></a>

Utilisez l’opération `PutBucketEncryption` de l’API REST pour activer le chiffrement par défaut et définir le type de chiffrement côté serveur à utiliser : SSE-S3, SSE-KMS ou DSSE-KMS. 

Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html) dans la *Référence d’API Amazon Simple Storage Service*.

# Surveillance du chiffrement par défaut avec Amazon AWS CloudTrail et Amazon EventBridge
<a name="bucket-encryption-tracking"></a>

**Important**  
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d’objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. L'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour le téléchargement de nouveaux objets est disponible dans CloudTrail les journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS CLI et AWS SDKs. Pour plus d’informations, consultez la [FAQ sur le chiffrement par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Vous pouvez suivre les demandes de configuration de chiffrement par défaut pour les compartiments Amazon S3 à l’aide d’événements AWS CloudTrail . Les noms d'événements d'API suivants sont utilisés dans CloudTrail les journaux :
+ `PutBucketEncryption`
+ `GetBucketEncryption`
+ `DeleteBucketEncryption`

Vous pouvez également créer des EventBridge règles correspondant aux CloudTrail événements de ces appels d'API. Pour plus d'informations sur CloudTrail les événements, consultez[Activer la journalisation des objets d’un compartiment à l’aide de la console](enable-cloudtrail-logging-for-s3.md#enable-cloudtrail-events). Pour plus d'informations sur les EventBridge événements, consultez la section [Événements de Services AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html).

Vous pouvez utiliser CloudTrail les journaux pour les actions Amazon S3 au niveau de l'objet à suivre `PUT` et pour les `POST` demandes adressées à Amazon S3. Vous pouvez utiliser ces actions pour vérifier si le chiffrement par défaut est utilisé pour chiffrer des objets lorsque les demandes `PUT` entrantes n’ont pas d’en-têtes de chiffrement.

Quand Amazon S3 chiffre un objet selon les paramètres de chiffrement par défaut, le journal inclut l’un des champs suivants comme paire nom-valeur : `"SSEApplied":"Default_SSE_S3"`, `"SSEApplied":"Default_SSE_KMS"` ou `"SSEApplied":"Default_DSSE_KMS"`.

Quand Amazon S3 chiffre un objet en utilisant les en-têtes de chiffrement `PUT`, le journal inclut l’un des champs suivants comme paire nom-valeur : `"SSEApplied":"SSE_S3"`, `"SSEApplied":"SSE_KMS"`, `"SSEApplied":"DSSE_KMS"` ou `"SSEApplied":"SSE_C"`. 

Pour les chargements en plusieurs parties, cette information est incluse dans vos demandes d’opération d’API `InitiateMultipartUpload`. Pour plus d'informations sur l'utilisation CloudTrail de et CloudWatch, consultez[Journalisation et surveillance dans Amazon S3](monitoring-overview.md).

# FAQ sur le chiffrement par défaut
<a name="default-encryption-faq"></a>

Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d'objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. SSE-S3, qui utilise la norme de chiffrement avancé 256 bits (AES-256), est automatiquement appliqué à tous les nouveaux compartiments et à tout compartiment S3 existant qui n’a pas déjà un chiffrement par défaut configuré. L'état de chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour les téléchargements de nouveaux objets est disponible dans les AWS CloudTrail journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS Command Line Interface (AWS CLI) et le AWS SDKs.

Les sections suivantes répondent aux questions concernant cette mise à jour. 

**Amazon S3 modifie-t-il les paramètres de chiffrement par défaut de mes compartiments existants pour lesquels le chiffrement par défaut est déjà configuré ?**  
Non Aucune modification n'est apportée à la configuration de chiffrement par défaut pour un compartiment existant sur lequel le chiffrement SSE-S3 ou le chiffrement côté serveur avec AWS Key Management Service (AWS KMS) clés (SSE-KMS) sont déjà configurés. Pour plus d’informations sur la manière de définir le comportement de chiffrement par défaut pour les compartiments, consultez [Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3](bucket-encryption.md). Pour plus d’informations sur les paramètres de chiffrement de SSE-S3 et SSE-KMS, consultez [Protection des données avec le chiffrement côté serveur](serv-side-encryption.md).

**Le chiffrement par défaut est-il activé sur mes compartiments existants qui n’ont pas de chiffrement par défaut configuré ?**  
Oui. Amazon S3 configure désormais le chiffrement par défaut de tous les compartiments non chiffrés existants pour appliquer le chiffrement côté serveur avec les clés gérées S3 (SSE-S3) comme niveau de base du chiffrement pour les nouveaux objets chargés dans ces compartiments. Les objets qui se trouvent déjà dans un compartiment non chiffré existant ne seront pas automatiquement chiffrés.

**Comment puis-je afficher l’état de chiffrement par défaut des nouveaux chargements d’objets ?**  
À l'heure actuelle, vous pouvez consulter l'état de chiffrement par défaut des nouveaux objets chargés dans les AWS CloudTrail journaux, S3 Inventory et S3 Storage Lens, sur la console Amazon S3, et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS Command Line Interface (AWS CLI) et le AWS SDKs.
+ Pour consulter vos CloudTrail événements, reportez-vous à la section [Affichage CloudTrail des événements dans la CloudTrail console](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) du *Guide de AWS CloudTrail l'utilisateur*. CloudTrail les journaux fournissent le suivi des API `PUT` et des `POST` requêtes adressées à Amazon S3. Lorsque le chiffrement par défaut est utilisé pour chiffrer des objets dans vos compartiments, les CloudTrail journaux `PUT` et les demandes d'`POST`API incluront le champ suivant comme paire nom-valeur :. `"SSEApplied":"Default_SSE_S3"` 
+ Pour afficher l’état de chiffrement automatique des nouveaux objets chargés dans S3 Inventory, configurez un rapport S3 Inventory pour inclure le champ de métadonnées **Encryption** (Chiffrement), puis consultez l’état de chiffrement de chaque nouvel objet dans le rapport. Pour plus d’informations, consultez [Configuration d’Amazon S3 Inventory](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configure-inventory.html#storage-inventory-setting-up).
+ Pour consulter l’état de chiffrement automatique des nouveaux chargements d’objets dans S3 Storage Lens, configurez un tableau de bord S3 Storage Lens et consultez les mesures relatives à **Octets chiffrés** et **Nombre d’objets chiffrés** dans la catégorie **Protection des données** du tableau de bord. Pour plus d’informations, consultez [Utilisation de la console S3](storage_lens_creating_dashboard.md#storage_lens_console_creating) et [Afficher les métriques S3 Storage Lens sur les tableaux de bord](storage_lens_view_metrics_dashboard.md).
+ Pour afficher le statut du chiffrement automatique au niveau du compartiment dans la console Amazon S3, vérifiez le **chiffrement par défaut** de vos compartiments Amazon S3 dans la console Amazon S3. Pour de plus amples informations, veuillez consulter [Configuration du chiffrement par défaut](default-bucket-encryption.md).
+ Pour afficher l'état du chiffrement automatique sous la forme d'un en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS Command Line Interface (AWS CLI) et le AWS SDKs, vérifiez l'en-tête de réponse `x-amz-server-side-encryption` lorsque vous utilisez une action d'objet APIs, telle que [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)et [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). 

**Que dois-je faire pour profiter de ce changement ?**  
Vous n’êtes pas tenu d’apporter des modifications à vos applications existantes. Le chiffrement par défaut étant activé pour tous vos compartiments, tous les nouveaux objets chargés sur Amazon S3 sont automatiquement chiffrés.

**Puis-je désactiver le chiffrement des nouveaux objets qui sont enregistrés dans mon compartiment ?**  
Non. SSE-S3 est le nouveau niveau de base du chiffrement qui est appliqué à tous les nouveaux objets chargés dans votre compartiment. Vous ne pouvez plus désactiver le chiffrement pour les nouveaux chargements d’objets.

**Y aura-t-il une incidence sur mes frais ?**  
Non. Le chiffrement par défaut avec SSE-S3 est disponible sans coût supplémentaire. Vous serez facturé pour le stockage, les requêtes et les autres fonctionnalités de S3, comme d’habitude. Pour en savoir plus sur la tarification, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

**Amazon S3 va-t-il chiffrer mes objets existants qui ne sont pas chiffrés ?**  
Non. À partir du 5 janvier 2023, Amazon S3 ne chiffrera automatiquement que les nouveaux chargements d’objets. Pour chiffrer des objets existants, vous pouvez utiliser S3 Batch Operations pour créer des copies chiffrées de vos objets. Ces copies chiffrées conserveront les données et le nom de l’objet existant et seront chiffrées à l’aide des clés de chiffrement que vous spécifiez. Pour plus de détails, consultez [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) (Chiffrement d’objets avec Amazon S3 Batch Operations) dans le *blog sur le stockage AWS *.

**Je n’ai pas activé le chiffrement pour mes compartiments avant cette version. Dois-je modifier la façon dont j’accède aux objets ?**  
Non. Le chiffrement par défaut avec SSE-S3 chiffre automatiquement vos données lorsqu’elles sont enregistrées sur Amazon S3 et les déchiffre pour vous lorsque vous y accédez. Il n’y a aucun changement dans la façon dont vous accédez aux objets qui sont automatiquement chiffrés.

**Dois-je modifier la façon dont j’accède à mes objets chiffrés côté client ?**  
Non. Tous les objets chiffrés côté client qui sont chiffrés avant d’être chargés dans Amazon S3 arrivent sous forme d’objets texte chiffré dans Amazon S3. Ces objets seront désormais dotés d’une couche supplémentaire de chiffrement SSE-S3. Vos charges de travail qui utilisent des objets chiffrés côté client ne nécessiteront aucune modification de vos services clients ou de vos paramètres d’autorisation.

**Note**  
HashiCorp Les utilisateurs de Terraform qui n'utilisent pas de version mise à jour du AWS fournisseur peuvent constater une dérive inattendue après avoir créé de nouveaux compartiments S3 sans configuration de chiffrement définie par le client. Pour éviter cette dérive, mettez à jour la version de votre AWS fournisseur Terraform vers l'une des versions suivantes : n'importe quelle 4.x version3.76.1, ou. 2.70.4

# Mise à jour du chiffrement côté serveur pour les données existantes
<a name="update-sse-encryption"></a>

Tous les compartiments Amazon S3 ont le chiffrement configuré par défaut et les objets sont automatiquement chiffrés à l’aide du chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3). Ce paramètre de chiffrement par défaut s'applique à tous les nouveaux objets de vos compartiments Amazon S3.

À l'aide de l'opération `UpdateObjectEncryption` API, vous pouvez automatiquement mettre à jour le type de chiffrement côté serveur d'un objet chiffré existant dans un compartiment à usage général, du chiffrement côté serveur avec le chiffrement géré par Amazon S3 (SSE-S3) au chiffrement côté serveur avec () des clés de chiffrement (SSE-KMS). AWS Key Management Service AWS KMS L'opération `UpdateObjectEncryption` API utilise le [chiffrement d'enveloppe](https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping) pour rechiffrer la clé de données utilisée pour chiffrer et déchiffrer votre objet avec le nouveau type de chiffrement côté serveur que vous avez spécifié. 

Amazon S3 effectue cette mise à jour de type de chiffrement sans aucun mouvement de données. En d'autres termes, lorsque vous utilisez cette `UpdateObjectEncryption` opération, vos données ne sont pas copiées, les objets archivés dans S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive ne sont pas restaurés, et les objets de la classe de stockage S3 Intelligent-Tiering ne sont pas déplacés entre les niveaux. En outre, l'`UpdateObjectEncryption`opération préserve toutes les propriétés des métadonnées de l'objet, notamment la classe de stockage, la date de création, la date de dernière modification et les propriétés de somme de contrôle. ETag

L'`UpdateObjectEncryption`opération est prise en charge pour toutes les classes de stockage S3 prises en charge par des buckets à usage général. Vous pouvez utiliser cette `UpdateObjectEncryption` opération pour effectuer les opérations suivantes : 
+ Transformez les objets chiffrés du chiffrement côté serveur avec le chiffrement géré par Amazon S3 (SSE-S3) au chiffrement côté serveur avec () des clés de chiffrement AWS Key Management Service (SSE-KMS AWS KMS).
+ Mettez à jour les objets chiffrés SSE-KMS au niveau de l'objet pour utiliser les clés de compartiment S3, ce qui réduit le trafic de AWS KMS demandes d'Amazon S3 vers. AWS KMS Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).
+ Modifiez la clé KMS gérée par le client qui est utilisée pour chiffrer vos données afin de vous conformer aux normes personnalisées de rotation des clés.

**Note**  
Les objets source non chiffrés ou chiffrés à l'aide d'un chiffrement double couche côté serveur (DSSE-KMS) ou de clés de chiffrement fournies par le client AWS KMS keys (SSE-C) ne sont pas pris en charge par cette opération.

L'`UpdateObjectEncryption`opération s'effectue généralement en quelques millisecondes, quelle que soit la taille de l'objet ou la classe de stockage, y compris S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive. Cette opération n'est pas considérée comme un accès pour S3 Intelligent-Tiering, de sorte que les objets du niveau Accès peu fréquent ou du niveau Archive Instant Access ne reviendront pas automatiquement au niveau Accès fréquent si vous modifiez le type de chiffrement côté serveur de votre objet. 

`UpdateObjectEncryption`est une opération d'API au niveau de l'objet (plan de données) qui est enregistrée dans les journaux d'accès et les événements de AWS CloudTrail données du serveur Amazon S3. Pour de plus amples informations, veuillez consulter [Options de journalisation pour Amazon S3](logging-with-S3.md). 

 Le prix de l'`UpdateObjectEncryption`opération est le même que celui des `LIST` requêtes `PUT``COPY`,`POST`, et (pour 1 000 demandes) et est toujours facturée en tant que demande de classe de stockage standard S3, quelle que soit la classe de stockage de l'objet sous-jacent. Pour plus d’informations, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

## Restrictions et considérations
<a name="update-sse-encryption-restrictions"></a>

Lors de l'utilisation de `UpdateObjectEncryption` cette opération, les restrictions et considérations suivantes s'appliquent :
+ L'`UpdateObjectEncryption`opération ne prend pas en charge les objets non chiffrés ni les objets chiffrés à l'aide d'un chiffrement double couche côté serveur (DSSE-KMS) ou de clés de chiffrement fournies par le client AWS KMS keys (SSE-C). En outre, vous ne pouvez pas spécifier SSE-S3 comme nouvelle demande de type `UpdateObjectEncryption` de chiffrement demandée.
+ Vous pouvez utiliser cette `UpdateObjectEncryption` opération pour mettre à jour des objets dans des compartiments sur lesquels le contrôle de version S3 est activé. Pour mettre à jour le type de chiffrement d'une version donnée, vous devez spécifier un ID de version dans votre `UpdateObjectEncryption` demande. Si vous ne spécifiez pas d'ID de version, la `UpdateObjectEncryption` demande agit sur la version actuelle de l'objet. Pour plus d’informations sur la gestion des versions S3, consultez [Conservation de plusieurs versions d’objets grâce à la gestion des versions S3](Versioning.md).
+ L'`UpdateObjectEncryption`opération échoue sur tout objet auquel un mode de rétention S3 Object Lock ou un blocage légal est appliqué. Si un objet est soumis à une période de conservation en mode gouvernance ou à une suspension légale, vous devez d'abord supprimer le statut Object Lock de l'objet avant d'émettre votre `UpdateObjectEncryption` demande. Vous ne pouvez pas utiliser cette `UpdateObjectEncryption` opération avec des objets auxquels une période de conservation du mode de conformité Object Lock est appliquée. Pour plus d'informations sur la fonctionnalité de verrouillage des objets S3, veuillez consulter [Verrouillage d’objets avec la fonctionnalité de verrouillage d’objet](object-lock.md).
+ `UpdateObjectEncryption`les requêtes sur les compartiments source pour lesquels la réplication en direct est activée ne déclencheront pas d'événements de réplication dans le compartiment de destination. Si vous souhaitez modifier le type de chiffrement des objets dans vos compartiments source et de destination, vous devez lancer des `UpdateObjectEncryption` demandes distinctes sur les objets des compartiments source et de destination.
+ Par défaut, toutes les `UpdateObjectEncryption` demandes qui spécifient une clé KMS gérée par le client sont limitées aux clés KMS détenues par le propriétaire du bucket. Compte AWS Si vous utilisez AWS Organizations, vous pouvez demander la possibilité d'utiliser des comptes AWS KMS keys appartenant à d'autres membres au sein de votre organisation en contactant AWS Support.
+ Si vous utilisez S3 Batch Replication pour répliquer des ensembles de données entre régions et que le type de chiffrement côté serveur de vos objets a déjà été mis à jour de SSE-S3 à SSE-KMS, vous aurez peut-être besoin d'autorisations supplémentaires. Dans le compartiment de la région source, vous devez disposer `kms:decrypt` d'autorisations. Ensuite, vous aurez besoin des `kms:encrypt` autorisations `kms:decrypt` et pour le compartiment dans la région de destination. 
+ Vous devez fournir un ARN de clé KMS complet dans votre `UpdateObjectEncryption` demande. Vous ne pouvez pas utiliser de nom d'alias ou d'ARN d'alias. Vous pouvez déterminer l'ARN complet de la clé KMS dans la console AWS KMS ou à l'aide de l'`DescribeKey`API AWS KMS.

## Autorisations requises
<a name="update-sse-encryption-permissions"></a>

Pour effectuer l'`UpdateObjectEncryption`opération, vous devez disposer des autorisations suivantes : 
+ `s3:PutObject`
+ `s3:UpdateObjectEncryption`
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:ReEncrypt*`

Si vous utilisez AWS Organizations, pour utiliser cette opération avec des clés KMS gérées par le client provenant d'autres membres de Comptes AWS votre organisation, vous devez disposer de l'`organizations:DescribeAccount`autorisation. Vous devez également demander la possibilité d'utiliser des comptes AWS KMS keys appartenant à d'autres membres au sein de votre organisation en contactant AWS Support.

Pour effectuer l'`UpdateObjectEncryption`opération, ajoutez la politique Gestion des identités et des accès AWS (IAM) suivante à votre rôle IAM. Pour utiliser cette politique, `amzn-s3-demo-bucket` remplacez-la par le nom de votre compartiment à usage général et remplacez l'autre `user input placeholders` par vos propres informations.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "AllowUpdateObjectEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:UpdateObjectEncryption",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:ReEncrypt*",
                "organizations:DescribeAccount"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

## Mise à jour du chiffrement en masse
<a name="update-sse-encryption-bulk"></a>

Pour mettre à jour le type de chiffrement côté serveur de plusieurs objets Amazon S3 avec une seule demande, vous pouvez utiliser S3 Batch Operations. Vous pouvez fournir à S3 Batch Operations une liste d'objets sur lesquels opérer, ou vous pouvez demander à Batch Operations de générer une liste d'objets basée sur des métadonnées d'objets, notamment le préfixe, la classe de stockage, la date de création, le type de cryptage, l'ARN de la clé KMS ou le statut de la clé de compartiment S3. La fonctionnalité des opérations par lot S3 appelle l’opération d’API respective pour effectuer l’opération spécifiée. Une seule tâche Batch Operations peut effectuer l'opération spécifiée sur des milliards d'objets au sein d'un bucket contenant des pétaoctets de données. Pour en savoir plus sur les opérations par lots, veuillez consulter [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md). 

La fonctionnalité d’opérations par lot S3 suit la progression, envoie des notifications et stocke un rapport de fin détaillé sur toutes les actions, offrant ainsi une expérience sans serveur entièrement gérée et qui peut être vérifiée. Vous pouvez utiliser S3 Batch Operations via la console Amazon S3 AWS Command Line Interface (AWS CLI) AWS SDKs ou l'API REST Amazon S3. Pour de plus amples informations, veuillez consulter [Mettre à jour le chiffrement des objets](batch-ops-update-encryption.md).

## Mettre à jour le chiffrement des objets
<a name="update-sse-encryption-single-object"></a>

Vous pouvez mettre à jour le type de chiffrement côté serveur pour un objet par le biais de AWS Command Line Interface (AWS CLI) AWS SDKs ou de l'API REST Amazon S3. 

### Mettre à jour le chiffrement d'un objet
<a name="update-sse-encryption-single-object-procedure"></a>

#### À l'aide du AWS CLI
<a name="update-sse-encryption-single-object-cli"></a>

Pour exécuter les commandes suivantes, vous devez les avoir AWS CLI installées et configurées. Si ce n'est pas le cas AWS CLI , consultez la section [Installer ou mettre à jour vers la dernière version du AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) *Guide de l'AWS Command Line Interface utilisateur*.

Vous pouvez également exécuter des AWS CLI commandes depuis la console en utilisant AWS CloudShell. AWS CloudShell est un shell pré-authentifié basé sur un navigateur que vous pouvez lancer directement depuis le. AWS Management Console Pour plus d'informations, voir [Qu'est-ce que c'est CloudShell ?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) et [Mise en route AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) dans le *guide de AWS CloudShell l'utilisateur*.

**Pour mettre à jour le chiffrement d'un objet à l'aide du AWS CLI**

Pour utiliser l’exemple de commande suivant, remplacez les `user input placeholders` par vos propres informations. 

1. Utilisez la commande suivante pour mettre à jour le chiffrement d'un seul objet (`index.html`) dans votre compartiment à usage général (par exemple,`amzn-s3-demo-bucket`) afin d'utiliser SSE-KMS avec une clé de compartiment S3 :

   ```
   aws s3api update-object-encryption \
   --bucket amzn-s3-demo-bucket \
   --key index.html \
   --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
   ```
**Note**  
Vous devez spécifier le nom complet de la ressource AWS KMS key Amazon (ARN). L'ID de clé KMS et l'alias de clé KMS ne sont pas pris en charge.

1. Exécutez la `head-object` commande pour afficher le type de chiffrement mis à jour de votre objet :

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html
   ```

#### Utilisation de l'API REST
<a name="update-sse-encryption-single-object-rest-api"></a>

Vous pouvez envoyer des requêtes REST pour mettre à jour le chiffrement d'un objet. Pour de plus amples informations, veuillez consulter [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html).

#### En utilisant le AWS SDKs
<a name="update-sse-encryption-single-object-sdk"></a>

Vous pouvez utiliser le AWS SDKs pour mettre à jour le chiffrement d'un objet. Pour plus d'informations, consultez la [liste des produits pris en charge SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html#API_UpdateObjectEncryption_SeeAlso).

------
#### [ Java ]

**Example**  
L' AWS SDK for Java 2.x exemple suivant met à jour le type de chiffrement en SSE-KMS pour un objet dans un compartiment à usage général.  

```
    public void updateObjectEncryption(String bucketName,
                                       String objectKey,
                                       String versionId,
                                       String kmsKeyArn,
                                       boolean bucketKeyEnabled) {
        // Create the target object encryption type.
        ObjectEncryption objectEncryption = ObjectEncryption.builder()
                .ssekms(SSEKMSEncryption.builder()
                        .kmsKeyArn(kmsKeyArn)
                        .bucketKeyEnabled(bucketKeyEnabled)
                        .build())
                .build();

        // Create the UpdateObjectEncryption request.
        UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .versionId(versionId)
                .objectEncryption(objectEncryption)
                .build();

        // Update the object encryption.
        try {
            getS3Client().updateObjectEncryption(request);
            logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName);
        } catch (S3Exception e) {
            logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(),
                    e.awsErrorDetails().errorCode());
            throw e;
        }
    }
```

------
#### [ Python ]

**Example**  
L' AWS SDK pour Python (Boto3) exemple suivant montre comment mettre à jour le type de chiffrement SSE-KMS pour un objet dans un compartiment à usage général.   

```
response = client.update_object_encryption(
    Bucket='string',
    Key='string',
    VersionId='string',
    ObjectEncryption={
        'SSEKMS': {
                'KMSKeyArn': 'string',
                'BucketKeyEnabled': True|False
        }
    }
)
```

------

# Utilisation du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)
<a name="UsingServerSideEncryption"></a>

**Important**  
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d’objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. L'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour le téléchargement de nouveaux objets est disponible dans CloudTrail les journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS CLI et AWS SDKs. Pour plus d’informations, consultez la [FAQ sur le chiffrement par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Tous les nouveaux chargements d’objets dans les compartiments Amazon S3 sont chiffrés par défaut à l’aide du chiffrement côté serveur avec les clés gérées Amazon S3 (SSE-S3).

Le chiffrement côté serveur protège les données au repos. Amazon S3 chiffre chaque objet à l’aide d’une clé unique. Comme protection supplémentaire, il chiffre la clé elle-même à l’aide d’une clé dont il effectue une rotation régulière. Le chiffrement côté serveur Amazon S3 utilise le mode AES-GCM (Advanced Encryption Standard Galois/Counter Mode) 256 bits pour chiffrer tous les objets chargés.

L’utilisation du chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) n’entraîne pas de frais supplémentaires. Toutefois, les demandes de configuration de la fonction de chiffrement par défaut seront facturées comme des demandes Amazon S3 standard. Pour obtenir des informations sur la tarification, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

Si vous souhaitez que vos chargements de données soient chiffrés à l’aide de clés gérées uniquement par Amazon S3, vous pouvez utiliser la stratégie de compartiment suivante. Par exemple, la stratégie de compartiment suivante refuse les autorisations de charger un objet si la demande n’inclut pas l’en-tête `x-amz-server-side-encryption` demandant le chiffrement côté serveur :

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "PutObjectPolicy",
  "Statement": [
    {
      "Sid": "DenyObjectsThatAreNotSSES3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
   ]
}
```

------

**Note**  
Un chiffrement côté serveur chiffre uniquement les données d’objet, pas les métadonnées d’objet. 

## Prise en charge de l’API pour le chiffrement côté serveur
<a name="APISupportforServer-SideEncryption"></a>

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. Pour utiliser un autre type de chiffrement, vous pouvez soit spécifier le type de chiffrement côté serveur à utiliser dans vos demandes S3 `PUT`, soit actualiser la configuration du chiffrement par défaut dans le compartiment de destination. 

Si vous souhaitez spécifier un type de chiffrement différent dans vos `PUT` demandes, vous pouvez utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), le chiffrement double couche côté serveur avec des clés (DSSE-KMS) ou le chiffrement côté serveur avec des AWS KMS clés fournies par le client (SSE-C). Si vous souhaitez définir une autre configuration de chiffrement par défaut dans le compartiment de destination, vous pouvez utiliser SSE-KMS ou DSSE-KMS.

Pour plus d’informations sur la modification de la configuration du chiffrement par défaut de vos compartiments à usage général, consultez [Configuration du chiffrement par défaut](default-bucket-encryption.md). 

Lorsque vous remplacez la configuration du chiffrement par défaut de votre compartiment par SSE-KMS, le type de chiffrement des objets Amazon S3 existants du compartiment n’est pas modifié. Pour modifier le type de chiffrement de vos objets préexistants après avoir remplacé la configuration de chiffrement par défaut par SSE-KMS, vous pouvez utiliser Amazon S3 Batch Operations. Vous fournissez une liste d’objets à S3 Batch Operations, qui appelle l’opération d’API correspondante. Vous pouvez utiliser l’action [Copie d’objets](batch-ops-copy-object.md) pour copier des objets existants et les réécrire dans le même compartiment en tant qu’objets chiffrés par SSE-KMS. Une tâche d’opérations par lots peut effectuer l’opération spécifiée sur des milliards d’objets. Pour plus d’informations, consultez [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md) et la publication [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) dans le *blog sur le stockage AWS *. 

Pour configurer le chiffrement côté serveur à l'aide du REST de création d'objets APIs, vous devez fournir l'en-tête de `x-amz-server-side-encryption` demande. Pour plus d'informations sur le REST APIs, consultez[Utilisation de l'API REST](specifying-s3-encryption.md#SSEUsingRESTAPI).

Les Amazon S3 suivants APIs prennent en charge cet en-tête :
+ **Opérations PUT** : spécifiez l’en-tête de demande lors du chargement des données grâce à l’API `PUT`. Pour plus d’informations, consultez [Objet PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).
+ **Lancement du chargement partitionné** : spécifiez l’en-tête dans la demande initiale lors du chargement d’objets volumineux grâce à l’API de chargement partitionné. Pour plus d’informations, consultez [Lancement du chargement partitionné](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html).
+ **Opérations COPY** : lorsque vous copiez un objet, vous disposez à la fois d’un objet source et d’un objet cible. Pour plus d’informations, consultez [Objet PUT - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html).

**Note**  
Lors de l’utilisation d’une opération `POST` pour charger un objet, à la place de l’en-tête de demande, vous fournissez les mêmes informations dans les champs du formulaire. Pour plus d’informations, consultez [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). 

Ils fournissent AWS SDKs également un wrapper APIs que vous pouvez utiliser pour demander un chiffrement côté serveur. Vous pouvez également utiliser le AWS Management Console pour télécharger des objets et demander un chiffrement côté serveur.

Pour obtenir des informations plus générales, consultez [Concepts AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) dans le *Guide du développeur AWS Key Management Service *.

**Topics**
+ [Prise en charge de l’API pour le chiffrement côté serveur](#APISupportforServer-SideEncryption)
+ [Spécification du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)](specifying-s3-encryption.md)

# Spécification du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)
<a name="specifying-s3-encryption"></a>

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. Pour utiliser un autre type de chiffrement, vous pouvez soit spécifier le type de chiffrement côté serveur à utiliser dans vos demandes S3 `PUT`, soit actualiser la configuration du chiffrement par défaut dans le compartiment de destination. 

Si vous souhaitez spécifier un type de chiffrement différent dans vos `PUT` demandes, vous pouvez utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), le chiffrement double couche côté serveur avec des clés (DSSE-KMS) ou le chiffrement côté serveur avec des AWS KMS clés fournies par le client (SSE-C). Si vous souhaitez définir une autre configuration de chiffrement par défaut dans le compartiment de destination, vous pouvez utiliser SSE-KMS ou DSSE-KMS.

Pour plus d’informations sur la modification de la configuration du chiffrement par défaut de vos compartiments à usage général, consultez [Configuration du chiffrement par défaut](default-bucket-encryption.md). 

Lorsque vous remplacez la configuration du chiffrement par défaut de votre compartiment par SSE-KMS, le type de chiffrement des objets Amazon S3 existants du compartiment n’est pas modifié. Pour modifier le type de chiffrement de vos objets préexistants après avoir remplacé la configuration de chiffrement par défaut par SSE-KMS, vous pouvez utiliser Amazon S3 Batch Operations. Vous fournissez une liste d’objets à S3 Batch Operations, qui appelle l’opération d’API correspondante. Vous pouvez utiliser l’action [Copie d’objets](batch-ops-copy-object.md) pour copier des objets existants et les réécrire dans le même compartiment en tant qu’objets chiffrés par SSE-KMS. Une tâche d’opérations par lots peut effectuer l’opération spécifiée sur des milliards d’objets. Pour plus d’informations, consultez [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md) et la publication [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) dans le *blog sur le stockage AWS *. 

Vous pouvez spécifier SSE-S3 à l'aide de la console S3 APIs AWS SDKs, REST et AWS Command Line Interface ()AWS CLI. Pour de plus amples informations, veuillez consulter [Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3](bucket-encryption.md).

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

Cette rubrique décrit comment définir ou modifier le type de chiffrement qu’un objet utilise à l’aide de la AWS Management Console. Lorsque vous copiez un objet en utilisant la console, Amazon S3 copie l’objet en l’état. Cela signifie que si l’objet source est chiffré, l’objet cible est également chiffré. La console vous permet d’ajouter ou de modifier le chiffrement d’un objet. 

**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 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 **Server-side encryption with Amazon S3 managed keys (SSE-S3)** (Chiffrement côté serveur avec clés de chiffrement gérées par Amazon S3 (SSE-S3)). SSE-S3 utilise l'un des chiffrements par bloc les plus puissants qui existent, Advanced Encryption Standard à 256 bits (AES-256) pour chiffrer chaque objet. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

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="SSEUsingRESTAPI"></a>

Lors de la création d’un objet (c’est-à-dire lorsque vous chargez un nouvel objet ou effectuez une copie d’un objet existant), vous pouvez spécifier si vous souhaitez qu’Amazon S3 chiffre vos données avec des clés gérées par Amazon S3 (SSE-S3) en ajoutant l’en-tête `x-amz-server-side-encryption` à la demande. Définissez la valeur de l’en-tête sur l’algorithme de chiffrement `AES256` pris en charge par Amazon S3. Amazon S3 confirme que votre objet est stocké avec SSE-KMS en renvoyant l’en-tête de réponse `x-amz-server-side-encryption`. 

Les opérations d’API de chargement REST suivantes acceptent l’en-tête de demande `x-amz-server-side-encryption`.
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Lancement du chargement partitionné](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)

Lors du chargement d’objets volumineux à l’aide de l’opération d’API de chargement partitionné, vous pouvez spécifier un chiffrement côté serveur en ajoutant l’en-tête `x-amz-server-side-encryption` à la demande de lancement de chargement partitionné. 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.

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 à SSE-S3. 
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Lancement du chargement partitionné](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Chargement d’une partie](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html)
+ [Chargement d’une partie (Copy)](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
+ [Achèvement du chargement partitionné](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html)
+ [Get Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
+ [Head Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)

**Note**  
N’envoyez pas d’en-têtes de demande de chiffrement pour les demandes `GET` et `HEAD` si votre objet utilise SSE-S3 ou vous obtiendrez une erreur code d’état HTTP 400 (Demande erronée).

## En utilisant le AWS SDKs
<a name="s3-using-sdks"></a>

Lors de l'utilisation AWS SDKs, vous pouvez demander à Amazon S3 d'utiliser le chiffrement côté serveur avec des clés de chiffrement gérées par Amazon S3 (SSE-S3). Cette section fournit des exemples d'utilisation du AWS SDKs dans plusieurs langues. Pour plus d'informations sur les autres SDKs, reportez-vous à la [section Exemples de code et bibliothèques](https://aws.amazon.com/code). 

------
#### [ Java ]

Lorsque vous utilisez le AWS SDK pour Java pour télécharger un objet, vous pouvez utiliser SSE-S3 pour le chiffrer. Pour demander un chiffrement côté serveur, utilisez la propriété `ObjectMetadata` de la demande `PutObjectRequest` pour définir l’en-tête de demande `x-amz-server-side-encryption`. Lorsque vous appelez la méthode `putObject()` du `AmazonS3Client`, Amazon S3 chiffre et enregistre les données.

Vous pouvez également demander le chiffrement SSE-S3 lors du chargement d’objet avec l’opération d’API de chargement partitionné : 
+ Lorsque vous utilisez l’opération d’API de chargement partitionné de haut niveau, vous utilisez les méthodes `TransferManager` pour appliquer le chiffrement côté serveur aux objets à mesure que vous les chargez. Vous pouvez utiliser n’importe quelle méthode de chargement qui accepte `ObjectMetadata` comme paramètre. Pour plus d’informations, consultez [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md).
+ Lorsque vous utilisez l’opération d’API de chargement partitionné de bas niveau, vous spécifiez le chiffrement côté serveur quand vous lancez le chargement partitionné. Vous ajoutez la propriété `ObjectMetadata` en appelant la méthode `InitiateMultipartUploadRequest.setObjectMetadata()`. Pour plus d’informations, consultez [Utilisation de AWS SDKs (API de bas niveau)](mpu-upload-object.md#mpu-upload-low-level).

Vous ne pouvez pas modifier directement l’état de chiffrement d’un objet (chiffrer un objet non chiffré ou déchiffrer un objet chiffré). Pour modifier l’état de chiffrement d’un objet, vous effectuez une copie de l’objet, en spécifiant l’état de chiffrement voulu pour la copie, puis supprimez l’objet d’origine. Amazon S3 chiffre l’objet copié uniquement si vous demandez explicitement un chiffrement côté serveur. Pour demander le chiffrement de l’objet copié via l’API Java, utilisez la propriété `ObjectMetadata` pour spécifier le chiffrement côté serveur dans la demande `CopyObjectRequest`.

**Example Exemple**  
L’exemple suivant illustre comment définir le chiffrement côté serveur à l’aide du kit AWS SDK pour Java. Il explique comment effectuer les tâches suivantes :  
+ Chargez un nouvel objet à l’aide de SSE-S3.
+ Modifier l’état de chiffrement d’un objet (dans cet exemple, chiffrer un objet précédemment non chiffré) en effectuant une copie de l’objet.
+ Vérifier l’état de chiffrement de l’objet.
Pour plus d’informations sur le chiffrement côté serveur, consultez [Utilisation de l'API REST](#SSEUsingRESTAPI). Pour obtenir des instructions sur la création et le test d'un échantillon fonctionnel, voir [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) dans le guide du AWS SDK pour Java développeur.  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***";
        String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***";
        String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Upload an object and encrypt it with SSE.
            uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

            // Upload a new unencrypted object, then change its encryption state
            // to encrypted by making a copy.
            changeSSEEncryptionStatusByCopying(s3Client,
                    bucketName,
                    keyNameToCopyAndEncrypt,
                    copiedObjectKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) {
        String objectContent = "Test object encrypted with SSE";
        byte[] objectBytes = objectContent.getBytes();

        // Specify server-side encryption.
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(objectBytes.length);
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        PutObjectRequest putRequest = new PutObjectRequest(bucketName,
                keyName,
                new ByteArrayInputStream(objectBytes),
                objectMetadata);

        // Upload the object and check its encryption status.
        PutObjectResult putResult = s3Client.putObject(putRequest);
        System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
        printEncryptionStatus(putResult);
    }

    private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,
            String bucketName,
            String sourceKey,
            String destKey) {
        // Upload a new, unencrypted object.
        PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying");
        System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
        printEncryptionStatus(putResult);

        // Make a copy of the object and use server-side encryption when storing the
        // copy.
        CopyObjectRequest request = new CopyObjectRequest(bucketName,
                sourceKey,
                bucketName,
                destKey);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        request.setNewObjectMetadata(objectMetadata);

        // Perform the copy operation and display the copy's encryption status.
        CopyObjectResult response = s3Client.copyObject(request);
        System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
        printEncryptionStatus(response);

        // Delete the original, unencrypted object, leaving only the encrypted copy in
        // Amazon S3.
        s3Client.deleteObject(bucketName, sourceKey);
        System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
    }

    private static void printEncryptionStatus(SSEResultBase response) {
        String encryptionStatus = response.getSSEAlgorithm();
        if (encryptionStatus == null) {
            encryptionStatus = "Not encrypted with SSE";
        }
        System.out.println("Object encryption status is: " + encryptionStatus);
    }
}
```

------
#### [ .NET ]

Lorsque vous chargez un objet, vous pouvez indiquer à Amazon S3 de le chiffrer. Pour modifier l’état de chiffrement d’un objet existant, vous effectuez une copie de l’objet et supprimez l’objet source. Par défaut, l’opération de copie ne chiffre la cible que si vous demandez explicitement un chiffrement côté serveur de l’objet cible. Pour spécifier SSE-S3 dans `CopyObjectRequest`, ajoutez ce qui suit :

```
 ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
```

Pour obtenir un exemple pratique sur la façon de copier un objet, consultez [À l'aide du AWS SDKs](copy-object.md#CopyingObjectsUsingSDKs). 

L’exemple suivant permet de charger un objet. Dans la demande, l’exemple indique à Amazon S3 de chiffrer l’objet. L’exemple récupère ensuite les métadonnées de l’objet et vérifie la méthode de chiffrement utilisée. Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez [Getting Started with the AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET dans *AWS le Guide du développeur du SDK pour* .NET. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SpecifyServerSideEncryptionTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for object created ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            WritingAnObjectAsync().Wait();
        }

        static async Task WritingAnObjectAsync()
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    ContentBody = "sample text",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
                };

                var putResponse = await client.PutObjectAsync(putRequest);

                // Determine the encryption state of an object.
                GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest);
                ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod;

                Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString());
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

Cette rubrique explique comment utiliser les classes de la version 3 de AWS SDK pour PHP pour ajouter SSE-S3 aux objets que vous chargez sur Amazon S3. Pour plus d'informations sur l'API AWS SDK for Ruby, consultez [AWS SDK for Ruby](https://docs.aws.amazon.com/sdkforruby/api/index.html) - Version 2.

Pour charger un objet dans Amazon S3, utilisez la méthode [Aws\$1S3\$1S3Client::putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject). Pour ajouter l’en-tête de demande `x-amz-server-side-encryption` à votre demande de chargement, spécifiez le paramètre `ServerSideEncryption` avec la valeur `AES256` comme illustré dans l’exemple de code suivant. Pour plus d’informations sur les demandes de chiffrement côté serveur, consultez [Utilisation de l'API REST](#SSEUsingRESTAPI).

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.
$filepath = '*** Your File Path ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Upload a file with server-side encryption.
$result = $s3->putObject([
    'Bucket'               => $bucket,
    'Key'                  => $keyname,
    'SourceFile'           => $filepath,
    'ServerSideEncryption' => 'AES256',
]);
```

En réponse, Amazon S3 renvoie l’en-tête `x-amz-server-side-encryption` avec la valeur de l’algorithme de chiffrement qui a été utilisé pour chiffrer les données de l’objet. 

Lorsque vous chargez des objets volumineux à l’aide de l’opération d’API de chargement partitionné, vous pouvez spécifier SSE-S3 pour les objets que vous chargez, comme suit : 
+ Lorsque vous utilisez l'opération d'API de téléchargement partitionné de bas niveau, spécifiez le chiffrement côté serveur lorsque vous appelez la méthode [Aws \$1 S3 \$1 S3Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) : : (). createMultipartUpload Pour ajouter l’en-tête `x-amz-server-side-encryption` à la demande, spécifiez le paramètre `array` avec la clé `ServerSideEncryption` en lui donnant la valeur `AES256`. Pour plus d’informations sur l’opération d’API de chargement partitionné de bas niveau, consultez [Utilisation de AWS SDKs (API de bas niveau)](mpu-upload-object.md#mpu-upload-low-level).
+ Lorsque vous utilisez l'opération d'API de téléchargement partitionné de haut niveau, spécifiez le chiffrement côté serveur à l'aide du `ServerSideEncryption` paramètre de l'[CreateMultipartUpload](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload)opération d'API. Pour obtenir un exemple d’utilisation de la méthode `setOption()` avec l’opération d’API de chargement partitionné de haut niveau, consultez [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md).

Pour déterminer l’état de chiffrement d’un objet existant, récupérez les métadonnées d’objet en appelant la méthode [Aws\$1S3\$1S3Client::headObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#headobject) comme illustré dans l’exemple de code PHP suivant.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.
$result = $s3->headObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
]);
echo $result['ServerSideEncryption'];
```

Pour changer l’état de chiffrement d’un objet existant, faites une copie de l’objet grâce à la méthode [Aws\$1S3\$1S3Client::copyObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#copyobject) et supprimez l’objet source. Par défaut, `copyObject()` ne chiffre pas la cible, sauf si vous demandez explicitement un chiffrement côté serveur de l’objet de destination à l’aide du paramètre `ServerSideEncryption` avec la valeur `AES256`. L’exemple de code PHP suivant fait une copie d’un objet et ajoute un chiffrement côté serveur à l’objet copié.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Copy an object and add server-side encryption.
$s3->copyObject([
    'Bucket'               => $targetBucket,
    'Key'                  => $targetKeyname,
    'CopySource'           => "$sourceBucket/$sourceKeyname",
    'ServerSideEncryption' => 'AES256',
]);
```

Pour plus d’informations, consultez les rubriques suivantes :
+ [AWS SDK pour PHP pour la classe Amazon S3 Aws \$1 S3 \$1 S3Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [Documentation AWS SDK pour PHP](https://aws.amazon.com/documentation/sdk-for-php/)

------
#### [ Ruby ]

Lorsque vous utilisez le AWS SDK pour Ruby pour télécharger un objet, vous pouvez spécifier que l'objet doit être stocké chiffré au repos avec SSE-S3. Lorsque vous relisez l’objet, il est automatiquement déchiffré.

L'exemple de AWS SDK pour Ruby version 3 suivant montre comment spécifier qu'un fichier chargé sur Amazon S3 soit chiffré au repos.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectPutSseWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  def put_object_encrypted(object_content, encryption)
    @object.put(body: object_content, server_side_encryption: encryption)
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-encrypted-content"
  object_content = "This is my super-secret content."
  encryption = "AES256"

  wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content))
  return unless wrapper.put_object_encrypted(object_content, encryption)

  puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}."
end

run_demo if $PROGRAM_NAME == __FILE__
```

L’exemple de code suivant montre comment déterminer l’état de chiffrement d’un objet existant.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectGetEncryptionWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  # Gets the object into memory.
  #
  # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil.
  def object
    @object.get
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't get object #{@object.key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-object.txt"

  wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key))
  obj_data = wrapper.get_object
  return unless obj_data

  encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption
  puts "Object #{object_key} uses #{encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Si un chiffrement côté serveur n’est pas utilisé pour l’objet stocké dans Amazon S3, la méthode renvoie `null`.

Pour modifier l’état de chiffrement d’un objet existant, effectuez une copie de l’objet et supprimez l’objet source. Par défaut, les méthodes de copie ne chiffrent la cible que si vous demandez explicitement un chiffrement côté serveur. Vous pouvez demander le chiffrement de l’objet cible en spécifiant la valeur `server_side_encryption` dans l’argument de hachage d’options, comme illustré dans l’exemple de code Ruby suivant. L’exemple de code montre comment copier un objet et chiffrer la copie avec SSE-S3. 

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyEncryptWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key, encryption)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"
  target_encryption = "AES256"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key, target_encryption)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\
       "encrypted the target with #{target_object.server_side_encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## À l'aide du AWS CLI
<a name="sse-s3-aws-cli"></a>

Pour spécifier SSE-S3 lorsque vous chargez un objet à l'aide du AWS CLI, utilisez l'exemple suivant.

```
aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256  --body file path
```

Pour plus d’informations, consultez [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) dans la *Référence de la AWS CLI *. [Pour spécifier SSE-S3 lorsque vous copiez un objet à l'aide du AWS CLI, voir copy-object.](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html)

## En utilisant CloudFormation
<a name="ss3-s3-cfn"></a>

Pour des exemples de configuration du chiffrement à l'aide [d'un exemple CloudFormation, reportez-vous aux sections Création d'un compartiment avec chiffrement par défaut](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_with_default_encryption) [et Création d'un compartiment en utilisant le chiffrement AWS KMS côté serveur avec une clé de compartiment S3](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_using_AWS_KMS_server-side_encryption_with_an_S3_Bucket_Key) dans la `AWS::S3::Bucket ServerSideEncryptionRule` rubrique du Guide de l'*AWS CloudFormation utilisateur*. 

# Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)
<a name="UsingKMSEncryption"></a>

**Important**  
Amazon S3 applique désormais le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) comme niveau de base du chiffrement pour chaque compartiment d’Amazon S3. À partir du 5 janvier 2023, tous les nouveaux chargements d’objets sur Amazon S3 sont automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. L'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour le téléchargement de nouveaux objets est disponible dans CloudTrail les journaux, S3 Inventory, S3 Storage Lens, la console Amazon S3 et sous forme d'en-tête de réponse d'API Amazon S3 supplémentaire dans le AWS CLI et AWS SDKs. Pour plus d'informations, consultez la [FAQ sur le chiffrement par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Le chiffrement côté serveur est le chiffrement des données à leur destination par l’application ou le service qui les reçoit.

Amazon S3 active automatiquement le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) pour les nouveaux chargements d’objets.

Sauf indication contraire, les compartiments utilisent SSE-S3 par défaut pour chiffrer les objets. Toutefois, vous pouvez choisir de configurer les buckets pour qu'ils utilisent plutôt le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS). Pour de plus amples informations, veuillez consulter [Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS)](specifying-kms-encryption.md).

AWS KMS est un service qui combine du matériel et des logiciels sécurisés et hautement disponibles pour fournir un système de gestion des clés adapté au cloud. Amazon S3 utilise le chiffrement côté serveur avec AWS KMS (SSE-KMS) pour chiffrer les données de vos objets S3. En outre, lorsque SSE-KMS est demandé pour l’objet, la somme de contrôle S3, qui fait partie des métadonnées de l’objet, est stockée sous forme chiffrée. Pour plus d’informations sur le total de contrôle, consultez [Vérification de l’intégrité des objets dans Amazon S3](checking-object-integrity.md).

Si vous utilisez des clés KMS, vous pouvez les utiliser AWS KMS via l'API [AWS Management Console](https://console.aws.amazon.com/kms)ou l'[AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) pour effectuer les opérations suivantes : 
+ Créer, visualiser, modifier, surveiller, activer ou désactiver, faire tourner et planifier la suppression des clés KMS de manière centralisée.
+ Définir les politiques qui contrôlent comment et par qui les clés KMS peuvent être utilisées.
+ Auditer la bonne utilisation des clés KMS. L’audit est pris en charge par l’[API AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/), mais pas par la [console AWS KMS](https://console.aws.amazon.com/kms).



Les contrôles de sécurité intégrés AWS KMS peuvent vous aider à respecter les exigences de conformité liées au chiffrement. Vous pouvez utiliser ces clés KMS pour protéger les données dans les compartiments Simple Storage Service (Amazon S3). Lorsque vous utilisez le chiffrement SSE-KMS avec un compartiment S3, celui-ci AWS KMS keys doit se trouver dans la même région que le compartiment.

L'utilisation entraîne des frais supplémentaires AWS KMS keys. Pour plus d’informations, consultez [Concepts AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) dans le *Guide du développeur AWS Key Management Service * et [Tarification AWS KMS](https://aws.amazon.com/kms/pricing).

Pour savoir comment autoriser les utilisateurs IAM à accéder aux compartiments chiffrés par KMS, consultez la section Mon compartiment [Amazon S3 est chiffré par défaut à l'aide d'une clé personnalisée. AWS KMS Comment puis-je autoriser les utilisateurs à effectuer des téléchargements depuis et vers le bucket ?](https://repost.aws/knowledge-center/s3-bucket-access-default-encryption) dans le AWS re:Post Knowledge Center.

**Permissions**  
Pour transmettre une demande `PutObject` de chiffrement d’un objet avec une clé AWS KMS à Amazon S3, vous devez disposer de l’autorisation `kms:GenerateDataKey` sur la clé. Pour télécharger un objet chiffré avec un AWS KMS key, vous devez `kms:Decrypt` disposer d'autorisations pour la clé. Pour [effectuer un téléchargement partitionné](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions) afin de chiffrer un objet avec un AWS KMS key, vous devez disposer des `kms:Decrypt` autorisations `kms:GenerateDataKey` et pour la clé.

**Important**  
Examinez attentivement les autorisations accordées dans les politiques des clés KMS. Limitez toujours les autorisations de politique clé KMS gérées par le client uniquement aux principaux et AWS services IAM qui doivent accéder à l'action clé appropriée. AWS KMS Pour plus d'informations, consultez la section [Politiques clés dans AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

**Topics**
+ [AWS KMS keys](#aws-managed-customer-managed-keys)
+ [Clés de compartiment Amazon S3](#sse-kms-bucket-keys)
+ [Exigence du chiffrement côté serveur](#require-sse-kms)
+ [Contexte de chiffrement](#encryption-context)
+ [Envoi de demandes pour des objets AWS KMS chiffrés](#aws-signature-version-4-sse-kms)
+ [Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
+ [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md)

## AWS KMS keys
<a name="aws-managed-customer-managed-keys"></a>

Lorsque vous utilisez le chiffrement côté serveur avec AWS KMS (SSE-KMS), vous pouvez utiliser la [cléAWS gérée par défaut ou vous pouvez spécifier une clé](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) [gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) que vous avez déjà créée. AWS KMS prend en charge le *chiffrement des enveloppes*. S3 utilise les AWS KMS fonctionnalités de *chiffrement des enveloppes* pour mieux protéger vos données. Le chiffrement d’enveloppe est la pratique consistant à chiffrer vos données en texte brut à l’aide d’une clé de données, puis à chiffrer cette clé de données avec une clé KMS. Pour plus d’informations sur le chiffrement d’enveloppe, consultez [Chiffrement d’enveloppe](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#enveloping) dans le *Guide du développeur AWS Key Management Service *.

Si vous ne spécifiez pas de clé gérée par le client, Amazon S3 Clé gérée par AWS en crée automatiquement une lorsque vous Compte AWS ajoutez un objet chiffré avec SSE-KMS à un bucket pour la première fois. Par défaut, Amazon S3 utilise cette clé KMS pour SSE-KMS. 

**Note**  
Les objets chiffrés en utilisant SSE-KMS avec des [Clés gérées par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) ne peuvent pas être partagés entre comptes. Si vous devez partager des données SSE-KMS entre comptes, vous devez utiliser une clé [gérée par le client provenant](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) de. AWS KMS

Si vous souhaitez utiliser une clé gérée par le client pour SSE-KMS, créez une clé gérée par le client à chiffrement symétrique avant de configurer SSE-KMS. Ensuite, lorsque vous configurez SSE-KMS pour votre compartiment, vous pouvez spécifier la clé gérée par le client existante. Pour plus d’informations sur la clé de chiffrement symétrique, 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 *.

En créant une clé gérée par le client, vous disposez de plus de flexibilité et d’un contrôle accru. Par exemple, vous pouvez créer, faire tourner et désactiver les clés gérés par le client. Vous pouvez également définir des contrôles d’accès et auditer les clés gérées par le client que vous utilisez pour protéger vos données. Pour plus d'informations sur les clés gérées et AWS gérées par le [client, consultez la section Clés et AWS clés](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) client dans le *guide du AWS Key Management Service développeur*.

**Note**  
Lorsque vous utilisez le chiffrement côté serveur avec une clé gérée par le client qui est stockée dans un magasin de clés externe, contrairement aux clés KMS standard, vous êtes responsable de la disponibilité et de la durabilité de votre matériel de clé. Pour plus d’informations sur les magasins de clés externes et sur la manière dont ils modifient le modèle de responsabilité partagée, consultez [Magasins de clés externes](https://docs.aws.amazon.com//kms/latest/developerguide/keystore-external.html) dans le *Guide du développeur AWS Key Management Service *.

### Utilisation du chiffrement SSE-KMS pour les opérations intercomptes
<a name="sse-kms-cross-account-operations"></a>

Tenez compte des éléments suivants lors de l’utilisation du chiffrement pour les opérations inter-comptes :
+ Si aucun nom de ressource AWS KMS key Amazon (ARN) ou alias n'est fourni au moment de la demande ou via la configuration de chiffrement par défaut du compartiment, le Clé gérée par AWS (`aws/s3`) du compte de téléchargement est utilisé pour le chiffrement et requis pour le déchiffrement.
+ Clé gérée par AWS (`aws/s3`) peut être utilisée comme clé KMS pour les opérations entre comptes lorsque les principaux de téléchargement et d'accès Gestion des identités et des accès AWS (IAM) proviennent de la même source. Compte AWS
+ Utilisez une clé gérée par le client si vous souhaitez accorder un accès intercompte à vos objets S3. Vous pouvez configurer la politique d’une clé gérée par le client afin d’autoriser l’accès à partir d’un autre compte.
+ Si vous spécifiez une clé KMS gérée par le client, nous recommandons d’utiliser un ARN de clé KMS complet. Si vous utilisez plutôt un alias de clé KMS, AWS KMS la clé est résolue dans le compte du demandeur. En raison de ce comportement, les données peuvent être chiffrées avec une clé KMS qui appartient au demandeur, et non au propriétaire du compartiment.
+ Vous devez spécifier une clé pour laquelle vous (le demandeur) avez obtenu l’autorisation de `Encrypt`. Pour en savoir plus, consultez [Permettre aux utilisateurs de clés d'utiliser une clé KMS pour les opérations de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) dans le *Guide de l'utilisateur AWS Key Management Service *.

Pour plus d'informations sur les circonstances dans lesquelles utiliser des clés gérées par le client et des clés KMS AWS gérées, consultez [Dois-je utiliser une clé gérée par le client Clé gérée par AWS ou une clé gérée par le client pour chiffrer mes objets dans Amazon S3 ?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

### Flux de travail de chiffrement SSE-KMS
<a name="sse-kms-encryption-workflow"></a>

Si vous choisissez de chiffrer vos données à l'aide d'une clé gérée par le client Clé gérée par AWS ou d'une clé gérée par le client, AWS KMS et qu'Amazon S3 exécute les actions de chiffrement d'enveloppe suivantes :

1. Simple Storage Service (Amazon S3) demande une [clé de données](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#data-keys) en texte brut et une copie de la clé chiffrée sous la clé KMS spécifiée.

1. AWS KMS génère une clé de données, la chiffre sous la clé KMS et envoie à la fois la clé de données en texte brut et la clé de données chiffrée à Amazon S3.

1. Amazon S3 chiffre les données à l’aide de la clé de données et supprime la clé en texte brut de la mémoire dès que possible après utilisation.

1. Simple Storage Service (Amazon S3) stocke la clé de données chiffrée sous forme de métadonnées avec les données chiffrées.

Lorsque vous demandez que vos données soient déchiffrées, Amazon S3 AWS KMS effectue les actions suivantes :

1. Amazon S3 envoie la clé de données chiffrée à AWS KMS dans une `Decrypt` demande.

1. AWS KMS déchiffre la clé de données chiffrée à l'aide de la même clé KMS et renvoie la clé de données en texte brut à Amazon S3.

1. Amazon S3 déchiffre les données chiffrées, en utilisant la clé des données en texte brut, et supprime la clé des données en texte brut de la mémoire dès que possible.

**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 *.

### Audit du chiffrement SSE-KMS
<a name="sse-kms-encryption-audit"></a>

Pour identifier les requêtes qui spécifient SSE-KMS, vous pouvez utiliser les métriques **Toutes les demandes SSE-KMS** et **% de toutes les demandes SSE-KMS** dans les métriques Amazon S3 Storage Lens. S3 Storage Lens est une fonction d’analyse du stockage dans le cloud que vous pouvez utiliser pour obtenir une visibilité à l’échelle de l’organisation sur l’utilisation et l’activité du stockage d’objets. Vous pouvez également utiliser le nombre de compartiments avec le chiffrement SSE-KMS activé et le pourcentage de compartiments avec le chiffrement SSE-KMS activé pour déterminer le nombre de compartiments (SSE-KMS) pour le [chiffrement des compartiments par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Pour plus d’informations, consultez [Évaluer l’activité et l’utilisation de votre stockage avec S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html). Pour obtenir la liste complète des métriques, consultez le [Glossaire des métriques S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html).

Pour vérifier l'utilisation de vos AWS KMS clés pour vos données cryptées SSE-KMS, vous pouvez utiliser AWS CloudTrail des journaux. Vous pouvez obtenir un aperçu de vos [opérations cryptographiques](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), telles que [https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html)et [https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html). CloudTrail prend en charge de nombreuses [valeurs d'attribut](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html) pour filtrer votre recherche, notamment le nom de l'événement, le nom d'utilisateur et la source de l'événement. 

## Clés de compartiment Amazon S3
<a name="sse-kms-bucket-keys"></a>

Lorsque vous configurez le chiffrement côté serveur à l'aide de AWS KMS (SSE-KMS), vous pouvez configurer vos compartiments pour utiliser les clés de compartiment S3 pour SSE-KMS. L'utilisation d'une clé au niveau du compartiment pour SSE-KMS peut réduire les coûts de vos AWS KMS demandes jusqu'à 99 % en diminuant le trafic de demandes d'Amazon S3 vers. AWS KMS

Lorsque vous configurez un compartiment de sorte qu’il utilise des clés de compartiment S3 pour SSE-KMS sur de nouveaux objets, AWS KMS génère une clé de niveau compartiment qui est utilisée pour créer des [clés de données](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) uniques pour les objets dans le compartiment. Cette clé de compartiment S3 est utilisée pendant une période limitée dans le temps dans Amazon S3, ce qui réduit encore la nécessité pour Amazon S3 de faire des demandes AWS KMS pour effectuer des opérations de chiffrement. Pour plus d’informations sur l’utilisation des clés de compartiment S3, consultez [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

## Exigence du chiffrement côté serveur
<a name="require-sse-kms"></a>

Pour exiger le chiffrement côté serveur de tous les objets d’un compartiment Simple Storage Service (Amazon S3) particulier, vous pouvez utiliser une stratégie de compartiment. Par exemple, la stratégie de compartiment suivante n’autorise pas le chargement d’objet (`s3:PutObject`) si la demande n’inclut pas l’en-tête `x-amz-server-side-encryption-aws-kms-key-id` demandant le chiffrement côté serveur avec SSE-KMS.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"PutObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*",
         "Condition":{
            "Null":{
               "s3:x-amz-server-side-encryption-aws-kms-key-id":"true"
            }
         }
      }
   ]
}
```

------

Pour exiger qu'une donnée AWS KMS key soit utilisée pour chiffrer les objets d'un compartiment, vous pouvez utiliser la clé de `s3:x-amz-server-side-encryption-aws-kms-key-id` condition. Pour spécifier la clé KMS, vous devez utiliser une clé Amazon Resource Name (ARN) au `arn:aws:kms:region:acct-id:key/key-id` format suivant. Gestion des identités et des accès AWS ne valide pas si la chaîne pour `s3:x-amz-server-side-encryption-aws-kms-key-id` existe. 

**Note**  
Lorsque vous chargez un objet, vous pouvez spécifier la clé KMS à l’aide de l’en-tête `x-amz-server-side-encryption-aws-kms-key-id` ou vous fier à la [configuration de chiffrement de compartiment par défaut](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Si votre PutObject demande le précise `aws:kms` dans l'`x-amz-server-side-encryption`en-tête, mais ne le `x-amz-server-side-encryption-aws-kms-key-id` précise pas, Amazon S3 part du principe que vous souhaitez utiliser le Clé gérée par AWS. Quoi qu'il en soit, l'ID de AWS KMS clé utilisé par Amazon S3 pour le chiffrement des objets doit correspondre à l'ID de AWS KMS clé indiqué dans la politique, sinon Amazon S3 refuse la demande.

Pour obtenir la liste complète des clés de condition spécifiques à Amazon S3, consultez [Clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) dans la *Référence de l’autorisation de service*.

## Contexte de chiffrement
<a name="encryption-context"></a>

Un* contexte de chiffrement* est un ensemble de paires valeur-clé qui contient des informations contextuelles supplémentaires sur les données. Le contexte de chiffrement n’est pas chiffré. Lorsqu’un contexte de chiffrement est spécifié pour une opération de chiffrement, Amazon S3 doit spécifier le même contexte de chiffrement pour l’opération de déchiffrement. Dans le cas contraire, le déchiffrement échoue. AWS KMS utilise le contexte de chiffrement en tant que [données authentifiées supplémentaires](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#digital-sigs) (AAD) pour prendre en charge le chiffrement [authentifié](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations#digital-sigs). Pour plus d’informations sur le contexte de chiffrement, consultez [Contexte de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) dans le *Guide du développeur AWS Key Management Service *. 

Par défaut, Amazon S3 utilise l’Amazon Resource Name (ARN) de l’objet ou du compartiment comme paire de contexte de chiffrement : 
+ **Si vous utilisez SSE-KMS sans activer une clé de compartiment S3**, l’ARN de l’objet est utilisé comme contexte de chiffrement.

  ```
  arn:aws:s3:::object_ARN
  ```
+ **Si vous utilisez SSE-KMS avec une clé de compartiment S3 activée**, l’ARN du compartiment est utilisé comme contexte de chiffrement. Pour plus d’informations sur les clés de compartiment S3, consultez [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

  ```
  arn:aws:s3:::bucket_ARN
  ```

Vous pouvez éventuellement fournir une paire de contextes de chiffrement supplémentaire en utilisant l'`x-amz-server-side-encryption-context`en-tête dans une PutObject requête [s3 :](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_RequestSyntax). 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. Lorsqu’il traite votre demande `PUT`, Amazon S3 ajoute le contexte de chiffrement par défaut d’`aws:s3:arn` à celui que vous fournissez. 

Vous pouvez utiliser le contexte de chiffrement pour identifier et classer vos opérations cryptographiques par catégorie. Vous pouvez également utiliser la valeur ARN du contexte de chiffrement par défaut pour suivre les demandes pertinentes en AWS CloudTrail visualisant quel ARN Amazon S3 a été utilisé avec quelle clé de chiffrement.

Dans le `requestParameters` champ d'un fichier CloudTrail journal, le contexte de chiffrement est similaire au suivant. 

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1/file_name"
}
```

Lorsque vous utilisez SSE-KMS avec la fonction de clés de compartiment S3 facultative, la valeur du contexte de chiffrement est l’ARN du compartiment.

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
}
```

## Envoi de demandes pour des objets AWS KMS chiffrés
<a name="aws-signature-version-4-sse-kms"></a>

**Important**  
Toutes `GET` les `PUT` demandes d'objets AWS KMS chiffrés doivent être effectuées à l'aide du protocole SSL (Secure Sockets Layer) ou du protocole TLS (Transport Layer Security). Les demandes doivent également être signées à l'aide d'informations d'identification valides, telles que AWS Signature Version 4 (ou AWS Signature Version 2).

AWS Signature Version 4 est le processus d'ajout d'informations d'authentification aux AWS demandes envoyées par HTTP. Pour des raisons de sécurité, la plupart des demandes AWS doivent être signées avec une clé d'accès, qui consiste en un identifiant de clé d'accès et une clé d'accès secrète. Ces deux clés sont généralement appelées informations d’identification de sécurité. Pour plus d’informations, consultez [Authentification des demandes (AWS Signature Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) et [Processus de signature Signature version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

**Important**  
Si votre objet utilise SSE-KMS, n'envoyez pas d'en-têtes de chiffrement pour les requêtes `GET` et `HEAD`. Sinon, vous obtiendrez une erreur HTTP 400 Bad Request (HTTP 400 Requête erronée).

**Topics**
+ [AWS KMS keys](#aws-managed-customer-managed-keys)
+ [Clés de compartiment Amazon S3](#sse-kms-bucket-keys)
+ [Exigence du chiffrement côté serveur](#require-sse-kms)
+ [Contexte de chiffrement](#encryption-context)
+ [Envoi de demandes pour des objets AWS KMS chiffrés](#aws-signature-version-4-sse-kms)
+ [Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
+ [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md)

# Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS)
<a name="specifying-kms-encryption"></a>

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. Pour utiliser un autre type de chiffrement, vous pouvez soit spécifier le type de chiffrement côté serveur à utiliser dans vos demandes S3 `PUT`, soit actualiser la configuration du chiffrement par défaut dans le compartiment de destination. 

Si vous souhaitez spécifier un type de chiffrement différent dans vos `PUT` demandes, vous pouvez utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), le chiffrement double couche côté serveur avec des clés (DSSE-KMS) ou le chiffrement côté serveur avec des AWS KMS clés fournies par le client (SSE-C). Si vous souhaitez définir une autre configuration de chiffrement par défaut dans le compartiment de destination, vous pouvez utiliser SSE-KMS ou DSSE-KMS.

Pour plus d’informations sur la modification de la configuration du chiffrement par défaut de vos compartiments à usage général, consultez [Configuration du chiffrement par défaut](default-bucket-encryption.md). 

Lorsque vous remplacez la configuration du chiffrement par défaut de votre compartiment par SSE-KMS, le type de chiffrement des objets Amazon S3 existants du compartiment n’est pas modifié. Pour modifier le type de chiffrement de vos objets préexistants après avoir remplacé la configuration de chiffrement par défaut par SSE-KMS, vous pouvez utiliser Amazon S3 Batch Operations. Vous fournissez une liste d’objets à S3 Batch Operations, qui appelle l’opération d’API correspondante. Vous pouvez utiliser l’action [Copie d’objets](batch-ops-copy-object.md) pour copier des objets existants et les réécrire dans le même compartiment en tant qu’objets chiffrés par SSE-KMS. Une tâche d’opérations par lots peut effectuer l’opération spécifiée sur des milliards d’objets. Pour plus d’informations, consultez [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md) et la publication [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) dans le *blog sur le stockage AWS *. 

Vous pouvez spécifier SSE-KMS à l'aide de la console Amazon S3, des opérations de l'API REST et du AWS Command Line Interface ()AWS CLI. AWS SDKs 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 cette 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-kms"></a>

Cette rubrique explique comment définir ou modifier le type de chiffrement d'un objet afin d'utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-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**.
**Important**  
Si vous utilisez l’option SSE-KMS pour votre configuration de chiffrement par défaut, vous êtes soumis aux quotas RPS (demandes par seconde) de AWS KMS. Pour plus d’informations sur les quotas de AWS KMS et sur la procédure à suivre pour demander une augmentation des quotas, consultez [Quotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) dans le *Guide du développeur AWS Key Management Service *. 

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 côté serveur avec AWS Key Management Service clés (SSE-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 ne pouvez utiliser que les clés KMS disponibles dans le même compartiment Région AWS que le bucket. 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é KMS, puis 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 la section [Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) (Identification des clés KMS symétriques et asymétriques) dans le *Guide du développeur AWS Key Management Service *.

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="KMSUsingRESTAPI"></a>

Lorsque vous créez un objet, à savoir, lorsque vous chargez un nouvel objet ou copiez un objet existant, vous pouvez spécifier l’utilisation du chiffrement côté serveur avec des AWS KMS keys (SSE-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`. Amazon S3 confirme que l’objet est stocké grâce à SSE-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`, vous pouvez également utiliser les en-têtes de demandes suivants :
+ `x-amz-server-side-encryption-aws-kms-key-id`
+ `x-amz-server-side-encryption-context`
+ `x-amz-server-side-encryption-bucket-key-enabled`

**Topics**
+ [Opérations d'API REST Amazon S3 prenant en charge SSE-KMS](#sse-request-headers-kms)
+ [Contexte de chiffrement (`x-amz-server-side-encryption-context`)](#s3-kms-encryption-context)
+ [AWS KMS ID de clé (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-kms-key-id-api)
+ [Clés de compartiment S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)](#bucket-key-api)

### Opérations d'API REST Amazon S3 prenant en charge SSE-KMS
<a name="sse-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 les en-têtes SSE-KMS avec l’opération `CopyObject`, ils sont appliqués 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.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](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 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.
+ [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)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](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 les demandes `GET` et `PUT` pour un objet protégé par AWS KMS échouent si vous ne les faites pas en utilisant le protocole SSL (Secure Sockets Layer), 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`)
<a name="s3-kms-encryption-context"></a>

Si vous spécifiez `x-amz-server-side-encryption:aws:kms`, 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 ou du compartiment comme paire de contexte de chiffrement. Si vous utilisez SSE-KMS sans activer une clé de compartiment S3, vous utilisez l’ARN de l’objet comme contexte de chiffrement, par exemple, `arn:aws:s3:::object_ARN`. Toutefois, si vous utilisez SSE-KMS et activez une clé de compartiment S3, vous utilisez l’ARN du compartiment pour votre contexte de chiffrement, par exemple, `arn:aws:s3:::bucket_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 ne comprenne 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-kms-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’en-tête `x-amz-server-side-encryption:aws:kms` mais que vous ne fournissez pas l’en-tête `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 utilisera la 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 *.

### Clés de compartiment S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
<a name="bucket-key-api"></a>

Vous pouvez utiliser l’en-tête de demande `x-amz-server-side-encryption-aws-bucket-key-enabled` pour activer ou désactiver une clé de compartiment S3 au niveau de l’objet. Les clés de compartiment S3 réduisent les coûts de vos AWS KMS demandes en diminuant le trafic de demandes d'Amazon S3 vers AWS KMS. Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

Si vous spécifiez l’en-tête `x-amz-server-side-encryption:aws:kms`, mais que vous ne fournissez pas l’en-tête `x-amz-server-side-encryption-aws-bucket-key-enabled`, votre objet utilise les paramètres de clé de compartiment S3 du compartiment de destination pour chiffrer votre objet. Pour de plus amples informations, veuillez consulter [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md).

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

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, 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](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`, mais que vous ne fournissez pas d'identifiant de AWS KMS clé, Amazon S3 utilisera une clé AWS gérée.

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

Vous pouvez également activer ou désactiver les clés de compartiment Amazon S3 sur vos opérations PUT ou COPY en ajoutant `--bucket-key-enabled` ou `--no-bucket-key-enabled`. Les clés de compartiment Amazon S3 peuvent réduire les coûts de vos AWS KMS demandes en diminuant le trafic de demandes d'Amazon S3 vers AWS KMS. Pour plus d’informations, consultez [Reducing the cost of SSE-KMS with Amazon S3 Bucket Keys](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-key.html) (Réduire le coût de SSE-KMS à l’aide des clés de compartiment Amazon S3).

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

Vous pouvez chiffrer un objet non chiffré pour utiliser SSE-KMS en recopiant l’objet en place.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --body filepath --bucket amzn-s3-demo-bucket --key example-object-key --sse aws:kms --sse-kms-key-id example-key-id --body filepath
```

## En utilisant le AWS SDKs
<a name="kms-using-sdks"></a>

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](https://aws.amazon.com/code) sur le AWS Developer Center.

**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 *.

### Opération `CopyObject`
<a name="kms-copy-operation"></a>

Lors de la copie d’objets, vous ajoutez les mêmes propriétés de demande (`ServerSideEncryptionMethod` et `ServerSideEncryptionKeyManagementServiceKeyId`) pour demander à Amazon S3 d’utiliser une AWS KMS key. Pour plus d’informations sur la copie d’objets, consultez [Copie, déplacement et changement de nom des objets](copy-object.md). 

### Opération `PUT`
<a name="kms-put-operation"></a>

------
#### [ Java ]

Lorsque vous chargez un objet à l'aide du AWS SDK pour Java, vous pouvez demander à Amazon S3 d'utiliser un AWS KMS key en ajoutant la `SSEAwsKeyManagementParams` propriété comme indiqué dans la demande suivante :

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());
```

Dans ce cas, Amazon S3 utilise le Clé gérée par AWS (`aws/s3`). Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md). Si vous le souhaitez, vous pouvez créer une clé KMS symétrique de chiffrement et la spécifier dans la demande, comme l’illustre l’exemple suivant :

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));
```

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

Pour obtenir des exemples de code utilisables pour charger un objet, consultez les rubriques suivantes. Pour utiliser ces exemples, vous devez mettre à jour les exemples de code et fournir des informations de chiffrement comme illustré dans le fragment de code précédent.
+ Pour charger un objet en une seule opération, consultez [Chargement d’objets](upload-objects.md).
+ Pour les chargements partitionnés qui utilisent les opérations d’API de chargement partitionné de haut niveau ou de bas niveau, consultez [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md). 

------
#### [ .NET ]

Lorsque vous chargez un objet à l'aide du AWS SDK pour .NET, vous pouvez demander à Amazon S3 d'utiliser un AWS KMS key en ajoutant la `ServerSideEncryptionMethod` propriété comme indiqué dans la demande suivante :

```
PutObjectRequest putRequest = new PutObjectRequest
 {
     BucketName = amzn-s3-demo-bucket,
     Key = keyName,
     // other properties
     ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
 };
```

Dans ce cas, Amazon S3 utilise le Clé gérée par AWS. Pour de plus amples informations, veuillez consulter [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md). Si vous le souhaitez, vous pouvez créer votre propre clé symétrique de chiffrement gérée par le client et la spécifier dans la demande, comme l’illustre l’exemple suivant :

```
PutObjectRequest putRequest1 = new PutObjectRequest
{
  BucketName = amzn-s3-demo-bucket,
  Key = keyName,
  // other properties
  ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
  ServerSideEncryptionKeyManagementServiceKeyId = keyId
};
```

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

Pour obtenir des exemples de code utilisables pour charger un objet, consultez les rubriques suivantes. Pour utiliser ces exemples, vous devez mettre à jour les exemples de code et fournir des informations de chiffrement comme illustré dans le fragment de code précédent.
+ Pour charger un objet en une seule opération, consultez [Chargement d’objets](upload-objects.md).
+ Pour les chargements partitionnés qui utilisent les opérations d’API de chargement partitionné de haut niveau ou de bas niveau, consultez [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md). 

------

### Présigné URLs
<a name="kms-presigned-urls"></a>

------
#### [ Java ]

Lors de la création d’une URL pré-signée pour un objet chiffré à l’aide d’une AWS KMS key, vous devez indiquer explicitement Signature Version 4, comme l’illustre l’exemple suivant :

```
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
        new ProfileCredentialsProvider(), clientConfiguration);
...
```

Pour obtenir un exemple de code, consultez [Partage d'objets avec présigné URLs](ShareObjectPreSignedURL.md). 

------
#### [ .NET ]

Lors de la création d’une URL pré-signée pour un objet chiffré à l’aide d’une AWS KMS key, vous devez indiquer explicitement Signature Version 4, comme l’illustre l’exemple suivant :

```
AWSConfigs.S3Config.UseSignatureVersion4 = true;
```

Pour obtenir un exemple de code, consultez [Partage d'objets avec présigné URLs](ShareObjectPreSignedURL.md).

------

# Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3
<a name="bucket-key"></a>

Les clés de compartiment Amazon S3 réduisent le coût du chiffrement côté serveur Amazon S3 avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS). L'utilisation d'une clé au niveau du compartiment pour SSE-KMS peut réduire les coûts des AWS KMS demandes jusqu'à 99 % en diminuant le trafic de demandes d'Amazon S3 vers. AWS KMS En quelques clics dans la AWS Management Console et sans modifier vos applications clients, vous pouvez configurer votre compartiment de sorte qu’il utilise une clé de compartiment S3 pour le chiffrement SSE-KMS pour les nouveaux objets.

**Note**  
Les clés de compartiment S3 ne sont pas prises en charge pour le chiffrement double couche côté serveur avec des clés AWS Key Management Service (AWS KMS) (DSSE-KMS).

## Clés de compartiment S3 pour SSE-KMS
<a name="bucket-key-overview"></a>

Les charges de travail qui accèdent à des millions ou des milliards d'objets chiffrés avec SSE-KMS peuvent générer d'importants volumes de demandes à. AWS KMS Lorsque vous utilisez SSE-KMS pour protéger vos données sans clé de compartiment S3, Amazon S3 utilise une [clé de AWS KMS données](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) individuelle pour chaque objet. Dans ce cas, Amazon S3 effectue un appel à AWS KMS chaque fois qu'une demande est faite contre un objet chiffré par KMS. Pour plus d’informations sur le fonctionnement de SSE-KMS, consultez [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md). 

Lorsque vous configurez votre compartiment pour utiliser une clé de compartiment S3 pour SSE-KMS, vous AWS générez une clé de type bucket de courte durée à partir de AWS KMS, puis la conservez temporairement dans S3. Cette clé de niveau compartiment créera des clés de données pour les nouveaux objets au cours de son cycle de vie. Les clés de compartiment S3 sont utilisées pendant une période limitée dans Amazon S3, ce qui réduit la nécessité pour S3 de faire des demandes AWS KMS pour effectuer des opérations de chiffrement. Cela réduit le trafic de S3 à S3 AWS KMS, ce qui vous permet d'accéder à des objets AWS KMS chiffrés dans Amazon S3 à une fraction du coût précédent.

Les clés uniques au niveau du compartiment sont récupérées au moins une fois par demandeur afin de garantir que l'accès du demandeur à la clé est capturé lors d'un événement. AWS KMS CloudTrail Amazon S3 traite les appelants comme des demandeurs différents lorsqu'ils utilisent des rôles ou des comptes différents, ou lorsqu'ils utilisent le même rôle avec des politiques de cadrage différentes. AWS KMS les économies de demandes reflètent le nombre de demandeurs, les modèles de demandes et l'âge relatif des objets demandés. Par exemple, un nombre réduit de demandeurs, sollicitant plusieurs objets dans une fenêtre de temps limitée, et chiffrés avec la même clé au niveau des compartiments, permettra de réaliser des économies plus importantes.

**Note**  
L'utilisation de clés de compartiment S3 vous permet de réduire les coûts liés aux AWS KMS demandes en réduisant le nombre de demandes à AWS KMS for `Encrypt` et les `Decrypt` opérations grâce à l'utilisation d'une clé au niveau du compartiment. `GenerateDataKey` De par leur conception, les demandes ultérieures qui tirent parti de cette clé au niveau du compartiment n'entraînent pas de demandes d' AWS KMS API et ne valident pas l'accès par rapport à la politique de AWS KMS clé.

Lorsque vous configurez une clé de compartiment S3, les objets qui se trouvent déjà dans le compartiment n’utilisent pas la clé de compartiment S3. Pour configurer une clé de compartiment S3 pour des objets existants, vous pouvez utiliser une opération `CopyObject`. Pour de plus amples informations, veuillez consulter [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md).

Amazon S3 partage une clé de compartiment S3 uniquement pour les objets chiffrés avec la même AWS KMS key. Les clés de compartiment S3 sont compatibles avec les clés KMS créées par AWS KMS, le [matériel clé importé](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) et le [matériel clé soutenu par des magasins de clés personnalisés](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).

![\[Schéma illustrant la AWS KMS génération d'une clé de compartiment qui crée des clés de données pour les objets d'un compartiment.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/S3-Bucket-Keys.png)


## Configuration de clés de compartiment S3
<a name="configure-bucket-key"></a>

Vous pouvez configurer votre compartiment pour utiliser une clé de compartiment S3 pour SSE-KMS sur de nouveaux objets via la console Amazon S3 ou l' AWS SDKsAPI AWS CLI REST. Lorsque l’option « S3 Bucket Keys » (Clés du compartiment S3) est activée sur votre compartiment, les objets chargés avec une autre clé SSE-KMS spécifiée utiliseront leur propres clés du compartiment S3. Quel que soit votre paramètre de clé de compartiment S3, vous pouvez inclure l’en-tête `x-amz-server-side-encryption-bucket-key-enabled` avec une valeur `true` ou `false` dans votre requête, afin de remplacer le paramètre de compartiment.

Avant de configurer votre compartiment de sorte qu’il utilise une clé de compartiment S3, consultez [Modifications à prendre en compte avant d’activer une clé de compartiment S3](#bucket-key-changes). 

### Configuration d’une clé de compartiment S3 à l’aide de la console Amazon S3
<a name="configure-bucket-key-console"></a>

Lorsque vous créez un nouveau compartiment, vous pouvez configurer votre compartiment de sorte qu’il utilise une clé de compartiment S3 pour SSE-KMS sur de nouveaux objets. Vous pouvez également configurer un compartiment existant de sorte qu’il utilise une clé de compartiment S3 pour SSE-KMS sur de nouveaux objets en mettant à jour vos propriétés de compartiment. 

Pour de plus amples informations, veuillez consulter [Configuration de votre compartiment de sorte qu’il utilise une clé de compartiment S3 avec SSE-KMS pour de nouveaux objets](configuring-bucket-key.md).

### Support de l'API REST et du AWS SDK pour les clés de compartiment S3 AWS CLI
<a name="configure-bucket-key-programmatic"></a>

Vous pouvez utiliser l'API REST ou le AWS SDK pour configurer votre compartiment afin qu'il utilise une clé de compartiment S3 pour SSE-KMS sur de nouveaux objets. AWS CLI Vous pouvez également activer une clé de compartiment S3 au niveau de l’objet.

Pour de plus amples informations, consultez les ressources suivantes : 
+ [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md)
+ [Configuration de votre compartiment de sorte qu’il utilise une clé de compartiment S3 avec SSE-KMS pour de nouveaux objets](configuring-bucket-key.md)

Les opérations d’API suivantes prennent en charge les clés de compartiment S3 pour SSE-KMS :
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  + `ServerSideEncryptionRule` accepte le `BucketKeyEnabled` paramètre permettant d’activer et de désactiver une clé de compartiment S3.
+ [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  + `ServerSideEncryptionRule` renvoie les paramètres de `BucketKeyEnabled`.
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [CopyObject[CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), et [objet POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
  + L’en-tête de demande `x-amz-server-side-encryption-bucket-key-enabled` active ou désactive une clé de compartiment S3 au niveau de l’objet.
+ [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html), [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) et [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  + L’en-tête de réponse `x-amz-server-side-encryption-bucket-key-enabled` indique si une clé de compartiment S3 est activée ou désactivée pour un objet.

### Travailler avec CloudFormation
<a name="configure-bucket-key-cfn"></a>

Dans CloudFormation, la `AWS::S3::Bucket` ressource inclut une propriété de chiffrement appelée `BucketKeyEnabled` que vous pouvez utiliser pour activer ou désactiver une clé de compartiment S3. 

Pour de plus amples informations, veuillez consulter [En utilisant CloudFormation](configuring-bucket-key.md#enable-bucket-key-cloudformation).

## Modifications à prendre en compte avant d’activer une clé de compartiment S3
<a name="bucket-key-changes"></a>

Avant d’activer une clé de compartiment S3, notez les modifications suivantes :

### IAM ou politiques AWS KMS clés
<a name="bucket-key-policies"></a>

Si vos politiques Gestion des identités et des accès AWS (IAM) ou AWS KMS clés existantes utilisent votre objet Amazon Resource Name (ARN) comme contexte de chiffrement pour affiner ou limiter l'accès à votre clé KMS, ces politiques ne fonctionneront pas avec une clé de compartiment S3. Les clés de compartiment S3 utilisent l’ARN du compartiment comme contexte de chiffrement. Avant d'activer une clé de compartiment S3, mettez à jour vos politiques IAM ou vos politiques AWS KMS clés pour utiliser l'ARN de votre compartiment comme contexte de chiffrement.

Pour plus d’informations sur le contexte de chiffrement et les clés de compartiment S3, consultez [Contexte de chiffrement](UsingKMSEncryption.md#encryption-context).

### CloudTrail événements pour AWS KMS
<a name="bucket-key-cloudtrail"></a>

Une fois que vous avez activé une clé de compartiment S3, vos AWS KMS CloudTrail événements enregistrent l'ARN de votre compartiment au lieu de l'ARN de votre objet. En outre, vous voyez moins d' CloudTrail événements KMS pour les objets SSE-KMS dans vos journaux. Les informations clés étant limitées dans le temps dans Amazon S3, moins de demandes sont adressées à AWS KMS.

## Utilisation d’une clé de compartiment S3 avec réplication
<a name="bucket-key-replication"></a>

Vous pouvez utiliser des clés de compartiment S3 avec la réplication dans la même Région (SRR) et la réplication entre Régions (CRR).

Lorsqu’Amazon S3 réplique un objet chiffré, il conserve généralement les paramètres de chiffrement de l’objet réplica dans le compartiment de destination. Toutefois, si l’objet source n’est pas chiffré et que votre compartiment de destination utilise un chiffrement par défaut ou une clé de compartiment S3, Amazon S3 chiffre l’objet avec la configuration du compartiment de destination. 

Les exemples suivants illustrent le fonctionnement d’une clé de compartiment S3 avec la réplication. Pour plus d’informations, consultez [Réplication d’objets chiffrés (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Example Exemple 1 : l’objet source utilise des clés de compartiment S3, le compartiment de destination utilise le chiffrement par défaut**  
Si votre objet source utilise une clé de compartiment S3 mais que votre compartiment de destination utilise le chiffrement par défaut avec SSE-KMS, l’objet réplica conserve ses paramètres de chiffrement de clé de compartiment S3 dans le compartiment de destination. Le compartiment de destination utilise toujours le chiffrement par défaut avec SSE-KMS.   


**Example Exemple 2 : l’objet source n’est pas chiffré, le compartiment de destination utilise une clé de compartiment S3 avec SSE-KMS**  
Si votre objet source n’est pas chiffré et que le compartiment de destination utilise une clé de compartiment S3 avec SSE-KMS, l’objet de réplica est chiffré avec une clé de compartiment S3 utilisant SSE-KMS dans le compartiment de destination. Cela produit un `ETag` de l’objet source différent de l’`ETag` de l’objet réplica. Vous devez mettre à jour les applications qui utilisent le `ETag` pour compenser cette différence.

## Utilisation des clés de compartiment S3
<a name="using-bucket-key"></a>

Pour plus d’informations sur l’activation et l’utilisation des clés de compartiment S3, consultez les sections suivantes :
+ [Configuration de votre compartiment de sorte qu’il utilise une clé de compartiment S3 avec SSE-KMS pour de nouveaux objets](configuring-bucket-key.md)
+ [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md)
+ [Affichage des paramètres d’une clé de compartiment S3](viewing-bucket-key-settings.md)

# Configuration de votre compartiment de sorte qu’il utilise une clé de compartiment S3 avec SSE-KMS pour de nouveaux objets
<a name="configuring-bucket-key"></a>

Lorsque vous configurez le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), vous pouvez configurer votre compartiment pour utiliser une clé de compartiment S3 pour SSE-KMS sur de nouveaux objets. Les clés de compartiment S3 réduisent le trafic de requêtes en provenance d'Amazon S3 vers le AWS KMS SSE-KMS et réduisent le coût du SSE-KMS. Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md).

Vous pouvez configurer votre compartiment pour utiliser une clé de compartiment S3 pour SSE-KMS sur de nouveaux objets à l'aide de la console Amazon S3, de l'API REST, AWS SDKs, AWS Command Line Interface (AWS CLI) ou. CloudFormation Si vous souhaitez activer ou désactiver une clé de compartiment S3 pour des objets existants, vous pouvez utiliser une opération `CopyObject`. Pour plus d’informations, consultez [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md) et [Utilisation de Batch Operations pour activer les clés de compartiment S3 pour SSE-KMS](batch-ops-copy-example-bucket-key.md).

Lorsqu’une clé de compartiment S3 est activée pour le compartiment source ou de destination, le contexte de chiffrement est l’Amazon Resource Name (ARN) du compartiment source et non l’ARN de l’objet, par exemple, `arn:aws:s3:::bucket_ARN`. Vous devez mettre à jour vos politiques IAM pour utiliser l’ARN du compartiment comme contexte de chiffrement. Pour plus d’informations, consultez [Clés de compartiment S3 et réplication](replication-config-for-kms-objects.md#bk-replication).

Les exemples suivants illustrent le fonctionnement d'une clé de compartiment S3 avec la réplication. Pour plus d’informations, consultez [Réplication d’objets chiffrés (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Conditions préalables**  
Avant de configurer votre compartiment de sorte qu’il utilise une clé de compartiment S3, consultez [Modifications à prendre en compte avant d’activer une clé de compartiment S3](bucket-key.md#bucket-key-changes).

**Topics**

## Utiliser la console S3.
<a name="enable-bucket-key"></a>

Dans la console S3, vous pouvez activer ou désactiver une clé de compartiment S3 pour un nouveau compartiment ou un compartiment existant. Les objets de la console S3 conservent le paramètre de clé de compartiment S3 présent dans la configuration du compartiment. Lorsque vous activez une clé de compartiment S3 pour votre compartiment, les nouveaux objets que vous chargez dans le compartiment utilisent une clé de compartiment S3 pour SSE-KMS. 

**Chargement, copie ou modification d’objets dans des compartiments pour lesquels une clé de compartiment S3 est activée**  
Si vous chargez, modifiez ou copiez un objet dans un compartiment pour lequel une clé de compartiment S3 est activée, les paramètres de clé de compartiment S3 de cet objet peuvent être mis à jour pour les aligner sur la configuration du compartiment.

Si une clé de compartiment S3 est déjà activée pour un objet, les paramètres de clé de compartiment S3 de cet objet ne changent pas lorsque vous copiez ou modifiez l’objet. Toutefois, si vous modifiez ou copiez un objet pour lequel aucune clé de compartiment S3 n’est activée et que le compartiment de destination a une configuration de clé de compartiment S3, l’objet conserve les paramètres de clé de compartiment S3 du compartiment de destination. Par exemple, si aucune clé de compartiment S3 n’est activée pour votre objet source, mais que la clé de compartiment S3 est activée pour le compartiment de destination, une clé de compartiment S3 est activée pour l’objet.

**Pour activer une clé de compartiment S3 lorsque vous créez un nouveau compartiment**

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 panneau de navigation de gauche, choisissez **Compartiments**.

1. Choisissez **Créer un compartiment**. 

1. Entrez le nom de votre compartiment, puis choisissez votre Région AWS. 

1. Sous **Chiffrement par défaut**, pour **Type de clé de chiffrement**, choisissez **CléAWS Key Management Service (SSE-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 choisissez 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 la section Clés et AWS clés](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) client dans le *Guide du AWS Key Management Service développeur*.
   + Pour saisir l’ARN de la clé KMS, choisissez **Saisir l’ARN de AWS KMS key **, puis saisissez l’ARN de votre clé KMS dans le champ qui s’affiche. 
   + 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*.

1. Sous **Clé de compartiment**, choisissez **Activer**. 

1. Choisissez **Créer un compartiment**. 

   Amazon S3 crée votre compartiment avec une clé de compartiment S3 activée. Les nouveaux objets que vous chargez dans le compartiment utiliseront une clé de compartiment S3. 

   Pour désactiver une clé de compartiment S3, suivez les étapes précédentes et choisissez **Désactiver**.

**Pour activer une clé de compartiment S3 pour un compartiment existant**

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le compartiment pour lequel vous souhaitez activer une clé de compartiment S3.

1. Choisissez l’onglet **Propriétés**.

1. Sous **Default encryption (Chiffrement par défaut)**, choisissez **Edit (Modifier)**.

1. Sous **Chiffrement par défaut**, pour **Type de clé de chiffrement**, choisissez **CléAWS Key Management Service (SSE-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 choisissez 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 la section Clés et AWS clés](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) client dans le *Guide du AWS Key Management Service développeur*.
   + Pour saisir l’ARN de la clé KMS, choisissez **Saisir l’ARN de AWS KMS key **, puis saisissez l’ARN de votre clé KMS dans le champ qui s’affiche. 
   + 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*.

1. Sous **Clé de compartiment**, choisissez **Activer**. 

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

   Amazon S3 active une clé de compartiment S3 pour les nouveaux objets ajoutés à votre compartiment. Les objets existants n’utilisent pas la clé de compartiment S3. Pour configurer une clé de compartiment S3 pour des objets existants, vous pouvez utiliser une opération `CopyObject`. Pour plus d’informations, consultez [Configuration d’une clé de compartiment S3 au niveau d’un objet](configuring-bucket-key-object.md).

   Pour désactiver une clé de compartiment S3, suivez les étapes précédentes et choisissez **Désactiver**.

## Utilisation de l'API REST
<a name="enable-bucket-key-rest"></a>

Vous pouvez l'utiliser [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)pour activer ou désactiver une clé de compartiment S3 pour votre compartiment. Pour configurer une clé de compartiment S3 avec`PutBucketEncryption`, utilisez le type de [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html)données, qui inclut le chiffrement par défaut avec SSE-KMS. Vous pouvez également utiliser une clé gérée par le client en indiquant l’ID de clé KMS de la clé gérée par le client.  

Pour plus d'informations et des exemples de syntaxe, consultez [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html). 

## Utilisation du AWS SDK pour Java
<a name="enable-bucket-key-sdk"></a>

L’exemple suivant active le chiffrement du compartiment par défaut avec SSE-KMS et une clé de compartiment S3 à l’aide d’ AWS SDK pour Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();
    
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);
```

------

## À l'aide du AWS CLI
<a name="enable-bucket-key-cli"></a>

L'exemple suivant active le chiffrement du compartiment par défaut avec SSE-KMS et une clé de compartiment S3 à l'aide d' AWS CLI. Remplacez les `user input placeholders` par vos propres informations.

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## En utilisant CloudFormation
<a name="enable-bucket-key-cloudformation"></a>

Pour plus d'informations sur la configuration d'une clé de compartiment S3 avec CloudFormation, consultez [AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html)le *guide de AWS CloudFormation l'utilisateur*.

# Configuration d’une clé de compartiment S3 au niveau d’un objet
<a name="configuring-bucket-key-object"></a>

Lorsque vous effectuez une opération PUT ou COPY à l'aide de l'API REST AWS SDKs AWS CLI, ou, vous pouvez activer ou désactiver une clé de compartiment S3 au niveau de l'objet en ajoutant l'en-tête de `x-amz-server-side-encryption-bucket-key-enabled` demande avec une `false` valeur `true` ou. Les clés de compartiment S3 réduisent le coût du chiffrement côté serveur à l'aide de AWS Key Management Service (AWS KMS) (SSE-KMS) en diminuant le trafic de requêtes d'Amazon S3 vers. AWS KMS Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md). 

Lorsque vous configurez une clé de compartiment S3 pour un objet à l’aide d’une opération PUT ou COPY, Amazon S3 met à jour uniquement les paramètres de cet objet. Les paramètres de clé de compartiment S3 pour le compartiment de destination ne changent pas. Si vous soumettez une requête PUT ou COPY pour un objet chiffré par KMS dans un compartiment avec l’option « S3 Bucket Keys » (Clés du compartiment S3) activée, votre opération au niveau de l’objet utilisera automatiquement cette option à moins que vous ne désactiviez les clés dans l’en-tête de la requête. Si vous ne spécifiez pas de clé de compartiment S3 pour votre objet, Amazon S3 applique les paramètres de clé de compartiment S3 du compartiment de destination à l'objet.

**Prérequis :**  
Avant de configurer votre objet de sorte qu’il utilise une clé de compartiment S3, consultez [Modifications à prendre en compte avant d’activer une clé de compartiment S3](bucket-key.md#bucket-key-changes). 

**Topics**
+ [Amazon S3 Batch Operations](#bucket-key-object-bops)
+ [Utilisation de l'API REST](#bucket-key-object-rest)
+ [Utilisation du AWS SDK pour Java PutObject ()](#bucket-key-object-sdk)
+ [En utilisant le AWS CLI (PutObject)](#bucket-key-object-cli)

## Amazon S3 Batch Operations
<a name="bucket-key-object-bops"></a>

Pour chiffrer vos objets Amazon S3 existants, vous pouvez utiliser Amazon S3 Batch Operations. Vous fournissez à la fonctionnalité d'opérations par lot S3 une liste d'objets sur lesquels agir. La fonctionnalité d'opérations par lot appelle l'API correspondante pour exécuter l'opération spécifiée. 

Vous pouvez utiliser l’[opération de copie de S3 Batch Operations](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) pour copier des objets non chiffrés existants et les réécrire dans le même compartiment en tant qu’objets chiffrés. Une tâche d'opérations par lot peut effectuer l'opération spécifiée sur des milliards d'objets. Pour plus d’informations, consultez [Exécution d’opérations groupées sur des objets avec Batch Operations](batch-ops.md) et le billet de blog [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

## Utilisation de l'API REST
<a name="bucket-key-object-rest"></a>

Lorsque vous utilisez SSE-KMS, vous pouvez activer une clé de compartiment S3 pour un objet à l’aide des opérations d’API suivantes : 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)— Lorsque vous chargez un objet, vous pouvez spécifier l'en-tête de `x-amz-server-side-encryption-bucket-key-enabled` demande pour activer ou désactiver une clé de compartiment S3 au niveau de l'objet. 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)— Lorsque vous copiez un objet et configurez SSE-KMS, vous pouvez spécifier l'en-tête de `x-amz-server-side-encryption-bucket-key-enabled` demande pour activer ou désactiver une clé de compartiment S3 pour votre objet. 
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) : lorsque vous utilisez une opération `POST` pour charger un objet et configurer SSE-KMS, vous pouvez utiliser le champ de formulaire `x-amz-server-side-encryption-bucket-key-enabled` pour activer ou désactiver une clé de compartiment S3 pour votre objet.
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)— Lorsque vous chargez des objets volumineux à l'aide de l'opération `CreateMultipartUpload` API et que vous configurez SSE-KMS, vous pouvez utiliser l'en-tête de `x-amz-server-side-encryption-bucket-key-enabled` demande pour activer ou désactiver une clé de compartiment S3 pour votre objet.

Pour activer une clé de compartiment S3 au niveau de l’objet, incluez l’en-tête de demande `x-amz-server-side-encryption-bucket-key-enabled`. Pour plus d’informations sur SSE-KMS et l’API REST, consultez [Utilisation de l'API REST](specifying-kms-encryption.md#KMSUsingRESTAPI).

## Utilisation du AWS SDK pour Java PutObject ()
<a name="bucket-key-object-sdk"></a>

Vous pouvez utiliser l’exemple suivant pour configurer une clé de compartiment S3 au niveau de l’objet à l’aide du kit AWS SDK pour Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "amzn-s3-demo-bucket1";
String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);
```

------

## En utilisant le AWS CLI (PutObject)
<a name="bucket-key-object-cli"></a>

Vous pouvez utiliser l' AWS CLI exemple suivant pour configurer une clé de compartiment S3 au niveau de l'objet dans le cadre d'une `PutObject` demande.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

# Affichage des paramètres d’une clé de compartiment S3
<a name="viewing-bucket-key-settings"></a>

Vous pouvez consulter les paramètres d'une clé de compartiment S3 au niveau du compartiment ou de l'objet à l'aide de la console Amazon S3, de l'API REST, AWS Command Line Interface (AWS CLI) ou AWS SDKs.

Les clés de compartiment S3 réduisent le trafic de requêtes en provenance d'Amazon S3 vers Amazon S3 AWS KMS et réduisent le coût du chiffrement côté serveur AWS Key Management Service (SSE-KMS). Pour de plus amples informations, veuillez consulter [Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3](bucket-key.md). 

Pour afficher les paramètres de clé de compartiment S3 d’un compartiment ou d’un objet ayant conservé les paramètres de clé de compartiment S3 présents dans la configuration du compartiment, vous devez obtenir l’autorisation d’effectuer l’action `s3:GetEncryptionConfiguration`. Pour plus d’informations, consultez [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) dans la *Référence d’API Amazon Simple Storage Service*. 

## Utilisation de la console S3
<a name="bucket-key-settings"></a>

Dans la console S3, vous pouvez afficher les paramètres de clé de compartiment S3 pour votre compartiment ou votre objet. Les paramètres de clé de compartiment S3 sont issus de la configuration du compartiment, sauf si une clé de compartiment S3 est déjà configurée pour les objets source.

Les objets et les dossiers dans le même compartiment peuvent avoir des paramètres de clé de compartiment S3 différents. Par exemple, si vous chargez un objet à l’aide de l’API REST et que vous activez une clé de compartiment S3 pour l’objet, l’objet conserve son paramètre de clé de compartiment S3 dans le compartiment de destination, même si la clé de compartiment S3 est désactivée dans le compartiment de destination. Autre exemple, si vous activez une clé de compartiment S3 pour un compartiment existant, les objets qui se trouvent déjà dans le compartiment n’utilisent pas de clé de compartiment S3. Toutefois, une clé de compartiment S3 est activée pour les nouveaux objets. 

**Pour afficher le paramètre de clé de compartiment S3 pour votre compartiment**

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 panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le compartiment pour lequel vous souhaitez activer une clé de compartiment S3.

1. Choisissez **Propriétés**.

1. Dans la section **Chiffrement par défaut**, sous **Clé de compartiment**, vous voyez le paramètre de clé de compartiment S3 pour votre compartiment.

   Si le paramètre de clé de compartiment S3 ne s’affiche pas, il se peut que vous n’ayez pas l’autorisation d’exécuter l’action `s3:GetEncryptionConfiguration`. Pour plus d’informations, consultez [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) dans la *Référence d’API Amazon Simple Storage Service*. 

**Pour afficher le paramètre de clé de compartiment S3 pour votre 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 la liste **Compartiments**, choisissez le compartiment pour lequel vous souhaitez activer une clé de compartiment S3. 

1. Dans la liste **Objets**, choisissez le nom de votre objet.

1. Sous l’onglet **Détails**, sous **Paramètres de chiffrement côté serveur**, choisissez **Modifier**. 

   Sous **Clé de compartiment**, vous voyez le paramètre de clé de compartiment S3 pour votre objet. Vous ne pouvez pas modifier ce paramètre. 

## À l'aide du AWS CLI
<a name="bucket-key-settings-cli"></a>

**Pour renvoyer les paramètres de clé de compartiment S3 au niveau du compartiment**  
Pour utiliser cet exemple, remplacez chaque `user input placeholder` par vos propres informations.

```
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
```

Pour plus d’informations, consultez [get-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-encryption.html) dans la *Référence des commandes de l’AWS CLI *.

**Pour renvoyer les paramètres au niveau de l’objet pour une clé de compartiment S3**  
Pour utiliser cet exemple, remplacez chaque `user input placeholder` par vos propres informations.

```
aws s3api head-object --bucket amzn-s3-demo-bucket1 --key my_images.tar.bz2
```

Pour plus d’informations, consultez [head-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html) dans la *Référence des commandes de l’AWS CLI *.

## Utilisation de l'API REST
<a name="bucket-key-settings-rest"></a>

**Pour renvoyer les paramètres de clé de compartiment S3 au niveau du compartiment**  
Pour renvoyer des informations de chiffrement pour un compartiment, y compris les paramètres d’une clé de compartiment S3, utilisez l’opération `GetBucketEncryption`. Les paramètres de clé de compartiment S3 sont renvoyés dans le corps de la réponse dans l’élément `ServerSideEncryptionConfiguration` avec le paramètre `BucketKeyEnabled`. Pour plus d’informations, consultez [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) dans la *Référence d’API Amazon S3*. 

**Pour renvoyer les paramètres au niveau de l’objet pour une clé de compartiment S3**  
Pour renvoyer l’état Clé de compartiment S3 d’un objet, utilisez l’opération `HeadObject`. `HeadObject` renvoie l’en-tête de réponse `x-amz-server-side-encryption-bucket-key-enabled` pour indiquer si une clé de compartiment S3 est activée ou désactivée pour l’objet. Pour plus d’informations, consultez [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) dans la *Référence d’API Amazon S3*. 

Les opérations d’API suivantes retournent également l’en-tête de réponse `x-amz-server-side-encryption-bucket-key-enabled` si une clé de compartiment S3 est configurée pour un objet : 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 
+ [PostObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 
+ [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 
+ [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) 
+ [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 
+ [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 

# Utilisation du chiffrement double couche côté serveur avec AWS KMS clés (DSSE-KMS)
<a name="UsingDSSEncryption"></a>

L'utilisation du chiffrement double couche côté serveur avec des clés AWS Key Management Service (AWS KMS) (DSSE-KMS) applique deux couches de chiffrement aux objets lorsqu'ils sont chargés sur Amazon S3. DSSE-KMS vous permet de satisfaire plus facilement aux normes de conformité, qui vous imposent d’appliquer un chiffrement multicouche à vos données et de contrôler entièrement vos clés de chiffrement.

Dans DSSE-KMS, le terme « double » fait référence aux deux couches indépendantes de chiffrement AES-256 appliquées à vos données :
+ *Première couche :* Vos données sont cryptées à l'aide d'une clé de chiffrement des données (DEK) unique générée par AWS KMS
+ *Deuxième couche :* les données déjà chiffrées sont chiffrées à nouveau à l’aide d’une clé de chiffrement AES-256 distincte gérée par Amazon S3

Cette procédure diffère du chiffrement SSE-KMS standard, qui n’applique qu’une seule couche de chiffrement. La double couche améliore la sécurité en offrant la garantie que, même si une couche de chiffrement était compromise, vos données resteraient protégées par la deuxième couche. Cette sécurité supplémentaire s'accompagne d'une augmentation de la charge de traitement et des appels d' AWS KMS API, ce qui explique le coût plus élevé par rapport au SSE-KMS standard. [Pour plus d'informations sur la tarification du DSSE-KMS, consultez les [AWS KMS key concepts](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) du guide du AWS Key Management Service développeur et AWS KMS les tarifs.](https://aws.amazon.com/kms/pricing)

Lorsque vous utilisez le DSSE-KMS avec un compartiment Amazon S3, les AWS KMS clés doivent se trouver dans la même région que le compartiment. De même, lorsqu’un chiffrement DSSE-KMS est demandé pour l’objet, le total de contrôle S3, qui fait partie des métadonnées de l’objet, est stocké sous une forme chiffrée. Pour en savoir plus sur le total de contrôle, consultez [Vérification de l’intégrité des objets dans Amazon S3](checking-object-integrity.md).

**Note**  
Les clés de compartiment S3 ne sont pas prises en charge pour DSSE-KMS.

Les principales différences entre le chiffrement DSSE-KMS et le chiffrement SSE-KMS standard sont les suivantes :
+ **Couches de chiffrement :** le chiffrement DSSE-KMS applique deux couches indépendantes de chiffrement AES-256, tandis que le chiffrement SSE-KMS standard n’en applique qu’une
+ **Sécurité :** le chiffrement DSSE-KMS offre une protection renforcée contre les vulnérabilités potentielles du chiffrement
+ **Conformité :** le chiffrement DSSE-KMS permet de répondre aux exigences réglementaires qui imposent un chiffrement multicouche
+ **Performances :** le chiffrement DSSE-KMS présente une latence légèrement plus élevée en raison du traitement du chiffrement supplémentaire
+ **Coût : le** DSSE-KMS encourt des frais plus élevés en raison de l'augmentation des frais de calcul et des opérations supplémentaires AWS KMS 

**Nécessite un chiffrement double couche côté serveur avec AWS KMS keys (DSSE-KMS)**  
Pour exiger un chiffrement double couche côté serveur de tous les objets contenus dans un compartiment Amazon S3 déterminé, vous pouvez utiliser une stratégie de compartiment. Par exemple, la stratégie de compartiment suivante n’autorise pas le chargement d’objet (`s3:PutObject`) si la demande n’inclut pas d’en-tête `x-amz-server-side-encryption` demandant un chiffrement côté serveur avec DSSE-KMS.

------
#### [ JSON ]

****  

```
{
             "Version":"2012-10-17",		 	 	 
             "Id": "PutObjectPolicy",
             "Statement": [{
                   "Sid": "DenyUnEncryptedObjectUploads",
                   "Effect": "Deny",
                   "Principal": {
                       "AWS": "arn:aws:iam::111122223333:root"
                   },
                   "Action": "s3:PutObject",
                   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
                   "Condition": {
                      "StringNotEquals": {
                         "s3:x-amz-server-side-encryption": "aws:kms:dsse"
                      }
                   }
                }
             ]
          }
```

------

**Topics**
+ [Spécification du chiffrement double couche côté serveur à l'aide de AWS KMS clés (DSSE-KMS)](specifying-dsse-encryption.md)

# 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
```

# Utilisation du chiffrement côté serveur avec les clés fournies par le client (SSE-C)
<a name="ServerSideEncryptionCustomerKeys"></a>

Le chiffrement côté serveur consiste à protéger les données au repos. Un chiffrement côté serveur chiffre uniquement les données d’objet, pas les métadonnées d’objet. Vous pouvez utiliser le chiffrement côté serveur avec des clés fournies par le client (SSE-C) dans vos compartiments à usage général pour chiffrer vos données avec vos propres clés de chiffrement. Avec la clé de chiffrement que vous fournissez dans la demande, Amazon S3 gère le chiffrement des données quand il écrit sur les disques et le déchiffrement des données quand vous accédez à vos objets. Par conséquent, vous n’avez pas besoin de conserver de code pour procéder au chiffrement et déchiffrement des données. Il ne vous reste qu’à gérer les clés de chiffrement que vous fournissez. 

La plupart des cas d'utilisation modernes d'Amazon S3 n'utilisent plus le SSE-C car il n'offre pas la flexibilité du chiffrement côté serveur avec des clés gérées Amazon S3 (SSE-S3) ou du chiffrement côté serveur avec des clés KMS (SSE-KMS). AWS L'obligation du SSE-C de fournir la clé de chiffrement chaque fois que vous interagissez avec vos données chiffrées SSE-C rend impossible le partage de votre clé SSE-C avec d'autres utilisateurs, rôles ou AWS services qui lisent les données de vos compartiments S3 afin d'opérer sur vos données. En raison de la prise en charge généralisée du SSE-KMS AWS, la plupart des charges de travail modernes n'utilisent pas le chiffrement SSE-C car il n'est pas aussi flexible que le SSE-KMS. Pour en savoir plus sur SSE-KMS, consultez. [Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)](UsingKMSEncryption.md)

Si vous souhaitez empêcher l'utilisation du chiffrement SSE-C pour les objets écrits dans votre bucket, vous pouvez bloquer le chiffrement SSE-C lorsque vous modifiez la configuration de chiffrement par défaut de votre bucket. Lorsque le SSE-C est bloqué pour un bucket à usage général `PutObject` `CopyObject``PostObject`, toute demande de téléchargement partitionné ou de réplication spécifiant le chiffrement SSE-C sera rejetée avec une erreur. `HTTP 403 AccessDenied` Pour en savoir plus sur le blocage du SSE-C, consultez. [Blocage ou déblocage du SSE-C pour un compartiment à usage général](blocking-unblocking-s3-c-encryption-gpb.md)

Aucuns frais supplémentaires ne s’appliquent à l’utilisation du chiffrement SSE-C. Toutefois, les demandes de configuration et d’utilisation du chiffrement SSE-C entraînent des frais de demande Amazon S3 standard. Pour obtenir des informations sur la tarification, consultez [Tarification Amazon S3](https://aws.amazon.com/s3/pricing/).

**Important**  
Comme [annoncé le 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service déploie un nouveau paramètre de sécurité des compartiments par défaut qui désactive automatiquement le chiffrement côté serveur à l'aide de clés fournies par le client (SSE-C) pour tous les nouveaux compartiments à usage général. Pour les compartiments existants ne Comptes AWS contenant aucun objet chiffré SSE-C, Amazon S3 désactivera également le SSE-C pour toutes les nouvelles demandes d'écriture. Dans le cas Comptes AWS de l'utilisation du SSE-C, Amazon S3 ne modifiera la configuration de chiffrement des compartiments sur aucun des compartiments existants de ces comptes. Ce déploiement a débuté le 6 avril 2026 et s'achèvera au cours des prochaines semaines dans 37 AWS régions, dont la AWS Chine et AWS GovCloud les États-Unis.  
Avec ces modifications, les applications nécessitant un chiffrement SSE-C doivent délibérément activer le SSE-C en utilisant l'opération d'[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API après avoir créé un nouveau compartiment. Pour plus d'informations sur cette modification, consultez[FAQ sur le paramètre SSE-C par défaut pour les nouveaux buckets](default-s3-c-encryption-setting-faq.md).

## Considérations à prendre en compte avant d'utiliser SSE-C
<a name="considerations-before-using-sse-c"></a>
+ S3 ne stocke jamais la clé de chiffrement lorsque vous utilisez SSE-C. Vous devez fournir la clé de chiffrement chaque fois que vous souhaitez que quelqu'un télécharge vos données chiffrées SSE-C depuis S3. 
  + Vous gérez un mappage pour savoir quelle clé de chiffrement a été utilisée pour chiffrer quel objet. Vous devez assurer le suivi pour savoir quelle clé de chiffrement a été fournie pour quel objet. Cela signifie également que si vous perdez la clé de chiffrement, vous perdez l'objet. 
  + Etant donné que vous gérez les clés de chiffrement du côté client, vous gérez toute sauvegarde supplémentaire, comme la rotation des clés, du côté client. 
  + Cette conception peut rendre difficile le partage de votre clé SSE-C avec d'autres utilisateurs, rôles ou AWS services que vous utilisez pour exploiter vos données. En raison de la prise en charge généralisée du SSE-KMS AWS, la plupart des charges de travail modernes n'utilisent pas le SSE-C car celui-ci n'est pas aussi flexible que le SSE-KMS. Pour en savoir plus sur le SSE-KMS, voir [Utilisation du chiffrement côté serveur avec des clés AWS KMS (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html). 
  + Cela signifie que les objets chiffrés avec SSE-C ne peuvent pas être déchiffrés nativement par les services gérés. AWS 
+ Vous devez utiliser le protocole HTTPS lorsque vous spécifiez les en-têtes SSE-C pour vos demandes.
  + Amazon S3 rejette toute demande faite via HTTP lors de l’utilisation du chiffrement SSE-C. Pour des raisons de sécurité, nous vous recommandons de considérer toute clé que vous envoyez par erreur via HTTP comme compromise. Écartez la clé et permutez comme il convient. 
+ Si le contrôle de version de votre bucket est activé, chaque version d'objet que vous chargez peut avoir sa propre clé de chiffrement. Vous devez assurer le suivi pour savoir quelle clé de chiffrement a été utilisée pour quelle version d’objet. 
+ Le SSE-C n'est pas pris en charge dans la console Amazon S3. Vous ne pouvez pas utiliser la console Amazon S3 pour télécharger un objet et spécifier le chiffrement SSE-C. Vous pouvez également utiliser la console pour mettre à jour (par exemple, modifier la classe de stockage ou ajouter des métadonnées) un objet existant stocké grâce aux clés SSE-C. 

**Topics**
+ [Considérations à prendre en compte avant d'utiliser SSE-C](#considerations-before-using-sse-c)
+ [Spécification du chiffrement côté serveur avec des clés fournies par le client (SSE-C)](specifying-s3-c-encryption.md)
+ [Blocage ou déblocage du SSE-C pour un compartiment à usage général](blocking-unblocking-s3-c-encryption-gpb.md)
+ [FAQ sur le paramètre SSE-C par défaut pour les nouveaux buckets](default-s3-c-encryption-setting-faq.md)

# Spécification du chiffrement côté serveur avec des clés fournies par le client (SSE-C)
<a name="specifying-s3-c-encryption"></a>

Pour utiliser le chiffrement côté serveur avec des clés fournies par le client (SSE-C), assurez-vous d'abord que le SSE-C n'est pas un type de chiffrement bloqué dans la configuration de chiffrement par défaut de votre compartiment à usage général Amazon S3. En cas de blocage, vous pouvez activer ce type de chiffrement en mettant à jour votre configuration de chiffrement par défaut pour le compartiment. Ensuite, vous pouvez utiliser SSE-C dans vos demandes de téléchargement en transmettant les en-têtes requis. Voir[Actions Amazon S3 prenant en charge l'écriture de données avec SSE-C](#amazon-s3-actions-that-support-writing-data-with-sse-c), et assurez-vous d'inclure le[En-têtes d'API S3 requis pour les demandes de chiffrement et de déchiffrement d'objets SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

Lorsque vous chargez un objet spécifiant SSE-C, Amazon S3 utilise la clé de chiffrement que vous fournissez pour appliquer le chiffrement AES-256 à vos données. Amazon S3 supprime ensuite la clé de chiffrement de la mémoire. Lorsque vous récupérez un objet, vous devez fournir la même clé de chiffrement dans la demande. Amazon S3 vérifie tout d’abord que la clé de chiffrement que vous avez fournie correspond, puis il déchiffre l’objet avant de vous renvoyer les données de ce dernier. 

Avant d'utiliser SSE-C, assurez-vous d'avoir pris connaissance du. [Considérations à prendre en compte avant d'utiliser SSE-C](ServerSideEncryptionCustomerKeys.md#considerations-before-using-sse-c)

**Note**  
Amazon S3 ne stocke pas la clé de chiffrement que vous fournissez. À la place, il stocke un code d’authentification de message utilisant hash (HMAC) crypté de manière aléatoire de la clé de chiffrement pour valider les demandes futures. La valeur HMAC cryptée ne peut pas être utilisée pour retrouver la valeur de la clé de chiffrement ou pour déchiffrer les contenus de l’objet chiffré. Cela signifie que si vous perdez la clé de chiffrement, vous perdez l’objet.

**Topics**
+ [Actions SSE-C et en-têtes requis](#sse-c-actions-and-required-headers)
+ [Exemple de politique de compartiment pour appliquer le chiffrement SSE-C](#example-bucket-policy-to-enforce-sse-c-encryption)
+ [Présigné URLs et SSE-C](#ssec-and-presignedurl)
+ [Faire des demandes avec SSE-C](#making-requests-with-sse-c)
+ [Utilisation de l'API REST](#using-rest-api-sse-c)
+ [Utilisation du AWS SDKs pour spécifier le SSE-C pour les opérations PUT, GET, Head et Copy](#sse-c-using-sdks)
+ [Utilisation du AWS SDKs pour spécifier le SSE-C pour les téléchargements partitionnés](#sse-c-using-sdks-multipart-uploads)

## Actions SSE-C et en-têtes requis
<a name="sse-c-actions-and-required-headers"></a>

La spécification de SSE-C sur le S3 pris en charge APIs nécessite de transmettre des paramètres de demande spécifiques. 

**Note**  
L'`PutBucketEncryption`API d'Amazon S3 est utilisée pour configurer le chiffrement côté serveur par défaut pour un compartiment. Toutefois, `PutBucketEncryption` ne prend pas en charge l'activation de SSE-C comme méthode de chiffrement par défaut pour un bucket. Le SSE-C est une méthode de chiffrement au niveau de l'objet dans laquelle vous fournissez la clé de chiffrement à Amazon S3 à chaque demande de chargement ou de téléchargement d'objet. Amazon S3 utilise cette clé pour chiffrer ou déchiffrer l'objet lors de la demande, puis supprime la clé. Cela signifie que SSE-C est activé pour chaque objet, et non comme paramètre de compartiment par défaut. 

### Actions Amazon S3 prenant en charge l'écriture de données avec SSE-C
<a name="amazon-s3-actions-that-support-writing-data-with-sse-c"></a>

Vous pouvez demander un chiffrement côté serveur avec des clés fournies par le client (SSE-C) lorsque vous écrivez des objets dans un bucket à usage général en utilisant les opérations ou actions d'API suivantes : 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.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_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [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_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)

**Note**  
S3 Replication prend en charge les objets chiffrés avec le SSE-C. Pour plus d’informations sur la réplication des objets chiffrés, consultez [Réplication d’objets chiffrés (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

### En-têtes d'API S3 requis pour les demandes de chiffrement et de déchiffrement d'objets SSE-C
<a name="s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests"></a>

Vous devez fournir les trois en-têtes d'API suivants pour chiffrer ou déchiffrer des objets avec SSE-C : 
+ `x-amz-server-side-encryption-customer-algorithm`Utilisez cet en-tête pour spécifier l'algorithme de chiffrement. La valeur de l’en-tête doit être AES256.
+ `x-amz-server-side-encryption-customer-key`Utilisez cet en-tête pour fournir la clé de chiffrement 256 bits codée en base64 qu'Amazon S3 utilisera pour chiffrer ou déchiffrer vos données.
+ `x-amz-server-side-encryption-customer-key-MD5`Utilisez cet en-tête pour fournir le MD5 résumé de 128 bits codé en base64 de la clé de chiffrement conformément à la RFC 1321. Amazon S3 utilise cet en-tête pour vérifier l’intégrité du message et veiller à ce que la clé de chiffrement ait été transmise sans erreur.

### En-têtes d'API S3 requis pour les demandes de copie d'objets source chiffrés avec SSE-C
<a name="s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c"></a>

Vous devez fournir les trois en-têtes d'API suivants pour copier les objets source chiffrés avec SSE-C : 
+ `x-amz-copy-source-server-side-encryption-customer-algorithm`Incluez cet en-tête pour spécifier l'algorithme qu'Amazon S3 doit utiliser pour déchiffrer l'objet source. La valeur doit être AES256.
+ `x-amz-copy-source-server-side-encryption-customer-key`Incluez cet en-tête pour fournir la clé de chiffrement codée en base64 qu'Amazon S3 utilisera pour déchiffrer l'objet source. La clé de chiffrement doit être celle fournie à Amazon S3 lorsque vous avez créé l’objet source. Sinon, Amazon S3 ne peut pas déchiffrer l’objet.
+ `x-amz-copy-source-server-side-encryption-customer-key-MD5`Incluez cet en-tête pour fournir le MD5 résumé de 128 bits codé en base64 de la clé de chiffrement conformément à la RFC 1321.

## Exemple de politique de compartiment pour appliquer le chiffrement SSE-C
<a name="example-bucket-policy-to-enforce-sse-c-encryption"></a>

Pour exiger le SSE-C pour tous les objets écrits dans un compartiment Amazon S3, vous pouvez utiliser une politique de compartiment. Par exemple, la stratégie de compartiment suivante refuse les autorisations de chargement d’objet (`s3:PutObject`) autorisations pour toutes les demandes qui n’incluent pas l’en-tête `x-amz-server-side-encryption-customer-algorithm` demandant SSE-C. 

```
{  
"Version":"2012-10-17",		 	 	                      
    "Id": "PutObjectPolicy",  
    "Statement": [  
        {  
"Sid": "RequireSSECObjectUploads",  
            "Effect": "Deny",  
            "Principal": "*",  
            "Action": "s3:PutObject",  
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",  
            "Condition": {  
            "Null": {  
              "s3:x-amz-server-side-encryption-customer-algorithm": "true"  
                }  
            }  
        }  
    ]  
}
```

**Important**  
Si vous utilisez une politique de compartiment pour activer SSE-C`s3:PutObject`, vous devez inclure l'`x-amz-server-side-encryption-customer-algorithm`en-tête dans toutes les demandes de téléchargement partitionné (CreateMultipartUpload UploadPart, et). CompleteMultipartUpload 

## Présigné URLs et SSE-C
<a name="ssec-and-presignedurl"></a>

Vous pouvez générer une URL présignée qui peut être utilisée pour des opérations comme le chargement d’un nouvel objet, la récupération d’un objet existant ou la récupération des métadonnées d’objet. URLsSupporte le SSE-C présigné comme suit :
+ Lors de la création d’une URL présignée, vous devez spécifier l’algorithme en utilisant l’en-tête `x-amz-server-side-encryption-customer-algorithm` dans le calcul de la signature.
+ Lorsque vous utilisez l’URL présignée pour charger un nouvel objet, récupérer un objet existant ou récupérer uniquement des métadonnées d’objet, vous devez fournir tous les en-têtes de chiffrement dans la demande de votre application cliente. 
**Note**  
Pour les non-SSE-C objets, vous pouvez générer une URL présignée et la coller directement dans un navigateur pour accéder aux données.   
Toutefois, vous ne pouvez pas procéder ainsi pour des objets SSE-C, car en plus de l’URL présignée, vous devez également inclure des en-têtes HTTP spécifiques aux objets SSE-C. Par conséquent, vous ne pouvez utiliser le présigné URLs pour les objets SSE-C que par programmation.

Pour plus d'informations sur le présigné URLs, consultez[Téléchargez et chargez des objets avec une signature préalable URLs](using-presigned-url.md).

## Faire des demandes avec SSE-C
<a name="making-requests-with-sse-c"></a>

 Au moment de la création de l’objet avec l’API REST, vous pouvez spécifier un chiffrement côté serveur avec les clés fournies par le client (SSE-C). Lorsque vous utilisez SSE-C, vous devez fournir les informations de clé de chiffrement à l'aide du. [En-têtes d'API S3 requis pour les demandes de copie d'objets source chiffrés avec SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c) Vous pouvez utiliser les bibliothèques d'encapsulation du AWS SDK pour ajouter ces en-têtes à votre demande. Si nécessaire, vous pouvez effectuer les appels à l’API REST Amazon S3 directement dans l’application.

**Important**  
Avant de spécifier le chiffrement côté serveur avec des clés fournies par le client (SSE-C), assurez-vous que le chiffrement SSE-C n'est pas bloqué pour votre compartiment à usage général. Pour de plus amples informations, veuillez consulter [Blocage ou déblocage du SSE-C pour un compartiment à usage général](blocking-unblocking-s3-c-encryption-gpb.md).

**Note**  
Vous ne pouvez pas utiliser la console Amazon S3 pour télécharger un objet et demander le SSE-C. Vous ne pouvez pas non plus utiliser la console pour mettre à jour (par exemple, modifier la classe de stockage ou ajouter des métadonnées) un objet existant stocké à l'aide de SSE-C. Pour plus d'informations, consultez[En-têtes d'API S3 requis pour les demandes de chiffrement et de déchiffrement d'objets SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

## Utilisation de l'API REST
<a name="using-rest-api-sse-c"></a>

### Amazon S3 REST APIs compatible SSE-C
<a name="sse-c-supported-apis"></a>

Les Amazon S3 suivants prennent en APIs charge le chiffrement côté serveur à l'aide de clés de chiffrement fournies par le client (SSE-C).
+ **Opération GET** – Lorsque vous récupérez des objets via l’API GET (consultez [GET Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)), vous pouvez spécifier ces en-têtes de demande.
+ **Opération HEAD** – Pour récupérer les métadonnées d’objet via l’API HEAD (consultez [Head Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)), vous pouvez spécifier ces en-têtes de demande.
+ **Opération PUT** – Lorsque vous chargez des données via l’API PutObject (consultez [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)), vous pouvez spécifier ces en-têtes de demande. 
+ **Chargement partitionné** – Lorsque vous chargez des objets volumineux via l’API de chargement partitionné, vous pouvez spécifier ces en-têtes. Vous spécifiez ces en-têtes dans la demande d'initiation (voir [Initiate multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)) et dans chaque demande de téléchargement partiel suivante (voir [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html) or [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)). Pour chaque demande de chargement d’une partie, les informations de chiffrement doivent être les mêmes que celles fournies dans la demande de lancement du chargement partitionné.
+ **Opération POST** – Lorsque vous utilisez une opération POST pour charger un objet (consultez [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)), à la place des en-têtes de demande, fournissez les mêmes informations dans les champs du formulaire.
+ **Opération de copie** — Lorsque vous copiez un objet (voir [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)), vous disposez à la fois d'un objet source et d'un objet cible :
  + Si vous souhaitez spécifier le type de chiffrement de l'objet cible, vous devez fournir l'en-tête de `x-amz-server-side-encryption ` demande.
  + Si vous souhaitez que l'objet cible soit chiffré à l'aide de SSE-C, vous devez fournir des informations de chiffrement à l'aide de l'API S3. [En-têtes d'API S3 requis pour les demandes de chiffrement et de déchiffrement d'objets SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests)
  + Si l'objet source est chiffré à l'aide du protocole SSE-C, vous devez fournir les informations de clé de chiffrement à l'aide des en-têtes de l'API S3. [En-têtes d'API S3 requis pour les demandes de copie d'objets source chiffrés avec SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c)

## Utilisation du AWS SDKs pour spécifier le SSE-C pour les opérations PUT, GET, Head et Copy
<a name="sse-c-using-sdks"></a>

Les exemples suivants illustrent la demande d’un chiffrement côté serveur avec les clés de chiffrement fournies par le client (SSE-C) pour les objets. Les exemples exécutent les opérations suivantes. Chaque opération montre comment spécifier SSE-C-related les en-têtes dans la demande :
+ **Put object** – Charge un objet et demande un chiffrement côté serveur avec une clé de chiffrement fournie par le client.
+ **Get object** – Télécharge l’objet chargé à l’étape précédente. Dans la demande, vous fournissez les mêmes informations de chiffrement que celles fournies lors du chargement de l’objet. Amazon S3 a besoin de ces informations pour déchiffrer l’objet afin de pouvoir vous le renvoyer.
+ **Get object metadata** – Récupère les métadonnées de l’objet. Vous fournissez les mêmes informations de chiffrement que celles utilisées quand l’objet a été chargé.
+ **Copy object** – Effectue une copie de l’objet précédemment chargé. Comme l’objet source est stocké via SSE-C, vous devez fournir ses informations de chiffrement dans votre demande de copie. Par défaut, Amazon S3 ne chiffre la copie de l’objet que si vous le demandez explicitement. Cet exemple demande à Amazon S3 de stocker une copie chiffrée de l’objet.

------
#### [ Java ]

**Note**  
Cet exemple montre comment copier un objet en une seule opération. Lorsque vous utilisez l’API de chargement partitionné pour charger des objets volumineux, vous fournissez les informations de chiffrement comme illustré dans l’exemple suivant. Pour des exemples de téléchargements partitionnés utilisant le AWS SDK pour Java, voir. [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md)

Pour ajouter les informations de chiffrement requises, vous incluez une clé `SSECustomerKey` dans votre demande. Pour plus d’informations sur la classe `SSECustomerKey`, consultez la section API REST.

Pour obtenir des instructions sur la création et le test d'un échantillon fonctionnel, voir [Getting Started](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) dans le guide du AWS SDK pour Java développeur.

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.crypto.KeyGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class ServerSideEncryptionUsingClientSideEncryptionKey {
    private static SSECustomerKey SSE_KEY;
    private static AmazonS3 S3_CLIENT;
    private static KeyGenerator KEY_GENERATOR;

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyName = "*** Key name ***";
        String uploadFileName = "*** File path ***";
        String targetKeyName = "*** Target key name ***";

        // Create an encryption key.
        KEY_GENERATOR = KeyGenerator.getInstance("AES");
        KEY_GENERATOR.init(256, new SecureRandom());
        SSE_KEY = new SSECustomerKey(KEY_GENERATOR.generateKey());

        try {
            S3_CLIENT = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Upload an object.
            uploadObject(bucketName, keyName, new File(uploadFileName));

            // Download the object.
            downloadObject(bucketName, keyName);

            // Verify that the object is properly encrypted by attempting to retrieve it
            // using the encryption key.
            retrieveObjectMetadata(bucketName, keyName);

            // Copy the object into a new object that also uses SSE-C.
            copyObject(bucketName, keyName, targetKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObject(String bucketName, String keyName, File file) {
        PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSECustomerKey(SSE_KEY);
        S3_CLIENT.putObject(putRequest);
        System.out.println("Object uploaded");
    }

    private static void downloadObject(String bucketName, String keyName) throws IOException {
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(SSE_KEY);
        S3Object object = S3_CLIENT.getObject(getObjectRequest);

        System.out.println("Object content: ");
        displayTextInputStream(object.getObjectContent());
    }

    private static void retrieveObjectMetadata(String bucketName, String keyName) {
        GetObjectMetadataRequest getMetadataRequest = new GetObjectMetadataRequest(bucketName, keyName)
                .withSSECustomerKey(SSE_KEY);
        ObjectMetadata objectMetadata = S3_CLIENT.getObjectMetadata(getMetadataRequest);
        System.out.println("Metadata retrieved. Object size: " + objectMetadata.getContentLength());
    }

    private static void copyObject(String bucketName, String keyName, String targetKeyName)
            throws NoSuchAlgorithmException {
        // Create a new encryption key for target so that the target is saved using
        // SSE-C.
        SSECustomerKey newSSEKey = new SSECustomerKey(KEY_GENERATOR.generateKey());

        CopyObjectRequest copyRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName)
                .withSourceSSECustomerKey(SSE_KEY)
                .withDestinationSSECustomerKey(newSSEKey);

        S3_CLIENT.copyObject(copyRequest);
        System.out.println("Object copied");
    }

    private static void displayTextInputStream(S3ObjectInputStream input) throws IOException {
        // Read one line at a time from the input stream and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

------
#### [ .NET ]

**Note**  
Pour obtenir des exemples de chargement d’objets volumineux à l’aide de l’API de chargement partitionné, consultez [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md) et [Utilisation de AWS SDKs (API de bas niveau)](mpu-upload-object.md#mpu-upload-low-level).

Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez [Getting Started with the AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET dans *AWS le Guide du développeur du SDK pour* .NET. 

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SSEClientEncryptionKeyObjectOperationsTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** key name for new object created ***"; 
        private const string copyTargetKeyName = "*** key name for object copy ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            ObjectOpsUsingClientEncryptionKeyAsync().Wait();
        }
        private static async Task ObjectOpsUsingClientEncryptionKeyAsync()
        {
            try
            {
                // Create an encryption key.
                Aes aesEncryption = Aes.Create();
                aesEncryption.KeySize = 256;
                aesEncryption.GenerateKey();
                string base64Key = Convert.ToBase64String(aesEncryption.Key);

                // 1. Upload the object.
                PutObjectRequest putObjectRequest = await UploadObjectAsync(base64Key);
                // 2. Download the object and verify that its contents matches what you uploaded.
                await DownloadObjectAsync(base64Key, putObjectRequest);
                // 3. Get object metadata and verify that the object uses AES-256 encryption.
                await GetObjectMetadataAsync(base64Key);
                // 4. Copy both the source and target objects using server-side encryption with 
                //    a customer-provided encryption key.
                await CopyObjectAsync(aesEncryption, base64Key);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        private static async Task<PutObjectRequest> UploadObjectAsync(string base64Key)
        {
            PutObjectRequest putObjectRequest = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                ContentBody = "sample text",
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };
            PutObjectResponse putObjectResponse = await client.PutObjectAsync(putObjectRequest);
            return putObjectRequest;
        }
        private static async Task DownloadObjectAsync(string base64Key, PutObjectRequest putObjectRequest)
        {
            GetObjectRequest getObjectRequest = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                // Provide encryption information for the object stored in Amazon S3.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            using (GetObjectResponse getResponse = await client.GetObjectAsync(getObjectRequest))
            using (StreamReader reader = new StreamReader(getResponse.ResponseStream))
            {
                string content = reader.ReadToEnd();
                if (String.Compare(putObjectRequest.ContentBody, content) == 0)
                    Console.WriteLine("Object content is same as we uploaded");
                else
                    Console.WriteLine("Error...Object content is not same.");

                if (getResponse.ServerSideEncryptionCustomerMethod == ServerSideEncryptionCustomerMethod.AES256)
                    Console.WriteLine("Object encryption method is AES256, same as we set");
                else
                    Console.WriteLine("Error...Object encryption method is not the same as AES256 we set");

                // Assert.AreEqual(putObjectRequest.ContentBody, content);
                // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getResponse.ServerSideEncryptionCustomerMethod);
            }
        }
        private static async Task GetObjectMetadataAsync(string base64Key)
        {
            GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest
            {
                BucketName = bucketName,
                Key = keyName,

                // The object stored in Amazon S3 is encrypted, so provide the necessary encryption information.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            GetObjectMetadataResponse getObjectMetadataResponse = await client.GetObjectMetadataAsync(getObjectMetadataRequest);
            Console.WriteLine("The object metadata show encryption method used is: {0}", getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
            // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
        }
        private static async Task CopyObjectAsync(Aes aesEncryption, string base64Key)
        {
            aesEncryption.GenerateKey();
            string copyBase64Key = Convert.ToBase64String(aesEncryption.Key);

            CopyObjectRequest copyRequest = new CopyObjectRequest
            {
                SourceBucket = bucketName,
                SourceKey = keyName,
                DestinationBucket = bucketName,
                DestinationKey = copyTargetKeyName,
                // Information about the source object's encryption.
                CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                CopySourceServerSideEncryptionCustomerProvidedKey = base64Key,
                // Information about the target object's encryption.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = copyBase64Key
            };
            await client.CopyObjectAsync(copyRequest);
        }
    }
}
```

------

## Utilisation du AWS SDKs pour spécifier le SSE-C pour les téléchargements partitionnés
<a name="sse-c-using-sdks-multipart-uploads"></a>

L’exemple de la section précédente montre comment demander le chiffrement côté serveur à l’aide d’une clé de chiffrement fournie par le client (SSE-C) dans les opérations PUT, GET, Head et Copy. Cette section décrit les autres Amazon S3 APIs qui prennent en charge le SSE-C.

------
#### [ Java ]

Pour télécharger des objets de grande taille, vous pouvez utiliser le téléchargement APIs partitionné. Pour de plus amples informations, veuillez consulter [Chargement et copie d’objets à l’aide du chargement partitionné dans Amazon S3](mpuoverview.md). Vous pouvez utiliser le haut niveau ou le bas niveau APIs pour télécharger des objets volumineux. Ils APIs prennent en charge les en-têtes liés au chiffrement dans la demande.
+ Lorsque vous utilisez l'`TransferManager`API de haut niveau, vous fournissez les en-têtes spécifiques au chiffrement dans le. `PutObjectRequest` Pour de plus amples informations, veuillez consulter [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md). 
+ Lorsque vous utilisez l’API de bas niveau, vous fournissez les informations de chiffrement dans l’objet `InitiateMultipartUploadRequest`, suivies des mêmes informations dans chaque `UploadPartRequest`. Il est inutile de fournir des en-têtes liés au chiffrement dans votre objet `CompleteMultipartUploadRequest`. Pour obtenir des exemples, consultez [Utilisation de AWS SDKs (API de bas niveau)](mpu-upload-object.md#mpu-upload-low-level). 

L’exemple ci-dessous utilise `TransferManager` pour créer des objets ; il explique également la marche à suivre pour fournir des informations SSE-C. Cet exemple effectue les opérations suivantes :
+ Crée un objet à l’aide de la méthode `TransferManager.upload()`. Dans l'`PutObjectRequest`instance, vous fournissez des informations de clé de chiffrement dans la demande. Amazon S3 chiffre l’objet en utilisant la clé fournie par le client.
+ Effectue une copie de l’objet en appelant la méthode `TransferManager.copy()`. L’exemple demande à Amazon S3 de chiffrer la copie de l’objet à l’aide d’un nouvel objet `SSECustomerKey`. L’objet source étant chiffré au moyen de SSE-C, `CopyObjectRequest`fournit également la clé de chiffrement de l’objet source, afin qu’Amazon S3 puisse déchiffrer l’objet avant de le copier. 

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSECustomerKey;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import javax.crypto.KeyGenerator;
import java.io.File;
import java.security.SecureRandom;

public class ServerSideEncryptionCopyObjectUsingHLwithSSEC {

    public static void main(String[] args) throws Exception {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String fileToUpload = "*** File path ***";
        String keyName = "*** New object key name ***";
        String targetKeyName = "*** Key name for object copy ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();
            TransferManager tm = TransferManagerBuilder.standard()
                    .withS3Client(s3Client)
                    .build();

            // Create an object from a file.
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, new File(fileToUpload));

            // Create an encryption key.
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(256, new SecureRandom());
            SSECustomerKey sseCustomerEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());

            // Upload the object. TransferManager uploads asynchronously, so this call
            // returns immediately.
            putObjectRequest.setSSECustomerKey(sseCustomerEncryptionKey);
            Upload upload = tm.upload(putObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            upload.waitForCompletion();
            System.out.println("Object created.");

            // Copy the object and store the copy using SSE-C with a new key.
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName);
            SSECustomerKey sseTargetObjectEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());
            copyObjectRequest.setSourceSSECustomerKey(sseCustomerEncryptionKey);
            copyObjectRequest.setDestinationSSECustomerKey(sseTargetObjectEncryptionKey);

            // Copy the object. TransferManager copies asynchronously, so this call returns
            // immediately.
            Copy copy = tm.copy(copyObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            copy.waitForCompletion();
            System.out.println("Copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

Pour télécharger des objets volumineux, vous pouvez utiliser l'API de téléchargement partitionné (voir[Chargement et copie d’objets à l’aide du chargement partitionné dans Amazon S3](mpuoverview.md)). AWS Le SDK pour .NET fournit des fonctionnalités de haut niveau ou de APIs bas niveau pour le téléchargement d'objets volumineux. Ils APIs prennent en charge les en-têtes liés au chiffrement dans la demande.
+ Lorsque vous utilisez l’API de haut niveau `Transfer-Utility `, vous fournissez les en-têtes propres au chiffrement dans l’objet `TransferUtilityUploadRequest` comme illustré. Pour des exemples de code, consultez [Chargement d’un objet à l’aide du chargement partitionné](mpu-upload-object.md).

  ```
  TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
  {
      FilePath = filePath,
      BucketName = existingBucketName,
      Key = keyName,
      // Provide encryption information.
      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
      ServerSideEncryptionCustomerProvidedKey = base64Key,
  };
  ```
+ Lorsque vous utilisez l’API de bas niveau, vous fournissez des informations de chiffrement dans votre demande de lancement du chargement partitionné. Ces informations de chiffrement doivent être identiques dans les demandes de chargement partitionné qui suivent. Il est toutefois inutile de fournir des en-têtes liés au chiffrement dans votre demande de fin de chargement partitionné. Pour obtenir des exemples, consultez [Utilisation de AWS SDKs (API de bas niveau)](mpu-upload-object.md#mpu-upload-low-level).

  L’exemple suivant concerne un chargement partitionné de niveau inférieur exécutant une copie d’un objet volumineux existant. Dans cet exemple, l’objet à copier est stocké dans Amazon S3 à l’aide d’une clé SSE-C, et vous souhaitez également enregistrer l’objet cible à l’aide d’une clé SSE-C. Dans l’exemple, vous procédez comme suit :
  + Initier une demande de chargement partitionné en fournissant une clé de chiffrement et les informations connexes.
  + Fournir les clés de chiffrement de l’objet source et cible et les informations relatives dans la `CopyPartRequest`.
  + Obtenir la taille de l’objet source à copier en récupérant les métadonnées de l’objet.
  + Charger les objets par lots de 5 Mo.  
**Example**  

  ```
  using Amazon;
  using Amazon.S3;
  using Amazon.S3.Model;
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Security.Cryptography;
  using System.Threading.Tasks;
  
  namespace Amazon.DocSamples.S3
  {
      class SSECLowLevelMPUcopyObjectTest
      {
          private const string existingBucketName = "*** bucket name ***";
          private const string sourceKeyName      = "*** source object key name ***"; 
          private const string targetKeyName      = "*** key name for the target object ***";
          private const string filePath           = @"*** file path ***";
          // Specify your bucket region (an example region is shown).
          private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
          private static IAmazonS3 s3Client;
          static void Main()
          {
              s3Client = new AmazonS3Client(bucketRegion);
              CopyObjClientEncryptionKeyAsync().Wait();
          }
  
          private static async Task CopyObjClientEncryptionKeyAsync()
          {
              Aes aesEncryption = Aes.Create();
              aesEncryption.KeySize = 256;
              aesEncryption.GenerateKey();
              string base64Key = Convert.ToBase64String(aesEncryption.Key);
  
              await CreateSampleObjUsingClientEncryptionKeyAsync(base64Key, s3Client);
  
              await CopyObjectAsync(s3Client, base64Key);
          }
          private static async Task CopyObjectAsync(IAmazonS3 s3Client, string base64Key)
          {
              List<CopyPartResponse> uploadResponses = new List<CopyPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = targetKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key,
              };
  
              InitiateMultipartUploadResponse initResponse =
                  await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
              long firstByte = 0;
              long lastByte = partSize;
  
              try
              {
                  // First find source object size. Because object is stored encrypted with
                  // customer provided key you need to provide encryption information in your request.
                  GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest()
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                      ServerSideEncryptionCustomerProvidedKey = base64Key // " * **source object encryption key ***"
                  };
  
                  GetObjectMetadataResponse getObjectMetadataResponse = await s3Client.GetObjectMetadataAsync(getObjectMetadataRequest);
  
                  long filePosition = 0;
                  for (int i = 1; filePosition < getObjectMetadataResponse.ContentLength; i++)
                  {
                      CopyPartRequest copyPartRequest = new CopyPartRequest
                      {
                          UploadId = initResponse.UploadId,
                          // Source.
                          SourceBucket = existingBucketName,
                          SourceKey = sourceKeyName,
                          // Source object is stored using SSE-C. Provide encryption information.
                          CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          CopySourceServerSideEncryptionCustomerProvidedKey = base64Key, //"***source object encryption key ***",
                          FirstByte = firstByte,
                          // If the last part is smaller then our normal part size then use the remaining size.
                          LastByte = lastByte > getObjectMetadataResponse.ContentLength ?
                              getObjectMetadataResponse.ContentLength - 1 : lastByte,
  
                          // Target.
                          DestinationBucket = existingBucketName,
                          DestinationKey = targetKeyName,
                          PartNumber = i,
                          // Encryption information for the target object.
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
                      uploadResponses.Add(await s3Client.CopyPartAsync(copyPartRequest));
                      filePosition += partSize;
                      firstByte += partSize;
                      lastByte += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId,
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId
                  };
                  s3Client.AbortMultipartUpload(abortMPURequest);
              }
          }
          private static async Task CreateSampleObjUsingClientEncryptionKeyAsync(string base64Key, IAmazonS3 s3Client)
          {
              // List to store upload part responses.
              List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = sourceKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key
              };
  
              InitiateMultipartUploadResponse initResponse =
                 await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long contentLength = new FileInfo(filePath).Length;
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
  
              try
              {
                  long filePosition = 0;
                  for (int i = 1; filePosition < contentLength; i++)
                  {
                      UploadPartRequest uploadRequest = new UploadPartRequest
                      {
                          BucketName = existingBucketName,
                          Key = sourceKeyName,
                          UploadId = initResponse.UploadId,
                          PartNumber = i,
                          PartSize = partSize,
                          FilePosition = filePosition,
                          FilePath = filePath,
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
  
                      // Upload part and add response to our list.
                      uploadResponses.Add(await s3Client.UploadPartAsync(uploadRequest));
  
                      filePosition += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId,
                      //PartETags = new List<PartETag>(uploadResponses)
  
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
  
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId
                  };
                  await s3Client.AbortMultipartUploadAsync(abortMPURequest);
              }
          }
      }
  }
  ```

------

# Blocage ou déblocage du SSE-C pour un compartiment à usage général
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

La plupart des cas d'utilisation modernes d'Amazon S3 n'utilisent plus le chiffrement côté serveur avec des clés fournies par le client (SSE-C) car il n'est pas aussi flexible que le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) ou le chiffrement côté serveur avec des clés KMS (SSE-KMS). AWS L'obligation du SSE-C de fournir la clé de chiffrement chaque fois que vous interagissez avec vos données chiffrées SSE-C rend impossible le partage de votre clé SSE-C avec d'autres utilisateurs, rôles ou AWS services qui lisent les données de vos compartiments S3 afin d'opérer sur vos données.

Pour limiter les types de chiffrement côté serveur que vous pouvez utiliser dans vos compartiments à usage général, vous pouvez choisir de bloquer les demandes d'écriture SSE-C en mettant à jour votre configuration de chiffrement par défaut pour vos compartiments. Cette configuration au niveau du compartiment bloque les demandes de téléchargement d'objets qui spécifient SSE-C. Lorsque le SSE-C est bloqué pour un bucket `PutObject` `CopyObject``PostObject`, toute demande de téléchargement ou de réplication partitionné ou multipartie spécifiant le chiffrement SSE-C sera rejetée avec une erreur HTTP 403. `AccessDenied`

Ce paramètre est un paramètre de l'`PutBucketEncryption`API et peut également être mis à jour à l'aide de la console S3, de la AWS CLI et AWS SDKs, si vous en avez l'`s3:PutEncryptionConfiguration`autorisation.

Les valeurs valides sont les `SSE-C` suivantes : ce qui bloque le chiffrement SSE-C pour le compartiment à usage général et `NONE` qui autorise l'utilisation du SSE-C pour les écritures dans le compartiment.

**Important**  
Comme [annoncé le 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service déploie un nouveau paramètre de sécurité des compartiments par défaut qui désactive automatiquement le chiffrement côté serveur à l'aide de clés fournies par le client (SSE-C) pour tous les nouveaux compartiments à usage général. Pour les compartiments existants ne Comptes AWS contenant aucun objet chiffré SSE-C, Amazon S3 désactivera également le SSE-C pour toutes les nouvelles demandes d'écriture. Dans le cas Comptes AWS de l'utilisation du SSE-C, Amazon S3 ne modifiera la configuration de chiffrement des compartiments sur aucun des compartiments existants de ces comptes. Ce déploiement a débuté le 6 avril 2026 et s'achèvera au cours des prochaines semaines dans 37 AWS régions, dont la AWS Chine et AWS GovCloud les États-Unis.  
Avec ces modifications, les applications nécessitant un chiffrement SSE-C doivent délibérément activer le SSE-C en utilisant l'opération d'[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API après avoir créé un nouveau compartiment. Pour plus d'informations sur cette modification, consultez[FAQ sur le paramètre SSE-C par défaut pour les nouveaux buckets](default-s3-c-encryption-setting-faq.md).

## Permissions
<a name="bucket-encryption-permissions"></a>

Utilisez l'`PutBucketEncryption`API AWS SDKs, la console S3 ou la AWS CLI pour bloquer ou débloquer les types de chiffrement pour un compartiment à usage général. Vous devez disposer des autorisations suivantes :
+ `s3:PutEncryptionConfiguration`

Utilisez l'`GetBucketEncryption`API AWS SDKs, la console S3 ou la AWS CLI pour afficher les types de chiffrement bloqués pour un compartiment à usage général. Vous devez disposer des autorisations suivantes :
+ `s3:GetEncryptionConfiguration`

## Considérations à prendre en compte avant de bloquer le chiffrement SSE-C
<a name="considerations-before-blocking-sse-c"></a>

Une fois que vous avez bloqué SSE-C pour un compartiment, le comportement de chiffrement suivant s'applique :
+ Aucune modification n'a été apportée au chiffrement des objets présents dans le compartiment avant que vous ne bloquiez le chiffrement SSE-C.
+ Après avoir bloqué le chiffrement SSE-C, vous pouvez continuer à faire des HeadObject demandes sur GetObject des objets préexistants chiffrés avec SSE-C à condition de fournir les en-têtes SSE-C requis sur les demandes.
+ Lorsque le SSE-C est bloqué pour un bucket `PutObject` `CopyObject``PostObject`, toutes les demandes de téléchargement partitionné ou partitionné spécifiant le chiffrement SSE-C seront rejetées avec une erreur HTTP 403. `AccessDenied`
+ Si le SSE-C d'un compartiment de destination pour la réplication est bloqué et que les objets source répliqués sont chiffrés avec SSE-C, la réplication échouera avec une erreur HTTP 403. `AccessDenied`

Si vous souhaitez vérifier si vous utilisez le chiffrement SSE-C dans l'un de vos compartiments avant de bloquer ce type de cryptage, vous pouvez utiliser des outils tels que le contrôle de l'accès [AWS CloudTrail](https://aws.amazon.com/cloudtrail/)à vos données. Ce billet de [blog](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/) explique comment auditer les méthodes de chiffrement pour le téléchargement d'objets en temps réel. Vous pouvez également consulter cet [article de Re:Post](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets) pour vous guider dans l'interrogation des rapports d'inventaire S3 afin de voir si vous possédez des objets chiffrés SSE-C.

### Étapes
<a name="block-sse-c-gpb-steps"></a>

Vous pouvez bloquer ou débloquer le chiffrement côté serveur à l'aide de clés fournies par le client (SSE-C) pour un compartiment à usage général en utilisant la console Amazon S3, le () AWS Command Line Interface ,AWS CLI l'API REST Amazon S3 et. AWS SDKs

### Utilisation de la console S3
<a name="block-sse-c-gpb-console"></a>

Pour bloquer ou débloquer le chiffrement SSE-C d'un compartiment à l'aide de la console Amazon S3 :

1. Connectez-vous à la console AWS de gestion et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

1. Dans le volet de navigation de gauche, choisissez des **buckets à usage général**.

1. Sélectionnez le compartiment pour lequel vous souhaitez bloquer le chiffrement SSE-C.

1. Sélectionnez l'onglet **Propriétés** du compartiment.

1. Accédez au panneau des propriétés de **chiffrement par défaut** du compartiment et sélectionnez **Modifier**.

1. Dans la section **Types de chiffrement bloqués**, cochez la case à côté du **chiffrement côté serveur avec des clés fournies par le client (SSE-C) pour bloquer le chiffrement SSE-C ou** décochez cette case pour autoriser le SSE-C.

1. Sélectionnez **Enregistrer les modifications**.

### À l'aide du AWS CLI
<a name="block-sse-c-gpb-cli"></a>

Pour installer la AWS CLI, reportez-vous à la section [Installation de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dans le *guide de AWS Command Line Interface l'utilisateur*.

L'exemple de CLI suivant vous montre comment bloquer ou débloquer le chiffrement SSE-C pour un bucket à usage général à l'aide du. AWS CLI Pour utiliser la commande, remplacez les *user input placeholders* par vos propres informations.

**Demande de blocage du chiffrement SSE-C pour un bucket à usage général :**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**Demande pour activer l'utilisation du chiffrement SSE-C sur un bucket à usage général :**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## En utilisant le AWS SDKs
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

Les exemples suivants vous montrent comment bloquer ou débloquer les écritures de chiffrement SSE-C dans vos compartiments à usage général à l'aide du AWS SDKs

**Exemple : PutBucketEncryption demande définissant la configuration de chiffrement par défaut sur SSE-S3 et bloquant le SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.SSE_C)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

**Exemple : PutBucketEncryption demande définissant la configuration de chiffrement par défaut sur SSE-S3 et débloquant SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.NONE)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

------
#### [ SDK for Python Boto3 ]

**Exemple : PutBucketEncryption demande définissant la configuration de chiffrement par défaut sur SSE-S3 et bloquant le SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**Exemple : PutBucketEncryption demande définissant la configuration de chiffrement par défaut sur SSE-S3 et débloquant SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["NONE"]
            }
        }]
    }
)
```

------

## Utilisation de l'API REST
<a name="bucket-tag-add-api"></a>

Pour plus d'informations sur la prise en charge par l'API REST d'Amazon S3 pour le blocage ou le déblocage du chiffrement SSE-C pour un compartiment à usage général, consultez la section suivante du manuel *Amazon Simple Storage* Service API Reference :
+ [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html)type de données utilisé dans le type de [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html)données des opérations [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)et de [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)l'API.

# FAQ sur le paramètre SSE-C par défaut pour les nouveaux buckets
<a name="default-s3-c-encryption-setting-faq"></a>

**Important**  
Comme [annoncé le 19 novembre 2025,](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/) Amazon Simple Storage Service déploie un nouveau paramètre de sécurité des compartiments par défaut qui désactive automatiquement le chiffrement côté serveur à l'aide de clés fournies par le client (SSE-C) pour tous les nouveaux compartiments à usage général. Pour les compartiments existants ne Comptes AWS contenant aucun objet chiffré SSE-C, Amazon S3 désactivera également le SSE-C pour toutes les nouvelles demandes d'écriture. Dans le cas Comptes AWS de l'utilisation du SSE-C, Amazon S3 ne modifiera la configuration de chiffrement des compartiments sur aucun des compartiments existants de ces comptes. Ce déploiement a débuté le 6 avril 2026 et s'achèvera au cours des prochaines semaines dans 37 AWS régions, dont la AWS Chine et AWS GovCloud les États-Unis.  
Avec ces modifications, les applications nécessitant un chiffrement SSE-C doivent délibérément activer le SSE-C en utilisant l'opération d'[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API après avoir créé un nouveau compartiment.

Les sections suivantes répondent aux questions concernant cette mise à jour.

**1. En avril 2026, le nouveau paramètre SSE-C entrera-t-il en vigueur pour tous les buckets nouvellement créés ?**

Oui. Ce déploiement a débuté le 6 avril 2026 et s'achèvera au cours des prochaines semaines dans 37 AWS régions, dont la AWS Chine et AWS GovCloud les États-Unis.

**Note**  
Une fois le déploiement terminé, les compartiments nouvellement créés dans toutes les AWS régions, à l'exception du Moyen-Orient (Bahreïn) et du Moyen-Orient (Émirats arabes unis), SSE-C seront désactivés par défaut.

**2. Combien de temps faudra-t-il avant que ce déploiement ne couvre toutes les AWS régions ?**

Le déploiement a débuté le 6 avril 2026 et se terminera dans quelques semaines.

**3. Comment saurai-je que la mise à jour est terminée ?**

Vous pouvez facilement déterminer si la modification est terminée dans votre AWS région en créant un nouveau compartiment et en appelant l'opération [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)API pour déterminer si le chiffrement SSE-C est désactivé. Une fois la mise à jour terminée, le chiffrement SSE-C sera automatiquement désactivé par défaut pour tous les nouveaux compartiments à usage général. Vous pouvez ajuster ces paramètres après avoir créé votre compartiment S3 en appelant l'opération [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API.

**4. Amazon S3 mettra-t-il à jour mes configurations de compartiment existantes ?**

Si votre AWS compte ne contient aucun objet chiffré SSE-C, le chiffrement SSE-C AWS sera désactivé sur tous vos buckets existants. Si l'un des compartiments de votre AWS compte contient des objets chiffrés SSE-C, la configuration des compartiments de ce compte ne AWS sera modifiée. Une fois le `CreateBucket` changement effectué pour votre AWS région, le nouveau paramètre par défaut s'appliquera à tous les nouveaux compartiments à usage général. 

 **5. Puis-je désactiver le chiffrement SSE-C pour mes compartiments avant la fin de la mise à jour ?** 

Oui. Vous pouvez désactiver le chiffrement SSE-C pour n'importe quel compartiment en appelant l'opération [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)API et en spécifiant le nouvel `BlockedEncryptionTypes` en-tête. 

**6. Puis-je utiliser le SSE-C pour chiffrer les données de mes nouveaux compartiments ?**

Oui. La plupart des cas d'utilisation modernes d'Amazon S3 n'utilisent plus le SSE-C car il n'est pas aussi flexible que le chiffrement côté serveur avec les clés gérées par Amazon S3 (SSE-S3) ou le chiffrement côté serveur avec des clés KMS (SSE-KMS). AWS Si vous devez utiliser le chiffrement SSE-C dans un nouveau compartiment, vous pouvez créer le nouveau compartiment, puis activer l'utilisation du chiffrement SSE-C dans une demande distincte. `PutBucketEncryption`

 **Exemple**

```
aws s3api create-bucket \  
bucket amzn-s3-demo-bucket \ 
region us-east-1 \ 
  
aws s3api put-bucket-encryption \  
-- bucket amzn-s3-demo-bucket \
-- server-side-encryption-configuration \
'{ \Rules\: [{   
   {   
   \ApplyServerSideEncryptionByDefault\: {   
     \SSEAlgorithm\: \AES256\,  
    },   
   \BlockedEncryptionTypes\: [  
     \EncryptionType\:\NONE\]   
   }   
   }]   
}'
```

**Note**  
Vous devez être `s3:PutEncryptionConfiguration` autorisé à appeler l'`PutBucketEncryption`API. 

**7. Comment le blocage du SSE-C affecte-t-il les demandes adressées à mon bucket ?**

Lorsque le SSE-C est bloqué pour un bucket `PutObject` `CopyObject``PostObject`, toute demande de téléchargement ou de réplication partitionné ou multipartie spécifiant le chiffrement SSE-C sera rejetée avec une erreur HTTP 403. `AccessDenied` 