Comment Amazon EMR utilise AWS KMS - AWS Key Management Service

Comment Amazon EMR utilise AWS KMS

Lorsque vous utilisez un cluster Amazon EMR, vous pouvez le configurer pour chiffrer les données au repos avant de les enregistrer dans un emplacement de stockage permanent. Vous pouvez chiffrer des données au repos dans le système de fichiers EMR (EMRFS), sur les volumes de stockage de nœuds de cluster, ou les deux. Pour chiffrer les données au repos, vous pouvez utiliser une AWS KMS key. Les rubriques suivantes expliquent comment un cluster Amazon EMR utilise une clé KMS pour chiffrer des données au repos.

Important

Amazon EMR prend uniquement en charge les clés KMS symétriques. Vous ne pouvez pas utiliser une clé KMS asymétrique pour chiffrer les données au repos dans un cluster Amazon EMR. Pour obtenir de l'aide sur la détermination de la symétrie ou de l'asymétrie d'une clé KMS, veuillez consulter Identification des clés KMS asymétriques.

Les clusters Amazon EMR chiffrent également les données en transit, ce qui signifie que le cluster chiffre les données avant de les envoyer via le réseau. Vous ne pouvez pas utiliser une clé KMS pour chiffrer des données en transit. Pour de plus amples informations, veuillez consulter Chiffrement des données en transit dans le guide de gestion Amazon EMR.

Pour plus d'informations sur toutes les options de chiffrement disponibles dans Amazon EMR, veuillez consulter Options de chiffrement dans le guide de gestion Amazon EMR.

Chiffrement des données dans le système de fichiers EMR (EMRFS)

Les clusters Amazon EMR utilisent deux systèmes de fichiers distribués :

  • Le système de fichiers distribué Hadoop (HDFS). Le chiffrement HDFS n'utilise pas une clé KMS dans AWS KMS.

  • Le système de fichiers EMR (EMRFS). EMRFS est une implémentation de HDFS, qui permet aux clusters Amazon EMR de stocker des données dans Amazon Simple Storage Service (Amazon S3). EMRFS prend en charge quatre options de chiffrement, dont deux utilisent une clé KMS dans AWS KMS. Pour plus d'informations sur les quatre options de chiffrement EMRFS, veuillez consulter Options de chiffrement dans le guide de gestion Amazon EMR.

Les deux options de chiffrement EMRFS qui utilisent une clé KMS font appel aux fonctions de chiffrement suivantes proposées par Amazon S3 :

Lorsque vous configurez un cluster Amazon EMR pour chiffrer les données sur EMRFS avec une clé KMS, vous choisissez la clé KMS que vous voulez que le cluster Amazon EMR ou Simple Storage Service (Amazon S3) utilise. Avec SSE-KMS, vous pouvez choisir la Clé gérée par AWS pour Amazon S3 avec l'alias aws/s3, ou une clé symétrique gérée par le client que vous créez. Avec le chiffrement côté client, vous devez choisir une clé symétrique gérée par le client que vous créez. Lorsque vous choisissez une clé gérée par le client, vous devez vous assurer que votre cluster Amazon EMR est autorisé à utiliser la clé KMS. Pour de plus amples informations, veuillez consulter Utilisation des AWS KMS keys pour le chiffrement dans le guide de gestion Amazon EMR.

Pour le chiffrement côté serveur et côté client, la clé KMS que vous choisissez est la clé racine dans un flux de chiffrement d'enveloppe. Les données sont chiffrées avec une clé de données unique qui est chiffrée sous la clé KMS dans AWS KMS. Les données chiffrées et une copie chiffrée de leur clé de données sont stockées ensemble en tant qu'objet chiffré unique dans un compartiment S3. Pour plus d'informations sur la façon dont cela fonctionne, consultez les rubriques suivantes.

Processus de chiffrement des données sur EMRFS avec SSE-KMS

Lorsque vous configurez un cluster Amazon EMR pour utiliser SSE-KMS, le processus de chiffrement fonctionne comme suit :

  1. Le cluster envoie les données à Amazon S3 pour leur stockage dans un compartiment S3.

  2. Amazon S3 envoie une demande GenerateDataKey à AWS KMS en spécifiant l'ID de clé de la clé KMS que vous avez choisie lorsque vous avez configuré le cluster pour utiliser SSE-KMS. La demande inclut le contexte de chiffrement. Pour plus d'informations, veuillez consulter Contexte de chiffrement.

  3. AWS KMS génère une clé de chiffrement des données unique (clé de données), puis envoie deux copies de cette clé de données à Amazon S3. Une copie est non chiffrée (texte brut) et l'autre copie est chiffrée sous la clé KMS.

  4. Amazon S3 utilise la clé de données en texte brut pour chiffrer les données reçues à l'étape 1, puis supprime la clé de données en texte brut de la mémoire dès que possible après usage.

  5. Amazon S3 stocke ensemble les données chiffrées et la copie chiffrée de la clé de données en tant qu'objet chiffré unique dans un compartiment S3.

Le processus de déchiffrement fonctionne comme suit :

  1. Le cluster demande un objet de données chiffré depuis un compartiment S3.

  2. Amazon S3 extrait la clé de données chiffrée de l'objet S3, puis l'envoie à AWS KMS avec une demande Decrypt. La demande comprend un contexte de chiffrement.

  3. AWS KMS déchiffre la clé de données chiffrée à l'aide de la clé KMS utilisée pour la chiffrer, puis envoie la clé de données déchiffrée (texte brut) à Amazon S3.

  4. Amazon S3 utilise la clé de données en texte brut pour déchiffrer les données chiffrées, puis supprime la clé de données en texte brut de la mémoire dès que possible après usage.

  5. Amazon S3 envoie les données déchiffrées au cluster.

Processus de chiffrement des données sur EMRFS avec CSE-KMS

Lorsque vous configurez un cluster Amazon EMR pour utiliser CSE-KMS, le processus de chiffrement fonctionne comme suit :

  1. Lorsqu'il est prêt à stocker des données dans Amazon S3, le cluster envoie une demande GenerateDataKey à AWS KMS, en spécifiant l'ID de clé de la clé KMS que vous avez choisie lorsque vous avez configuré le cluster pour utiliser CSE-KMS. La demande inclut le contexte de chiffrement. Pour plus d'informations, veuillez consulter Contexte de chiffrement.

  2. AWS KMS génère une clé de chiffrement de données unique (clé de données), puis envoie deux copies de cette clé de données au cluster. Une copie est non chiffrée (texte brut) et l'autre copie est chiffrée sous la clé KMS.

  3. Le cluster utilise la clé de données en texte brut pour chiffrer les données, puis supprime la clé de données en texte brut de la mémoire dès que possible après usage.

  4. Le cluster combine les données chiffrées et la copie chiffrée de la clé de données en un objet chiffré unique.

  5. Le cluster envoie l'objet chiffré à Amazon S3 pour stockage.

Le processus de déchiffrement fonctionne comme suit :

  1. Le cluster demande l'objet de données chiffré depuis un compartiment S3.

  2. Amazon S3 envoie l'objet chiffré au cluster.

  3. Le cluster extrait la clé de données chiffrée de l'objet chiffré, puis l'envoie à AWS KMS avec une demande Decrypt. La demande inclut le contexte de chiffrement.

  4. AWS KMS déchiffre la clé de données chiffrée à l'aide de la clé KMS utilisée pour la chiffrer, puis envoie la clé de données déchiffrée (texte brut) au cluster.

  5. Le cluster utilise la clé de données en texte brut pour déchiffrer les données chiffrées, puis supprime la clé de données en texte brut de la mémoire dès que possible après usage.

Chiffrement des données sur les volumes de stockage de nœuds de Cluster

Un cluster Amazon EMR est une collection d'instances Amazon Elastic Compute Cloud (Amazon EC2). Chaque instance du cluster est appelée nœud de cluster ou nœud. Chaque nœud peut avoir deux types de volumes de stockage : des volumes de stockage d'instance et des volumes Amazon Elastic Block Store (Amazon EBS). Vous pouvez configurer le cluster pour utiliser Linux Unified Key Setup (LUKS) pour chiffrer les deux types de volumes de stockage sur les nœuds (mais pas le volume de démarrage de chaque nœud). Il s'agit du chiffrement de disque local.

Lorsque vous activez le chiffrement de disque local pour un cluster, vous pouvez choisir de chiffrer la clé LUKS avec une clé KMS dans AWS KMS. Vous devez choisir une clé gérée par le client que vous créez ; vous ne pouvez pas utiliser une Clé gérée par AWS. Si vous choisissez une clé gérée par le client, vous devez vous assurer que votre cluster Amazon EMR est autorisé à utiliser la clé KMS. Pour de plus amples informations, veuillez consulter Utilisation des AWS KMS keys pour le chiffrement dans le guide de gestion Amazon EMR.

Lorsque vous activez le chiffrement de disque local à l'aide d'une clé KMS, le processus de chiffrement fonctionne comme ceci :

  1. Lorsque chaque nœud de cluster est lancé, il envoie une demande GenerateDataKey à AWS KMS, en spécifiant l'ID de clé de la clé KMS que vous avez choisie lorsque vous avez activé le chiffrement de disque local pour le cluster.

  2. AWS KMS génère une clé de chiffrement de données unique (clé de données), puis envoie deux copies de cette clé de données au nœud. Une copie est non chiffrée (texte brut) et l'autre copie est chiffrée sous la clé KMS.

  3. Le nœud utilise une version encodée en base 64 de la clé de données en texte brut comme mot de passe qui protège la clé LUKS. Le nœud enregistre la copie chiffrée de la clé de données sur le volume de démarrage.

  4. Si le nœud redémarre, le nœud redémarré envoie la clé de données chiffrée à AWS KMS avec une demande Decrypt.

  5. AWS KMS déchiffre la clé de données chiffrée à l'aide de la clé KMS utilisée pour la chiffrer, puis envoie la clé de données déchiffrée (texte brut) au nœud.

  6. Le nœud utilise la version encodée en base 64 de la clé de données en texte brut comme mot de passe pour déverrouiller la clé LUKS.

Contexte de chiffrement

Chaque service AWS intégré à AWS KMS peut spécifier un contexte de chiffrement quand il utilise AWS KMS pour générer des clés de données, ou pour chiffrer ou déchiffrer des données. Le contexte de chiffrement représente des informations authentifiées supplémentaires qu'AWS KMS utilise pour vérifier l'intégrité des données. Quand service spécifie un contexte de chiffrement pour une opération de chiffrement, il doit spécifier le même contexte de chiffrement pour l'opération de déchiffrement correspondante, sinon le déchiffrement échouera. Le contexte de chiffrement est également écrit dans les fichiers journaux AWS CloudTrail qui vous aident à comprendre pourquoi une clé KMS spécifique a été utilisée.

La section suivante décrit le contexte de chiffrement utilisé dans chaque scénario de chiffrement Amazon EMR qui utilise une clé KMS.

Contexte de chiffrement pour le chiffrement EMRFS avec SSE-KMS

Avec SSE-KMS, le cluster Amazon EMR envoie les données à Amazon S3, puis Amazon S3 utilise une clé KMS pour chiffrer les données avant de les enregistrer dans un compartiment S3. Dans ce cas, Amazon S3 utilise le nom Amazon Resource Name (ARN) de l'objet S3 comme contexte de chiffrement avec chaque demande GenerateDataKey et Decrypt qu'il envoie à AWS KMS. L'exemple suivant montre une représentation JSON du contexte de chiffrement qu'Amazon S3 utilise.

{ "aws:s3:arn" : "arn:aws:s3:::S3_bucket_name/S3_object_key" }

Contexte de chiffrement pour le chiffrement EMRFS avec CSE-KMS

Avec CSE-KMS, le cluster Amazon EMR utilise une clé KMS pour chiffrer les données avant de les envoyer à Amazon S3 pour stockage. Dans ce cas, le cluster utilise le nom Amazon Resource Name (ARN) de la clé KMS comme contexte de chiffrement avec chaque demande GenerateDataKey et Decrypt qu'il envoie à AWS KMS. L'exemple suivant montre une représentation JSON du contexte de chiffrement que le cluster utilise.

{ "kms_cmk_id" : "arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef" }

Contexte de chiffrement pour le chiffrement de disque Local avec LUKS

Lorsqu'un cluster Amazon EMR utilise le chiffrement de disque local avec LUKS, les nœuds de cluster ne spécifient pas de contexte de chiffrement avec les demandes GenerateDataKey et Decrypt qu'ils envoient à AWS KMS.