Configuration et surveillance du chiffrement par défaut pour les compartiments de répertoires - Amazon Simple Storage Service

Configuration et surveillance du chiffrement par défaut pour les compartiments de répertoires

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 de plus de contrôle sur vos clés de chiffrement, notamment pour gérer la rotation des clés et l’octroi de stratégies 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).

Note
  • Nous recommandons que le chiffrement par défaut du compartiment utilise la configuration de chiffrement souhaitée et que vous ne remplaciez pas le chiffrement par défaut du compartiment dans vos demandes CreateSession ni dans vos demandes d’objets PUT. Les nouveaux objets seront ensuite automatiquement chiffrés avec les paramètres de chiffrement souhaités. Pour plus d’informations sur les comportements de remplacement du chiffrement dans les compartiments de répertoires, consultez Spécification du chiffrement côté serveur avec AWS KMS pour les nouveaux chargements d’objets.

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

  • Lorsque vous définissez le chiffrement SSE-KMS par défaut pour les compartiments, les clés de compartiment S3 sont toujours activées pour les opérations GET et PUT dans un compartiment de répertoires et ne peuvent pas être désactivées. Les clés de compartiment S3 ne sont pas prises en charge lorsque vous copiez des objets chiffrés avec SSE-KMS depuis des compartiments à usage général vers des compartiments de répertoires, depuis des compartiments de répertoires vers des compartiments à usage général ou entre des compartiments de répertoires, par le biais de CopyObject, d’UploadPartCopy, de l’opération Copy dans Batch Operations ou des tâches import. Dans ce cas, Amazon S3 appelle AWS KMS chaque fois qu’une demande de copie est faite par rapport à un objet chiffré KMS. Pour plus d’informations sur la façon dont les clés de compartiment S3 réduisent les coûts des demandes AWS KMS, consultez Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3.

  • Lorsque vous spécifiez une clé AWS KMS gérée par le client pour le chiffrement dans votre compartiment de répertoires, utilisez uniquement l’ID ou l’ARN de la clé. Le format de l’alias de la clé KMS n’est pas pris en charge.

  • Le chiffrement double couche côté serveur avec des clés AWS KMS (DSSE-KMS) et le chiffrement côté serveur avec des clés fournies par le client (SSE-C) ne sont pas pris en charge pour le chiffrement par défaut dans les compartiments de répertoires.

Pour plus d’informations sur la configuration du chiffrement par défaut, consultez Configuration du chiffrement par défaut.

Pour en savoir plus sur les autorisations nécessaires pour le chiffrement par défaut, consultez PutBucketEncryption dans la documentation de référence de l’API Amazon Simple Storage Service.

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

Pour configurer le chiffrement par défaut sur un compartiment Amazon S3
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l’adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation de gauche, choisissez Compartiments.

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

  4. Choisissez l’onglet Propriétés.

  5. Dans Paramètres de chiffrement côté serveur, les compartiments de répertoires utilisent le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3).

  6. Sélectionnez Save Changes.

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. Pour plus d’informations sur l’utilisation de la AWS CLI pour configurer le chiffrement par défaut, consultez put-bucket-cryptage.

Exemple — 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. Pour utiliser cette commande, remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

aws s3api put-bucket-encryption --bucket bucket-base-name--zone-id--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256" } } ] }'
Exemple — 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. Pour utiliser cette commande, remplacez les espaces réservés à la saisie utilisateur par vos propres informations.

aws s3api put-bucket-encryption --bucket bucket-base-name--zone-id--x-s3 --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "KMS-Key-ARN" }, "BucketKeyEnabled": true } ] }'

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

Pour plus d’informations, veuillez consulter PutBucketEncryption dans la Référence des API Amazon Simple Storage Service.

Lorsque vous utilisez les kits AWS SDK, vous pouvez demander à Amazon S3 d’utiliser AWS KMS keys pour le chiffrement côté serveur. Les exemples suivants issus des kits AWS SDK pour Java et .NET définissent la configuration de chiffrement par défaut d’un compartiment de répertoires avec SSE-KMS et une clé de compartiment S3. Pour plus d’informations sur l’utilisation d’autres kits SDK, consultez Exemples de code et de bibliothèques dans le centre pour développeur AWS.

Important

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

Java

Avec le kit AWS SDK for Java 2.x, vous pouvez demander à Amazon S3 d’utiliser une AWS KMS key à l’aide de la méthode applyServerSideEncryptionByDefault pour spécifier la configuration de chiffrement par défaut de votre compartiment de répertoires pour le chiffrement des données avec SSE-KMS. Vous créez une clé KMS symétrique de chiffrement et la spécifier dans la demande.

import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.PutBucketEncryptionRequest; import software.amazon.awssdk.services.s3.model.ServerSideEncryption; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionByDefault; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionConfiguration; import software.amazon.awssdk.services.s3.model.ServerSideEncryptionRule; public class Main { public static void main(String[] args) { S3Client s3 = S3Client.create(); String bucketName = "bucket-base-name--zoneid--x-s3"; String kmsKeyId = "your-kms-customer-managed-key-id"; // AWS managed KMS keys aren't supported. Only customer-managed keys are supported. ServerSideEncryptionByDefault serverSideEncryptionByDefault = ServerSideEncryptionByDefault.builder() .sseAlgorithm(ServerSideEncryption.AWS_KMS) .kmsMasterKeyID(kmsKeyId) .build(); // The bucketKeyEnabled field is enforced to be true. ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder() .bucketKeyEnabled(true) .applyServerSideEncryptionByDefault(serverSideEncryptionByDefault) .build(); ServerSideEncryptionConfiguration serverSideEncryptionConfiguration = ServerSideEncryptionConfiguration.builder() .rules(rule) .build(); PutBucketEncryptionRequest putRequest = PutBucketEncryptionRequest.builder() .bucket(bucketName) .serverSideEncryptionConfiguration(serverSideEncryptionConfiguration) .build(); s3.putBucketEncryption(putRequest); } }

Pour en savoir plus sur la création des clés gérées par le client, consultez Programmation de l’API AWS KMS dans le guide du développeur AWS Key Management Service.

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.

.NET

Avec le kit AWS SDK pour .NET, vous pouvez demander à Amazon S3 d’utiliser une AWS KMS key à l’aide de la propriété ServerSideEncryptionByDefault pour spécifier la configuration de chiffrement par défaut de votre compartiment de répertoires pour le chiffrement des données avec SSE-KMS. Vous créez une clé symétrique de chiffrement gérée par le client et la spécifier dans la demande.

// Set the bucket server side encryption to use AWSKMS with a customer-managed key id. // bucketName: Name of the directory bucket. "bucket-base-name--zonsid--x-s3" // kmsKeyId: The Id of the customer managed KMS Key. "your-kms-customer-managed-key-id" // Returns True if successful. public static async Task<bool> SetBucketServerSideEncryption(string bucketName, string kmsKeyId) { var serverSideEncryptionByDefault = new ServerSideEncryptionConfiguration { ServerSideEncryptionRules = new List<ServerSideEncryptionRule> { new ServerSideEncryptionRule { ServerSideEncryptionByDefault = new ServerSideEncryptionByDefault { ServerSideEncryptionAlgorithm = ServerSideEncryptionMethod.AWSKMS, ServerSideEncryptionKeyManagementServiceKeyId = kmsKeyId } } } }; try { var encryptionResponse =await _s3Client.PutBucketEncryptionAsync(new PutBucketEncryptionRequest { BucketName = bucketName, ServerSideEncryptionConfiguration = serverSideEncryptionByDefault, }); return encryptionResponse.HttpStatusCode == HttpStatusCode.OK; } catch (AmazonS3Exception ex) { Console.WriteLine(ex.ErrorCode == "AccessDenied" ? $"This account does not have permission to set encryption on {bucketName}, please try again." : $"Unable to set bucket encryption for bucket {bucketName}, {ex.Message}"); } return false; }

Pour en savoir plus sur la création des clés gérées par le client, consultez Programmation de l’API AWS KMS dans le guide du développeur AWS Key Management Service.

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.

Surveillance du chiffrement par défaut pour les compartiments de répertoires avec l’AWS CloudTrail

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 API suivants sont utilisés dans les journaux CloudTrail :

  • PutBucketEncryption

  • GetBucketEncryption

  • DeleteBucketEncryption

Note
  • EventBridge n’est pas pris en charge dans les compartiments de répertoires.

  • Le chiffrement double couche côté serveur avec des clés AWS Key Management Service (AWS KMS) (DSSE-KMS) et le chiffrement côté serveur avec des clés fournies par le client (SSE-C) ne sont pas pris en charge dans les compartiments de répertoires.

Pour plus d’informations sur la surveillance du chiffrement par défaut avec AWS CloudTrail, consultez Surveillance du chiffrement par défaut avec AWS CloudTrail et Amazon EventBridge.