Spécification du chiffrement côté serveur avec AWS KMS (SSE-) KMS - Amazon Simple Storage Service

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

Spécification du chiffrement côté serveur avec AWS KMS (SSE-) KMS

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 d'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 PUT S3, soit définir la configuration de 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 AWS Key Management Service (AWS KMS) clés (-), le chiffrement double couche côté serveur avec des clés (SSE-KMS) ou le chiffrement côté serveur avec des AWS KMS clés fournies par le client (DSSE-CKMS). SSE 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.

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

Vous pouvez le spécifier SSE KMS en utilisant la console Amazon S3 AWS SDKs, REST API les opérations et le 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 la section Utilisation de clés multirégionales dans le Guide du AWS Key Management Service développeur.

Note

Si vous souhaitez utiliser une KMS clé appartenant à un autre compte, vous devez être autorisé à l'utiliser. Pour plus d'informations sur les autorisations entre comptes pour les KMS clés, consultez la section Création de KMS clés utilisables par d'autres comptes dans le guide du AWS Key Management Service développeur.

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 CLIou AWS SDKspour modifier le chiffrement d'un objet.

  • Pour obtenir la liste des autorisations supplémentaires requises pour modifier le chiffrement d'un objet, consultezAutorisations requises pour les API opérations Amazon S3. Pour des exemples de politiques qui accordent cette autorisation, voirExemples de politiques basées sur l'identité pour Amazon S3.

  • 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/.

  2. Dans le volet de navigation, choisissez Buckets, puis sélectionnez l'onglet Buckets à usage général. Accédez au compartiment ou au dossier Amazon S3 qui contient les objets que vous souhaitez modifier.

  3. Cochez la case correspondant aux objets que vous souhaitez modifier.

  4. Dans le menu Actions, choisissez Modifier le chiffrement côté serveur dans la liste des options qui s'affiche.

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

  6. 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'KMSoption SSE - pour votre configuration de chiffrement par défaut, vous êtes soumis aux quotas de demandes par seconde (RPS) 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 dans le Guide du développeur AWS Key Management Service .

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

    2. Sous AWS KMS clé, effectuez l'une des opérations suivantes pour choisir votre KMS clé :

      • Pour choisir parmi une liste de KMS clés disponibles, choisissez Choisir parmi votre AWS KMS keys, puis choisissez votre KMSclé 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 dans le Guide du développeur AWS Key Management Service .

      • Pour saisir la KMS cléARN, choisissez Entrée AWS KMS key ARN, puis entrez votre KMS clé ARN 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 dans le Guide du AWS Key Management Service développeur.

      Important

      Vous ne pouvez utiliser que KMS les clés disponibles dans le même compartiment Région AWS que le bucket. La console Amazon S3 répertorie uniquement les 100 premières KMS clés de la même région que le compartiment. Pour utiliser une KMS clé qui n'est pas répertoriée, vous devez saisir votre KMS cléARN. Si vous souhaitez utiliser une KMS clé appartenant à un autre compte, vous devez d'abord être autorisé à utiliser la clé, puis vous devez la KMS saisirARN.

      Amazon S3 ne prend en charge que les KMS clés de chiffrement symétriques, et non les clés asymétriquesKMS. Pour plus d'informations, consultez la section Identification des KMS clés symétriques et asymétriques dans le manuel du AWS Key Management Service développeur.

  8. Sous Paramètres de copie supplémentaires, choisissez si vous souhaitez copier les paramètres source, Ne pas spécifier de paramètres ou Spécifier les paramètres. L'option par défaut consiste à copier les paramètres de la source. Si vous souhaitez uniquement copier l'objet sans les attributs des paramètres source, choisissez Ne pas spécifier les paramètres. Choisissez Spécifier les paramètres pour définir les paramètres de classe de stockageACLs, les balises d'objet, les métadonnées, le chiffrement côté serveur et les sommes de contrôle supplémentaires.

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

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 côté serveur avec 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 votre objet est stocké à l'aide de SSE - KMS en renvoyant l'en-tête de réponsex-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

RESTAPIOpérations Amazon S3 qui prennent en charge SSE : KMS

Les REST API opérations suivantes acceptent les en-têtes de x-amz-server-side-encryption-context demande x-amz-server-side-encryptionx-amz-server-side-encryption-aws-kms-key-id, et.

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

  • CopyObject – Lorsque vous copiez un objet, vous disposez d'un objet source et d'un objet cible. Lorsque vous transmettez SSE KMS des en-têtes à l'CopyObjectopération, ils ne sont appliqués qu'à 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 le chiffrement côté serveur.

  • POST Object— Lorsque vous utilisez une POST opération pour télécharger un objet, au lieu des en-têtes de demande, vous fournissez les mêmes informations dans les champs du formulaire.

  • CreateMultipartUpload— Lorsque vous chargez des objets volumineux à l'aide de l'APIopération de téléchargement partitionné, vous pouvez spécifier ces en-têtes. Vous spécifiez ces en-têtes dans la CreateMultipartUpload demande.

Les en-têtes de réponse des REST API opérations suivantes renvoient l'x-amz-server-side-encryptionen-tête lorsqu'un objet est stocké à l'aide du chiffrement côté serveur.

Important
  • Toutes GET les PUT demandes relatives à un objet protégé par AWS KMS échouent si vous ne les faites pas à l'aide de Secure Sockets Layer (SSL), de Transport Layer Security (TLS) ou de Signature Version 4.

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

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

Si vous le spécifiezx-amz-server-side-encryption:aws:kms, Amazon S3 API prend en charge un contexte de chiffrement avec l'x-amz-server-side-encryption-contexten-tête. 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'objet ou le bucket Amazon Resource Name (ARN) comme paire de contextes de chiffrement. Si vous utilisez SSE - KMS sans activer de clé de compartiment S3, vous utilisez l'objet ARN 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 le compartiment ARN 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 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. Pour des informations générales sur le contexte de chiffrement, consultez la section Concepts AWS Key Management Service - Contexte de chiffrement du Guide du développeur AWS Key Management Service .

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

Vous pouvez utiliser l'en-tête x-amz-server-side-encryption-aws-kms-key-id pour spécifier l'ID de la clé gérée par le client utilisée pour protéger les données. 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é de chiffrement symétrique. KMS Amazon S3 ne prend en charge que les KMS clés de chiffrement symétriques. Pour plus d'informations sur ces clés, consultez la section KMSClés de chiffrement symétriques dans le manuel du AWS Key Management Service développeur.

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

Vous pouvez utiliser l'en-tête de x-amz-server-side-encryption-aws-bucket-key-enabled demande 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 de SSE : KMS avec les clés de compartiment Amazon S3.

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 .

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 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 COPY opérations PUT ou 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 Réduire le coût de SSE - KMS avec les 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 l'utiliser SSE en le KMS copiant de nouveau sur 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

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 le AWS SDKs pour Java et. NET. Pour plus d'informations sur les autresSDKs, consultez la section Exemples de code et de bibliothèques 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é de chiffrement symétrique. KMS Amazon S3 ne prend en charge que les KMS clés de chiffrement symétriques. Pour plus d'informations sur ces clés, consultez la section KMSClés de chiffrement symétriques dans le manuel du AWS Key Management Service développeur.

Opération CopyObject

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 Copier, déplacer et renommer des objets.

Opération PUT

Java

Lorsque vous chargez un objet à l'aide du AWS SDK for 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 avec des AWS KMS clés (SSE-) KMS. Vous pouvez éventuellement créer une KMS clé de chiffrement symétrique et la spécifier dans la demande, comme illustré dans 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 AWS KMS API section Programmation du 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.

.NET

Lorsque vous chargez un objet à l'aide du AWS SDK for .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 avec des AWS KMS clés (SSE-) KMS. Vous pouvez éventuellement créer votre propre clé de chiffrement symétrique gérée par le client et la spécifier dans la demande, comme illustré dans 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 AWS KMS API section Programmation du 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.

Présigné URLs

Java

Lorsque vous créez un document présigné URL pour un objet chiffré avec un AWS KMS key, vous devez spécifier explicitement la version 4 de la signature, comme indiqué dans 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.

.NET

Lorsque vous créez un document présigné URL pour un objet chiffré avec un AWS KMS key, vous devez spécifier explicitement la version 4 de la signature, comme indiqué dans l'exemple suivant :

AWSConfigs.S3Config.UseSignatureVersion4 = true;

Pour obtenir un exemple de code, consultez Partage d'objets avec présigné URLs.