Utilisation du chiffrement côté serveur avec des 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 avec des AWS KMS clés (SSE-) KMS

Important

Amazon S3 applique désormais le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3) comme niveau de chiffrement de base 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 de 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 API réponse Amazon S3 supplémentaire dans le AWS Command Line Interface et AWS SDKs. Pour plus d'informations, consultez la section Chiffrement par défaut FAQ.

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 des clés gérées par Amazon S3 (SSE-S3) pour les téléchargements de nouveaux objets.

Sauf indication contraire, les compartiments utilisent SSE -S3 par défaut pour chiffrer les objets. Cependant, vous pouvez choisir de configurer les buckets pour utiliser le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS) à la place. 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 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 KMS des touches, vous pouvez AWS KMS utiliser le AWS Management Consoleou AWS KMS APIpour effectuer les opérations suivantes :

  • Créez, visualisez, modifiez, surveillez, activez ou désactivez, faites pivoter et planifiez la suppression des KMS clés de manière centralisée.

  • Définissez les politiques qui contrôlent comment et par qui KMS les clés peuvent être utilisées.

  • Auditer leur utilisation pour prouver qu'elles sont utilisées correctement. L'audit est pris en charge par le AWS KMS API, mais pas par le 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 KMS clés pour protéger vos données dans les compartiments Amazon S3. Lorsque vous utilisez SSE KMS le chiffrement 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. Téléchargement en plusieurs parties API et autorisations

Important

Examinez attentivement les autorisations accordées dans vos politiques KMS clés. Limitez toujours les autorisations relatives aux politiques KMS clés gérées par le client uniquement aux IAM principaux et aux AWS services qui doivent accéder à l'action clé correspondante AWS KMS . Pour plus d'informations, consultez la section Politiques clés dans AWS KMS.

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 des enveloppes consiste à chiffrer vos données en texte brut à l'aide d'une clé de données, puis à chiffrer cette clé de données à l'aide d'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 crée automatiquement un Clé gérée par AWS in Compte AWS lorsque vous ajoutez un objet chiffré avec SSE - dans un compartiment KMS pour la première fois. Par défaut, Amazon S3 utilise cette KMS clé pour SSE -KMS.

Note

Les objets chiffrés à l'aide KMS de SSE - with ne Clés gérées par AWSpeuvent pas être partagés entre comptes. Si vous devez partager SSE des KMS données 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é de chiffrement symétrique gérée par le client avant de configurer SSE -KMS. Ensuite, lorsque vous configurez SSE - KMS pour votre compartiment, spécifiez la clé gérée par le client existante. Pour plus d'informations sur les clés de chiffrement symétriques, consultez la section KMSClés de chiffrement symétriques dans le manuel du AWS Key Management Service développeur.

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 KMS clés standard, vous êtes tenu de garantir la disponibilité et la durabilité de votre matériel 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 .

Utilisation SSE du KMS chiffrement pour les opérations entre comptes

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 en utilisant des principes AWS Identity and Access Management (IAM) identiques Compte AWS à ceux de votre KMS clé, 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 KMS clé gérée par le client, nous vous recommandons d'utiliser une KMS clé entièrement qualifiéeARN. Si vous utilisez plutôt un alias de KMS clé, AWS KMS la clé est résolue dans le compte du demandeur. Ce comportement peut entraîner le chiffrement des données à l'aide d'une KMS clé appartenant 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 plus d'informations, voir Autoriser les utilisateurs de clés à utiliser une KMS clé pour des opérations cryptographiques dans le Guide du AWS Key Management Service développeur.

Pour plus d'informations sur les circonstances dans lesquelles utiliser des clés gérées par le client et des KMS clés 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 ?

SSE- flux KMS de travail de chiffrement

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

  2. AWS KMS génère une clé de données, la chiffre sous la KMS clé 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 KMS clé 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é 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.

Audit SSE - KMS chiffrement

Pour identifier les demandes qui spécifient SSE -KMS, vous pouvez utiliser les métriques All SSE - KMS requests et % all SSE - KMS requests 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 SSE nombre de compartiments KMS activés et le nombre de compartiments KMS activés en % SSE pour comprendre le nombre de compartiments (SSE-KMS) pour le chiffrement des compartiments par défaut. 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.

Pour vérifier l'utilisation de vos AWS KMS clés pour vos SSE données KMS cryptées, vous pouvez utiliser AWS CloudTrail des journaux. Vous pouvez obtenir un aperçu de vos opérations cryptographiques, telles que GenerateDataKey et Decrypt. CloudTrail prend en charge de nombreuses valeurs d'attribut 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

Lorsque vous configurez le chiffrement côté serveur à l'aide de AWS KMS (SSE-KMS), vous pouvez configurer vos compartiments pour qu'ils utilisent 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 pour utiliser une clé de compartiment S3 pour SSE : KMS sur de nouveaux objets, AWS KMS génère une clé au niveau du compartiment qui est utilisée pour créer des clés de données uniques 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 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 de 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 refuse l'autorisation upload object (s3:PutObject) à tout le monde si la demande n'inclut pas d'x-amz-server-side-encryption-aws-kms-key-iden-tête demandant un 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:::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 KMS clé, vous devez utiliser une clé Amazon Resource Name (ARN) au arn:aws:kms:region:acct-id:key/key-id format. 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 KMS clé à l'aide de l'x-amz-server-side-encryption-aws-kms-key-iden-tête ou vous fier à la configuration de chiffrement de votre compartiment par défaut. Si votre PutObject demande le précise aws:kms dans l'x-amz-server-side-encryptionen-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 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'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, l'objet ARN est utilisé comme contexte de chiffrement.

    arn:aws:s3:::object_ARN
  • Si vous utilisez SSE KMS et activez une clé de compartiment S3, le compartiment ARN est utilisé comme contexte de chiffrement. Pour plus d'informations sur les clés de compartiment S3, consultez Réduction du coût de 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 ARN valeur de contexte de chiffrement par défaut pour suivre les demandes pertinentes en AWS CloudTrail visualisant quel Amazon S3 ARN 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 fonctionnalité optionnelle S3 Bucket Keys, la valeur du contexte de chiffrement est ARN celle du compartiment.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-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 de Secure Sockets Layer (SSL) ou de Transport Layer Security (TLS). 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 parHTTP. 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 demande de chiffrement pour les GET requêtes et les HEAD requêtes. Dans le cas contraire, vous obtiendrez une erreur HTTP400 Bad Request.