Como o Amazon EMR usa o AWS KMS - AWS Key Management Service

Como o Amazon EMR usa o AWS KMS

Ao usar um cluster do Amazon EMR, você pode configurá-lo para criptografar dados em repouso antes de salvá-los em um local de armazenamento persistente. Você pode criptografar dados em repouso no EMR File System (EMRFS), nos volumes de armazenamento de nós de cluster, ou em ambos. Para criptografar dados em repouso, use uma AWS KMS key. Os tópicos a seguir explicam como um cluster do Amazon EMR usa uma chave do KMS para criptografar dados em repouso.

Importante

O Amazon EMR oferece suporte somente a chaves do KMS simétricas. Não é possível usar uma chave do KMS assimétrica para criptografar dados em repouso em um cluster do Amazon EMR. Para obter ajuda para determinar se uma chave do KMS é simétrica ou assimétrica, consulte Identificar chaves do KMS assimétricas.

Os clusters do Amazon EMR também criptografam dados em trânsito, o que significa que o cluster criptografa os dados antes de enviá-los por meio da rede. Não é possível usar uma chave do KMS para criptografar dados em trânsito. Para obter mais informações, consulte Criptografia de dados em trânsito, no Guia de gerenciamento do Amazon EMR.

Para obter mais informações sobre todas as opções de criptografia disponíveis no Amazon EMR, consulte Opções de criptografia, noGuia de gerenciamento do Amazon EMR.

Criptografar dados no EMR File System (EMRFS)

Os clusters do Amazon EMR usam dois sistemas de arquivos distribuídos:

  • O Hadoop Distributed File System (HDFS). A criptografia do HDFS não usa uma chave do KMS no AWS KMS.

  • O EMR File System (EMRFS). O EMRFS é uma implementação do HDFS que permite que os clusters do Amazon EMR armazenem dados no Amazon Simple Storage Service (Amazon S3). O EMRFS oferece suporte a quatro opções de criptografia, duas das quais usam uma chave do KMS no AWS KMS. Para obter mais informações sobre todas as quatro opções de criptografia do EMRFS, consulte Opções de criptografia, no Guia de gerenciamento do Amazon EMR.

As duas opções de criptografia do EMRFS que usam uma chave do KMS usam os seguintes recursos de criptografia oferecidos pelo Amazon S3:

Ao configurar um cluster do Amazon EMR para criptografar dados no EMRFS com uma chave do KMS, escolha a chave do KMS que deseja que o Amazon S3 ou o cluster do Amazon EMR use. Com o SSE-KMS, é possível escolher a Chave gerenciada pela AWS para o Amazon S3 com o alias aws/s3 ou uma chave simétrica gerenciada pelo cliente criada por você. Com a criptografia no lado do cliente, é necessário escolher uma chave simétrica gerenciada pelo cliente criada por você. Ao escolher uma chave gerenciada pelo cliente, é necessário garantir que o cluster do Amazon EMR tenha permissão para usar a chave do KMS. Para obter mais informações, consulteUsar AWS KMS keys para criptografia, noGuia de gerenciamento do Amazon EMR.

Para a criptografia do lado do servidor e a criptografia do lado do cliente, a chave do KMS que você escolhe é a chave raiz em um fluxo de trabalho de criptografia de envelope. Os dados são criptografados com uma chave de dados exclusiva que é criptografada sob a chave do KMS no AWS KMS. Os dados criptografados e uma cópia criptografada de sua chave de dados são armazenados em conjunto como um único objeto criptografado em um bucket do S3. Para obter mais informações sobre como isso funciona, consulte os tópicos a seguir.

Processo para criptografar dados no EMRFS com o SSE-KMS

Quando você configura um cluster do Amazon EMR para usar o SSE-KMS, o processo de criptografia funciona da seguinte forma:

  1. O cluster envia os dados ao Amazon S3 para armazenamento em um bucket do S3.

  2. O Amazon S3 envia uma solicitação GenerateDataKey ao AWS KMS, especificando o ID de chave da chave do KMS que você escolheu ao configurar o cluster para usar o SSE-KMS. A solicitação inclui o contexto de criptografia, para obter mais informações, consulte Contexto de criptografia.

  3. AWS KMSO gera uma chave de criptografia dos dados exclusiva (chave de dados) e envia duas cópias dessa chave de dados ao Amazon S3. Uma cópia é não criptografada (texto simples), e a outra cópia é criptografada com a chave do KMS.

  4. O Amazon S3 usa a chave de dados de texto não criptografado para criptografar os dados que ela recebeu na etapa 1 e remove a chave de dados de texto não criptografado da memória, assim que possível, após o uso.

  5. O Amazon S3 armazena os dados criptografados e a cópia criptografada da chave de dados em conjunto como um único objeto criptografado em um bucket do S3.

O processo de descriptografia funciona desta forma:

  1. O cluster solicita um objeto de dados criptografado de um bucket do S3.

  2. O Amazon S3 extrai a chave de dados criptografada do objeto do S3 e, em seguida, envia a chave de dados criptografada ao AWS KMS com uma solicitação Decrypt. A solicitação inclui um contexto de criptografia.

  3. AWS KMSO descriptografa a chave de dados criptografada usando a mesma chave do KMS que foi usada para criptografá-la e, em seguida, envia a chave de dados descriptografada (texto não criptografado) ao Amazon S3.

  4. O Amazon S3 usa a chave de dados de texto não criptografado para descriptografar os dados criptografados e, em seguida, remove a chave de dados de texto não criptografado da memória, assim que possível, após o uso.

  5. O Amazon S3 envia os dados descriptografados ao cluster.

Processo para criptografar dados no EMRFS com o CSE-KMS

Quando você configura um cluster do Amazon EMR para usar o CSE-KMS, o processo de criptografia funciona da seguinte forma:

  1. Quando estiver pronto para armazenar os dados no Amazon S3, o cluster enviará uma solicitação GenerateDataKey ao AWS KMS especificando o ID da chave do KMS que você escolheu ao configurar o cluster para usar o CSE-KMS. A solicitação inclui o contexto de criptografia, para obter mais informações, consulte Contexto de criptografia.

  2. AWS KMSO gera uma chave de criptografia dos dados exclusiva (chave de dados) e envia duas cópias dessa chave de dados ao cluster. Uma cópia é não criptografada (texto simples), e a outra cópia é criptografada com a chave do KMS.

  3. O cluster usa a chave de dados de texto simples para criptografar os dados e remove a chave de dados de texto simples da memória, assim que possível após o uso.

  4. O cluster combina os dados criptografados e a cópia criptografada da chave de dados em conjunto em um único objeto criptografado.

  5. O cluster envia o objeto criptografado para o Amazon S3 para armazenamento.

O processo de descriptografia funciona desta forma:

  1. O cluster solicita o objeto de dados criptografado de um bucket do S3.

  2. O Amazon S3 envia o objeto criptografado ao cluster.

  3. O cluster extrai a chave de dados criptografada do objeto criptografado e envia a chave de dados criptografada ao AWS KMS com uma solicitação Decrypt. A solicitação inclui o contexto de criptografia.

  4. AWS KMSO descriptografa a chave de dados criptografada usando a mesma chave do KMS que foi usada para criptografá-la e, em seguida, envia a chave de dados descriptografada (em texto simples) ao cluster.

  5. O cluster usa a chave de dados de texto simples para descriptografar os dados criptografados e remove a chave de dados de texto simples da memória, assim que possível após o uso.

Criptografar dados nos volumes de armazenamento dos nós de cluster

Um cluster do Amazon EMR é um conjunto de instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Cada instância no cluster é chamada de um nó de cluster ou . Cada nó pode ter dois tipos de volumes de armazenamento: volumes de armazenamento de instância e volumes do Amazon Elastic Block Store (Amazon EBS). Você pode configurar o cluster para usar Linux Unified Key Setup (LUKS) para criptografar ambos os tipos de volumes de armazenamento nos nós (mas não o volume de inicialização de cada nó). Isso é chamado de criptografia de disco local.

Ao habilitar a criptografia de disco local para um cluster, você pode optar por criptografar a chave LUKS com uma chave do KMS no AWS KMS. É necessário selecionar uma chave gerenciada pelo cliente criada por você. Não é possível usar uma Chave gerenciada pela AWS. Se você escolher uma chave gerenciada pelo cliente, será necessário garantir que o cluster do Amazon EMR tenha permissão para usar a chave do KMS. Para obter mais informações, consulteUsar AWS KMS keys para criptografia, noGuia de gerenciamento do Amazon EMR.

Quando você habilita a criptografia de disco local usando uma chave do KMS, o processo de criptografia funciona desta forma:

  1. Quando cada nó de cluster é iniciado, ele envia uma solicitação GenerateDataKey ao AWS KMS especificando o ID de chave do KMS que você escolheu ao habilitar a criptografia de disco local para o cluster.

  2. AWS KMSO gera uma chave de criptografia dos dados exclusiva (chave de dados) e envia duas cópias dessa chave de dados ao nó. Uma cópia é não criptografada (texto simples), e a outra cópia é criptografada com a chave do KMS.

  3. O nó usa uma versão codificada em base64 da chave de dados em texto simples como a senha que protege a chave LUKS. O nó salva a cópia criptografada da chave de dados em seu volume de inicialização.

  4. Se o nó for reinicializado, ele enviará a chave de dados criptografada ao AWS KMS com uma solicitação Decrypt.

  5. AWS KMSO descriptografa a chave de dados criptografada usando a mesma chave do KMS que foi usada para criptografá-la e, em seguida, envia a chave de dados descriptografada (em texto simples) ao nó.

  6. O nó usa uma versão codificada em base64 da chave de dados de texto simples como a senha para desbloquear a chave LUKS.

Contexto de criptografia

Cada serviço da AWS integrado ao AWS KMS pode especificar um contexto de criptografia ao usar o AWS KMS para gerar chaves de dados ou para criptografar ou descriptografar dados. O contexto de criptografia são informações adicionais autenticadas que o AWS KMS usa para verificar a integridade dos dados. Quando um serviço especifica um contexto de criptografia para uma operação de criptografia, ele deve especificar o mesmo contexto de criptografia para a operação de descriptografia correspondente ou a descriptografia não terá êxito. O contexto de criptografia também é gravado em arquivos de log do AWS CloudTrail, o que pode ajudar você a entender por que uma determinada chave do KMS foi usada.

A seção a seguir explica o contexto de criptografia usado em cada cenário de criptografia do Amazon EMR que usa uma chave do KMS.

Contexto de criptografia para criptografia EMRFS com o SSE-KMS

Com o SSE-KMS, o cluster Amazon EMR; envia dados ao Amazon S3 e, em seguida, o Amazon S3 usa uma chave do KMS para criptografar esses dados antes de enviá-los a um bucket do S3. Neste caso, o Amazon S3 usa o Amazon Resource Name (ARN) do objeto do S3 como contexto de criptografia com cada solicitação GenerateDataKey e Decrypt que ele envia ao AWS KMS. O exemplo a seguir mostra uma representação JSON do contexto de criptografia usado pelo Amazon S3.

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

Contexto de criptografia para criptografia EMRFS com o CSE-KMS

Com o CSE-KMS, o cluster do Amazon EMR usa uma chave do KMS para criptografar os dados antes de os enviar ao Amazon S3 para armazenamento. Nesse caso, o cluster usa o Amazon Resource Name (ARN) do contexto de criptografia da chave do KMS com cada solicitação GenerateDataKey e Decrypt que envia ao AWS KMS. O exemplo a seguir mostra uma representação JSON do contexto de criptografia que o cluster usa.

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

Contexto de criptografia para criptografia de disco local com LUKS

Quando um cluster do Amazon EMR usa criptografia de disco local com o LUKS, os nós de cluster não especificam o contexto de criptografia com as solicitações GenerateDataKey e Decrypt que enviam ao AWS KMS.