Protection des données à l'aide du chiffrement côté serveur avec les clés CMK stockées dans AWS Key Management Service (SSE-KMS) - Amazon Simple Storage Service

Ce guide ne fait plus l'objet de mises à jour. Pour obtenir des informations et des instructions actuelles, reportez-vous au nouveau Guide de l'utilisateur Amazon S3.

Protection des données à l'aide du chiffrement côté serveur avec les clés CMK stockées dans AWS Key Management Service (SSE-KMS)

Le chiffrement côté serveur est le chiffrement des données à leur destination par l'application ou le service qui les reçoit. AWS Key Management Service (AWS KMS) est un service qui associe du matériel et des logiciels sécurisés hautement disponibles pour fournir un système de gestion de clés à l'échelle du cloud. Amazon S3 utilise les clés principales client (CMK) AWS KMS pour chiffrer vos objets Amazon S3. AWS KMS chiffre uniquement les données d'objet. Les métadonnées d'objet ne sont pas chiffrées.

Si vous utilisez des clés CMK, vous utilisez AWS KMS via AWS Management Console ou les API AWS KMS pour créer de façon centralisée des clés CMK, définir les stratégies qui contrôlent la façon dont les clés CMK peuvent être utilisées et auditer l'utilisation des clés CMK pour prouver qu'elles font l'objet d'une utilisation correcte. Vous pouvez utiliser ces clés CMK pour protéger les données dans les compartiments Amazon S3. Lors de l'utilisation du chiffrement SSE-KMS avec un compartiment S3, la clé CMK AWS KMS doit se trouver dans la même région que le compartiment.

Il y a des frais supplémentaires pour l'utilisation de clés CMK AWS KMS. Pour de plus amples informations, veuillez consulter Concepts AWS Key Management Service - Clés principales client (CMK) et Tarification d'AWS Key Management Service dans le Manuel du développeur AWS Key Management Service.

Important

Vous avez besoin de l'autorisation kms:Decrypt lorsque vous chargez ou téléchargez un objet Amazon S3 chiffré avec une clé CMK AWS KMS. Avec en outre les autorisations kms:ReEncrypt, kms:GenerateDataKey et kms:DescribeKey. Pour de plus amples informations, veuillez consulter Échec lors du chargement d'un fichier volumineux sur Amazon S3 avec le chiffrement à l'aide d'une clé CMK AWS KMS.

Clés CMK gérées par AWS et clés CMK gérées par le client

Lorsque vous utilisez un chiffrement côté serveur avec AWS KMS (SSE-KMS), vous pouvez utiliser la clé CMK gérée par AWS par défaut ou spécifier une clé CMK gérée par le client que vous avez déjà créé.

Si vous ne spécifiez pas de clé CMK gérée par le client, Amazon S3 crée automatiquement une clé CMK gérée par AWS dans votre compte AWS la première fois que vous ajoutez un objet chiffré avec SSE-KMS dans un compartiment. Par défaut, Amazon S3 utilise cette clé CMK pour SSE-KMS.

Si vous souhaitez utiliser une clé CMK gérée par le client pour le chiffrement SSE-KMS, vous pouvez créer la clé CMK avant de configurer le chiffrement SSE-KMS. Ensuite, lorsque vous configurez le chiffrement SSE-KMS pour votre compartiment, vous pouvez spécifier la clé CMK gérée par le client existante.

En créant votre propre clé CMK gérée par le client vous disposez de plus de flexibilité et d’un contrôle accru sur la clé CMK. Par exemple, vous pouvez créer, faire pivoter et désactiver les clés CMK gérés par le client. Vous pouvez également définir des contrôles d'accès et auditer les clés de CMK gérées par le client que vous utilisez pour protéger vos données. Pour de plus amples informations sur les clés CMK gérées par le client et gérées par AWS, veuillez consulter Concepts AWS KMS dans le Manuel du développeur AWS Key Management Service Developer.

Important

Lorsque vous utilisez une clé CMK AWS KMS pour le chiffrement côté serveur dans Amazon S3, vous devez choisir une clé CMK symétrique. Amazon S3 prend uniquement en charge les clés CMK symétriques, et ne prend pas en charge les clés CMK asymétriques. Pour de plus amples informations, veuillez consulter Utilisation des clés symétriques et asymétriques dans le Manuel du développeur AWS Key Management Service.

AWS Signature Version 4

Si vous chargez ou accédez à des objets chiffrés par SSE-KMS, vous devez utiliser AWS Signature Version 4 pour une meilleure sécurité. Pour de plus amples informations sur la façon de procéder grâce au kit SDK AWS,veuillez consulter Spécification de la version de signature dans l'authentification de demande.

Important

Toutes les demandes GET et PUT concernant un objet protégé par AWS KMS échouent si elle ne sont pas faites via SSL ou TLS, ou avec SigV4.

Principaux avantages du chiffrement SSE-KMS

Voici les principaux avantages du chiffrement SSE-KMS :

  • Vous pouvez choisir une clé CMK gérée par le client que vous créez et gérez, ou une clé CMK gérée par AWS qu'Amazon S3 crée dans votre compte AWS et gère à votre place. Comme une clé CMK gérée par le client, votre clé CMK gérée par AWS est propre à votre compte et à votre région AWS. Seul Amazon S3 a l'autorisation d'utiliser cette clé CMK en votre nom. Amazon S3 prend uniquement en charge les clés CMK symétriques.

  • Vous pouvez créer des clés CMK gérées par le client auditables, ainsi que les soumettre à rotation ou les désactiver, à partir de la console AWS KMS.

  • La valeur ETag dans la réponse n'est pas le MD5 des données de l'objet.

  • Les clés de données utilisées pour chiffrer les données sont également chiffrées et stockées avec les données qu'elles protègent.

  • Les contrôles de sécurité dans AWS KMS peuvent vous aider à respecter les exigences de conformité liées au chiffrement.

Exigence du chiffrement côté serveur

Pour exiger le chiffrement côté serveur de tous les objets d'un compartiment Amazon S3 particulier, vous pouvez utiliser une stratégie. Par exemple, la stratégie 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 demandant le chiffrement côté serveur avec des SSE-KMS.

{ "Version":"2012-10-17", "Id":"PutObjectPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::awsexamplebucket1/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"aws:kms" } } } ] }

Pour exiger qu'une clé CMK AWS KMS particulière soit utilisée pour chiffrer les objets d'un compartiment, vous pouvez utiliser la clé de condition s3:x-amz-server-side-encryption-aws-kms-key-id. Pour spécifier la clé CMK AWS KMS, vous devez utiliser un Amazon Resource Name (ARN) de clé au format arn:aws:kms:region:acct-id:key/key-id".

Note

Lorsque vous chargez un objet, vous pouvez spécifier la clé CMK AWS 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 la clé CMK gérée par AWS. L'ID de clé AWS KMS utilisé par Amazon S3 pour chiffrer les objets doit correspondre à l'ID de clé AWS KMS de la stratégie, faute de quoi Amazon S3 refuse la demande.

Pour obtenir la liste complète des clés de condition spécifiques à Amazon S3 et plus d'informations sur la spécification des clés de condition, veuillez consulter Clés de condition Amazon S3.

Utilisation d'AWS Key Management Service dans la console Amazon S3

Pour de plus amples informations sur l'utilisation de la console Amazon S3 avec les clés CMK stockées dans AWS KMS, veuillez consulter Comment ajouter le chiffrement à un objet S3 ? dans le Guide de l'utilisateur de la console Amazon Simple Storage Service.

Prise en charge des API pour AWS Key Management Service dans Amazon S3

Pour demander SSE-KMS dans les API REST de création d'objet, utilisez l'en-tête de la demande x-amz-server-side-encryption. Pour spécifier l'ID de la clé CMK AWS KMS utilisée pour l'objet, choisissez x-amz-server-side-encryption-aws-kms-key-id. L'API Amazon S3 prend également en charge le contexte de chiffrement, avec l'en-tête x-amz-server-side-encryption-context. Pour de plus amples informations, veuillez consulter Spécification de l'AWS Key Management Service dans Amazon S3 à l'aide de l'API REST.

Les kits SDK AWS fournissent également des API d'enveloppe pour que vous demandiez des SSE-KMS avec Amazon S3. Pour plus d'informations, consultez Spécification de l'AWS Key Management Service dans Amazon S3 à l'aide des kits SDK AWS.