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 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 le AWS Command Line Interface et AWS SDKs. 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 S3 (SSE-S3) pour les nouveaux chargements d’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 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. En outre, lorsque SSE-KMS est demandé pour l’objet, la somme de contrôle S3, qui fait partie des métadonnées de l’objet, est stockée sous forme chiffrée. Pour plus d’informations sur le total de contrôle, consultez Vérification de l’intégrité des objets dans Amazon S3.

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.

  • Vérifiez l'utilisation des clés KMS pour une utilisation correcte. 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 Concepts AWS KMS key dans le Guide du développeur AWS Key Management Service et Tarification AWS KMS.

Autorisations

Pour réussir à envoyer une PutObject demande de chiffrement d'un objet avec une AWS KMS clé à 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 la clé. Pour effectuer un téléchargement partitionné afin de chiffrer un objet avec un AWS KMS key, vous devez disposer des kms:Decrypt autorisations kms:GenerateDataKey et pour la clé.

Important

Examinez attentivement les autorisations accordées dans les politiques des clés KMS. Limitez toujours les autorisations de politique clé KMS gérées par le client uniquement aux principaux et AWS services IAM qui doivent accéder à l'action clé appropriée. 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 d'enveloppe consiste à chiffrer vos données en texte brut avec 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 Magasins de clés externes dans le Guide du développeur AWS Key Management Service .

Utilisation du chiffrement SSE-KMS pour les opérations intercomptes

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 à l'aide de principes AWS Identity and Access Management (IAM) identiques Compte AWS à ceux de votre clé KMS, 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 clé KMS gérée par le client, nous recommandons d’utiliser un ARN de clé KMS complet. Si vous utilisez plutôt un alias de clé KMS, AWS KMS la clé est résolue dans le compte du demandeur. En raison de ce comportement, les données peuvent être chiffrées avec une clé KMS qui appartient 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 en savoir plus, consultez Permettre aux utilisateurs de clés d'utiliser une clé KMS pour les opérations de chiffrement dans le Guide de l'utilisateur AWS Key Management Service .

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

Flux de travail de chiffrement SSE-KMS

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 .

Audit du chiffrement SSE-KMS

Pour identifier les requêtes qui spécifient SSE-KMS, vous pouvez utiliser les métriques Toutes les demandes SSE-KMS et % de toutes les demandes 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. Vous pouvez également utiliser le nombre de compartiments avec le chiffrement SSE-KMS activé et le pourcentage de compartiments avec le chiffrement SSE-KMS activé pour déterminer 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 données cryptées SSE-KMS, 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 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:::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 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 ou vous fier à la configuration de chiffrement de 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 suppose 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 Clés de condition pour Amazon S3 dans la Référence de l’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 Contexte de chiffrement dans le 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:::amzn-s3-demo-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:::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 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).