Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (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.

Utilisation du chiffrement côté serveur à l'aide de AWS KMS clés (SSE-KMS)

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 AWS 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 les AWS SDK AWS Command Line Interface et. Pour plus d'informations, consultez la FAQ sur le chiffrement par défaut.

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

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. De plus, lorsque le SSE-KMS est demandé pour l'objet, la somme de contrôle S3 (dans le cadre des métadonnées de l'objet) est stockée sous forme cryptée. Pour plus d'informations sur le total de contrôle, consultez Vérification de l'intégrité des objets.

Si vous utilisez des clés KMS, vous pouvez les utiliser AWS KMS via l'API AWS Management Consoleou l'AWS KMS API pour effectuer les opérations suivantes :

  • Créez, visualisez, modifiez, surveillez, activez ou désactivez, faites tourner et planifiez 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 leur utilisation pour prouver qu'elles sont utilisées correctement. L'audit est pris en charge par l'API AWS KMS, mais pas par l'application AWS KMSAWS Management Console.

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 la section Concepts AWS KMS key dans le Guide du développeur AWS Key Management Service et Tarification AWS KMS.

Autorisations

Pour télécharger un objet chiffré avec un AWS KMS key vers Amazon S3, vous devez kms:GenerateDataKey disposer d'autorisations sur la clé. Pour télécharger un objet chiffré avec un AWS KMS key, vous devez kms:Decrypt disposer d'autorisations. Pour plus d'informations sur les AWS KMS autorisations requises pour les téléchargements partitionnés, consultez. API de chargement partitionné et autorisations

AWS KMS keys

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é gérée par le client 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 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 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 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 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 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 la section External key stores (Magasins de clés externes) du Guide du développeur AWS Key Management Service .

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 en texte brut et une copie de la clé chiffrée sous la clé KMS spécifiée.

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

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

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

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

  3. 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 dans le Guide du développeur AWS Key Management Service .

Pour identifier les requêtes qui spécifient SSE-KMS, vous pouvez utiliser les métriques All SSE-KMS requests (Toutes les requêtes SSE-KMS) et % all SSE-KMS requests (% de toutes les requêtes 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. Pour plus d’informations, consultez Évaluer l’activité et l’utilisation de votre stockage avec S3 Storage Lens. Pour obtenir la liste complète des métriques, consultez le Glossaire des métriques S3 Storage Lens.

Clés de compartiment Amazon S3

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

Exigence du chiffrement côté serveur

Pour exiger le chiffrement côté serveur de tous les objets d'un compartiment Simple Storage Service (Amazon S3) particulier, vous pouvez utiliser une politique de compartiment. Par exemple, la politique 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.

{ "Version":"2012-10-17", "Id":"PutObjectPolicy", "Statement":[{ "Sid":"DenyObjectsThatAreNotSSEKMS", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-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. AWS Identity and Access Management 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. Si l'en-tête n'est pas présent dans la demande, Amazon S3 suppose que vous souhaitez utiliser la 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 la section Clés de condition pour Amazon S3 dans la référence d'autorisation de service.

Contexte de chiffrement

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 (AAD) pour prendre en charge le chiffrement authentifié. Pour plus d'informations sur le contexte de chiffrement, consultez la section Contexte de chiffrement du 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.

    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-contexten-tête dans une PutObject requête s3 :. 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:::DOC-EXAMPLE-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:::DOC-EXAMPLE-BUCKET1" }

Envoi de demandes pour des objets AWS KMS chiffrés

  • 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) et Processus de signature Signature version 4.

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