Utilisation du chiffrement côté serveur avec des clés AWS KMS (SSE-KMS) dans les compartiments de répertoires - Amazon Simple Storage Service

Utilisation du chiffrement côté serveur avec des clés AWS KMS (SSE-KMS) dans les compartiments de répertoires

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 choisir de configurer des compartiments de répertoires de sorte qu’ils utilisent le chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), et utiliser ces clés KMS pour protéger vos données dans les compartiments de répertoires Amazon S3. Pour en savoir plus sur SSE-KMS, consultez Utilisation du chiffrement côté serveur avec des clés AWS KMS (SSE-KMS).

Autorisations

Pour charger ou télécharger un objet chiffré avec une AWS KMS key vers ou à partir d’Amazon S3, vous devez disposer des autorisations kms:GenerateDataKey et kms:Decrypt au niveau de la clé. Pour plus d’informations, 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 autorisations AWS KMS requises pour le chargement partitionné, consultez API de chargement partitionné et autorisations.

Pour plus d’informations sur les clés KMS pour SSE-KMS, consultez Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS).

AWS KMS keys

Votre configuration SSE-KMS ne peut prendre en charge qu’une seule clé gérée par le client par compartiment de répertoires pendant toute la durée de vie du compartiment. La Clé gérée par AWS (aws/s3) n’est pas prise en charge. De même, après avoir spécifié une clé gérée par le client pour SSE-KMS, vous ne pouvez pas remplacer la clé gérée par le client pour la configuration SSE-KMS du compartiment.

Vous pouvez identifier la clé gérée par le client que vous avez spécifiée pour la configuration SSE-KMS du compartiment de la manière suivante :

  • Effectuez une demande d’opération d’API HeadObject pour trouver la valeur de x-amz-server-side-encryption-aws-kms-key-id dans la réponse.

Pour utiliser une nouvelle clé gérée par le client pour vos données, nous vous recommandons de copier vos objets existants dans un nouveau compartiment de répertoires avec une nouvelle clé gérée par le client.

Lorsque vous spécifiez une clé AWS KMS gérée par le client pour le chiffrement dans votre compartiment de répertoires, utilisez uniquement l’ID ou l’ARN de la clé. Le format de l’alias de la clé KMS n’est pas pris en charge.

Pour plus d’informations sur les clés KMS pour SSE-KMS, consultez AWS KMS keys.

Utilisation de SSE-KMS pour les opérations intercomptes

Lors de l’utilisation du chiffrement pour les opérations intercomptes, tenez compte des éléments suivants :

  • Si vous souhaitez accorder un accès intercompte à vos objets S3, configurez une politique de clé gérée par le client pour autoriser l’accès à partir d’un autre compte.

  • Pour spécifier une clé gérée par le client, vous devez utiliser un ARN de clé KMS complet.

Clés de compartiment Amazon S3.

Les clés de compartiment S3 sont toujours activées pour les opérations GET et PUT dans un compartiment de répertoires et ne peuvent pas être désactivées. Les clés de compartiment S3 ne sont pas prises en charge lorsque vous copiez des objets chiffrés avec SSE-KMS depuis des compartiments à usage général vers des compartiments de répertoires, depuis des compartiments de répertoires vers des compartiments à usage général ou entre des compartiments de répertoires, par le biais de CopyObject, d’UploadPartCopy, de l’opération Copy dans Batch Operations ou des tâches import. Dans ce cas, Amazon S3 appelle AWS KMS chaque fois qu’une demande de copie est faite par rapport à un objet chiffré KMS.

Pour les opérations d’API de point de terminaison zonal (au niveau de l’objet), à l’exception de CopyObject et d’UploadPartCopy, authentifiez et autorisez les demandes via CreateSession pour une faible latence. Nous recommandons que le chiffrement par défaut du compartiment utilise la configuration de chiffrement souhaitée et que vous ne remplaciez pas le chiffrement par défaut du compartiment dans vos demandes CreateSession ni dans vos demandes d’objets PUT. Les nouveaux objets seront ensuite automatiquement chiffrés avec les paramètres de chiffrement souhaités. Pour chiffrer de nouveaux objets dans un compartiment de répertoires avec SSE-KMS, vous devez spécifier SSE-KMS comme configuration de chiffrement par défaut de ce compartiment avec une clé KMS (plus spécifiquement, une clé gérée par le client). Ensuite, lorsqu’une session sera créée pour les opérations de l’API de point de terminaison zonal, les nouveaux objets seront automatiquement chiffrés et déchiffrés avec les clés SSE-KMS et les clés de compartiment S3 pendant la session. Pour plus d’informations sur les comportements de remplacement du chiffrement dans les compartiments de répertoires, consultez Spécification du chiffrement côté serveur avec AWS KMS pour les nouveaux chargements d’objets.

Les clés de compartiment S3 sont utilisées pendant une période limitée dans Amazon S3, ce qui réduit encore la nécessité pour Amazon S3 d’adresser des demandes à AWS KMS pour finaliser les opérations de chiffrement. Pour plus d’informations sur l’utilisation des clés de compartiment S3, consultez Clés de compartiment Amazon S3. et Réduction du coût du SSE-KMS avec les clés de compartiment Amazon S3.

Chiffrement SSE-KMS requis

Pour exiger le chiffrement SSE-C de tous les objets figurant dans un compartiment de répertoires particulier, vous pouvez utiliser une stratégie de compartiment. Par exemple, lorsque vous utilisez l’opération d’API CreateSession pour autoriser le chargement d’un nouvel objet (PutObject, CopyObject et CreateMultipartUpload), la stratégie de compartiment suivante refuse l’autorisation de chargement de l’objet (s3express:CreateSession) à tout le monde si la demande CreateSession ne contient pas d’en-tête x-amz-server-side-encryption-aws-kms-key-id demandant le chiffrement SSE-KMS.

JSON
{ "Version":"2012-10-17", "Id":"UploadObjectPolicy", "Statement":[{ "Sid":"DenyObjectsThatAreNotSSEKMS", "Effect":"Deny", "Principal":"*", "Action":"s3express:CreateSession", "Resource":"arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3", "Condition":{ "Null":{ "s3express:x-amz-server-side-encryption-aws-kms-key-id":"true" } } } ] }

Pour exiger qu’une AWS KMS key particulière soit utilisée pour chiffrer les objets d’un compartiment, vous pouvez utiliser la clé de condition s3express:x-amz-server-side-encryption-aws-kms-key-id. Pour spécifier la clé KMS, vous devez utiliser un Amazon Resource Name (ARN) de clé au format arn:aws:kms:region:acct-id:key/key-id. AWS Identity and Access Management ne valide pas si la chaîne pour s3express:x-amz-server-side-encryption-aws-kms-key-id existe. L’ID de clé AWS KMS utilisé par Simple Storage Service (Amazon S3) pour chiffrer les objets doit correspondre à l’ID de clé AWS KMS de la politique, faute de quoi Simple Storage Service (Amazon S3) refuse la demande.

Pour plus d’informations sur l’utilisation de SSE-KMS pour les chargements de nouveaux objets, consultez Spécification du chiffrement côté serveur avec AWS KMS (SSE-KMS) pour les chargements de nouveaux objets dans des compartiments de répertoires.

Pour obtenir la liste complète des clés de condition spécifiques aux compartiments de répertoires, consultez Autorisation des opérations d’API de point de terminaison régional avec IAM.

Contexte de chiffrement

Pour les compartiments de répertoires, un contexte de chiffrement est un ensemble de paires clé-valeur qui contient des informations contextuelles supplémentaires sur les données. Aucune valeur supplémentaire de contexte de chiffrement n’est prise en charge. Pour plus d’informations sur le contexte de chiffrement, consultez la rubrique Contexte de chiffrement.

Par défaut, si vous utilisez SSE-KMS sur un compartiment de répertoires, Amazon S3 utilise l’Amazon Resource Name (ARN) de ce compartiment comme paire de contexte de chiffrement :

arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3

Assurez-vous que vos politiques IAM ou vos stratégies de clé AWS KMS utilisent l’ARN de votre compartiment comme contexte de chiffrement.

Vous pouvez éventuellement fournir une paire de contexte de chiffrement explicite à l’aide de l’en-tête x-amz-server-side-encryption-context dans une demande d’API de point de terminaison zonal, telle que CreateSession. La valeur de cet en-tête est une chaîne codée en base64 d’un fichier JSON codé en UTF-8, qui contient le contexte de chiffrement sous forme de paires clé-valeur. Pour les compartiments de répertoires, le contexte de chiffrement doit correspondre au contexte de chiffrement par défaut, à savoir l’Amazon Resource Name (ARN) du compartiment. De plus, étant donné que le contexte de chiffrement n’est pas chiffré, assurez-vous qu’il ne contienne pas d’informations sensibles.

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 dans AWS CloudTrail en consultant quel ARN de compartiment de répertoires a été utilisé avec quelle clé de chiffrement.

Dans le champ requestParameters d’un fichier journal CloudTrail, si vous utilisez SSE-KMS sur un compartiment de répertoires, la valeur du contexte de chiffrement correspond à l’ARN du compartiment.

"encryptionContext": { "aws:s3express:arn": "arn:aws:s3:::arn:aws:s3express:region:account-id:bucket/bucket-base-name--zone-id--x-s3" }

De même, pour le chiffrement d’objets avec SSE-KMS dans un compartiment de répertoires, les événements AWS KMS CloudTrail journalisent l’ARN de votre compartiment au lieu de l’ARN de l’objet.

Envoi de requêtes pour des objets AWS KMS chiffrés

Les compartiments de répertoires sont accessibles uniquement via HTTPS (TLS). De plus, les compartiments de répertoires signent les demandes à l’aide d’AWS Signature Version 4 (SigV4). Pour plus d’informations sur l’envoi de demandes d’objets chiffrés AWS KMS, consultez Envoi de requêtes pour des objets AWS KMS chiffrés.

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

Audit du chiffrement SSE-KMS dans les compartiments de répertoires

Pour auditer l’utilisation de vos clés AWS KMS pour les données chiffrées SSE-KMS, vous pouvez utiliser les journaux AWS CloudTrail. 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.