Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS)
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 seront automatiquement chiffrés, sans coût supplémentaire et sans impact sur les performances. Actuellement, l'état du chiffrement automatique pour la configuration de chiffrement par défaut du compartiment S3 et pour les nouveaux chargements d'objets est disponible dans les journaux AWS CloudTrail, dans S3 Inventory et dans S3 Storage Lens. Au cours des prochaines semaines, l'état de chiffrement automatique sera également déployé dans la console Amazon S3 et en tant qu'en-tête de réponse supplémentaire de l'API Amazon S3 dans les kits SDK AWS Command Line Interface et AWS. Lorsque cette mise à jour sera complète dans toutes les Régions AWS, nous mettrons à jour la documentation. Pour plus d'informations, consultez la FAQ sur le chiffrement par défaut.
Lorsque vous créez un objet, vous pouvez spécifier l'utilisation du chiffrement côté serveur avec les clés AWS Key Management Service (AWS KMS) pour chiffrer vos données. Ce chiffrement est connu sous le nom de SSE-KMS. Vous pouvez appliquer le chiffrement lorsque vous chargez un nouvel objet ou copiez un objet existant.
Vous pouvez spécifier SSE-KMS à l'aide de la console Amazon S3, de l'API REST, de kits SDK AWS et de l'AWS Command Line Interface (AWS CLI). Pour plus d'informations, consultez les rubriques suivantes.
Vous pouvez utiliser une clé AWS KMS keys multi-régions 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 en savoir plus, consultez la section Utilisation des clés multi-régions dans le Guide du développeur AWS Key Management Service.
Cette rubrique décrit comment définir ou modifier le type de chiffrement d'un objet à l'aide de la console 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
-
Connectez-vous à la AWS Management Console et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Dans la liste Buckets (Compartiments), choisissez le nom du compartiment qui contient l'objet.
-
Dans la liste Objets, choisissez le nom de l'objet pour lequel vous souhaitez ajouter ou modifier le chiffrement.
La Présentation de l'objet s'ouvre et affiche les propriétés de votre objet.
-
Sous Paramètres de chiffrement côté serveur, choisissez Modifier.
La page Modifier le chiffrement côté serveur s'ouvre
-
Pour activer le chiffrement côté serveur pour votre objet, sous Chiffrement côté serveur, choisissez Activer.
-
Sous Encryption key type (Type de clé de chiffrement), choisissez AWS Key Management Service key (SSE-KMS).
Important Si vous utilisez l'option AWS KMS pour votre configuration de chiffrement par défaut, vous êtes soumis aux limites RPS (requêtes par seconde) de AWS KMS. Pour plus d'informations sur les limites d'AWS KMS et sur la manière de demander une augmentation de limite, consultez Limites d'AWS KMS.
-
Sous AWS KMS key (clé KMS), choisissez l'une des options suivantes :
-
Clé gérée par AWS (aws/s3)
-
Choisissez parmi vos AWS KMS keys, puis choisissez votre clé KMS.
-
Saisissez l'ARN de la clé principale KMS, puis saisissez l'Amazon Resource Name (ARN) de votre clé AWS KMS.
Important Vous pouvez uniquement utiliser des AWS KMS keys activées dans la même Région AWS que le compartiment. Lorsque vous choisissez Choisissez parmi vos AWS KMS keys, la console S3 répertorie uniquement 100 clés KMS par région. Si vous avez plus de 100 clés KMS dans la même Région, vous pourrez uniquement afficher les 100 premières clés KMS dans la console S3. Pour utiliser une clé KMS qui n'est pas répertoriée dans la console, choisissez ARN KMS personnalisé, puis saisissez l'ARN de la clé KMS.
Lorsque vous utilisez une AWS KMS key pour le chiffrement côté serveur dans Simple Storage Service (Amazon S3), vous devez choisir une clé KMS activée dans la même Région que votre compartiment. En outre, Amazon S3 ne prend en charge que les clés KMS à chiffrement symétrique. Pour plus d'informations sur ces clés, consultez Clés KMS de chiffrement symétriques dans le Guide du développeur AWS Key Management Service.
Pour plus d'informations sur la création d'une AWS KMS key, consultez la section Création de clés du Guide du développeur AWS Key Management Service. Pour de plus amples informations sur l'utilisation de AWS KMS avec Amazon S3, consultez Utilisation du chiffrement côté serveur avec AWS Key Management Service (SSE-KMS).
-
Sélectionnez Save Changes (Enregistrer les modifications).
Cette action applique le chiffrement à tous les objets spécifiés. Lors du chiffrement de dossiers, attendez la fin de l'opération d'enregistrement pour ajouter de nouveaux objets au dossier.
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 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
Rubriques
Opérations d'API REST Amazon S3 prenant en charge SSE-KMS
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
.
-
PUT Object – Lorsque vous chargez des données avec l'opération d'API PUT, vous pouvez spécifier ces en-êtes de demande.
-
COPY Object – Lorsque vous copiez un objet, vous avez à la fois un objet source et un objet cible. Lorsque vous transmettez les en-têtes des SSE-KMS avec l'opération COPY, ils sont appliqués uniquement à l'objet cible. Lors de la copie d'un objet existant, que l'objet source soit chiffré ou non, l'objet cible n'est pas chiffré sauf si vous demandez explicitement un chiffrement côté serveur.
-
POST Object – Lorsque vous utilisez une opération POST pour charger un objet, à la place des en-têtes de demande, vous fournissez les mêmes informations dans les champs du formulaire.
-
Create Multipart Upload – Lorsque vous chargez des objets volumineux avec l'API de chargement partitionné, vous pouvez spécifier ces en-têtes. Vous spécifiez ces en-têtes dans la demande de lancement.
Les en-têtes de réponse des opréations 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.
-
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, le protocole TLS (Transport Layer Security) ou Signature Version 4.
-
Si votre objet utilise des SSE-KMS, n'envoyez pas d'en-têtes de demande de chiffrement pour les demandes
GET
et les demandesHEAD
. Dans le cas contraire, vous obtiendrez une erreurHTTP 400 BadRequest
.
Contexte de chiffrement (x-amz-server-side-encryption-context)
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:::
. 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, object_ARN
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 et utilisée pour protéger les données. Si vous spécifiez x-amz-server-side-encryption:aws:kms
mais que vous ne fournissez pas x-amz-server-side-encryption-aws-kms-key-id
, Simple Storage Service (Amazon S3) utilisera la clé gérée par AWS 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.
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.
Clés de compartiment S3 (x-amz-server-side-encryption-aws-bucket-key-enabled)
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 peuvent réduire le coût de vos demandes AWS KMS 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.
Si vous spécifiez x-amz-server-side-encryption:aws:kms
, mais que vous ne fournissez pas 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 de l'objet à l'aide d'opérations par lot, de l'API REST, des kits SDK AWS ou d'AWS CLI.
Lorsque vous chargez un nouvel objet ou copiez un objet existant, vous pouvez spécifier l'utilisation du chiffrement côté serveur avec des clés AWS KMS pour chiffrer vos données. Pour ce faire, ajoutez l'en-tête --server-side-encryption aws:kms
à la demande. Utilisez --ssekms-key-id
pour ajouter la clé AWS KMS gérée par le client que vous avez créée. Si vous spécifiez example-key-id
--server-side-encryption
aws:kms
, mais ne fournissez pas d'ID de clé AWS KMS, Amazon S3 utilisera une clé gérée par AWS.
aws s3api put-object --bucket
DOC-EXAMPLE-BUCKET
--keyexample-object-key
--server-side-encryption aws:kms -–ssekms-key-idexample-key-id
--bodyfilepath
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 le coût de vos demandes AWS KMS 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 (Réduire le coût de SSE-KMS à l'aide des clés de compartiment Amazon S3).
aws s3api put-object --bucket
DOC-EXAMPLE-BUCKET
--keyexample-object-key
--server-side-encryption aws:kms --bucket-key-enabled --bodyfilepath
Vous pouvez chiffrer un objet non chiffré pour utiliser SSE-KMS en recopiant l'objet en place.
aws s3api copy-object --bucket
DOC-EXAMPLE-BUCKET
--keyexample-object-key
--bodyfilepath
--bucketDOC-EXAMPLE-BUCKET
--keyexample-object-key
--sse aws:kms --sse-kms-key-idexample-key-id
--bodyfilepath
Lorsque vous utilisez les kits SDK AWS, vous pouvez demander à Amazon S3 d'utiliser AWS KMS keys. Cette section fournit des exemples d'utilisation des kits SDK AWS pour Java et .NET. Pour de plus amples informations sur les autres kits SDK, veuillez consulter Exemples de code et de bibliothèques
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.
Opération Copy
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'objets.