Criptografia transparente no HDFS com o Amazon EMR - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criptografia transparente no HDFS com o Amazon EMR

A criptografia transparente é implementada com o uso de zonas de criptografia HDFS, que são caminhos HDFS que você mesmo define. Cada zona de criptografia tem sua própria chave, que é armazenada no servidor de chaves especificado usando a classificação da configuração hdfs-site.

A partir do Amazon EMR versão 4.8.0, você pode usar as configurações de segurança do Amazon EMR para definir configurações de criptografia de dados para clusters com mais facilidade. Configurações de segurança oferecem configurações para habilitar a segurança dos dados em trânsito e dos dados em repouso em volumes de armazenamento do Amazon Elastic Block Store (Amazon EBS) e dados do EMRFS no Amazon S3. Para obter mais informações, consulte Encrypt data in transit and at rest, no Guia de gerenciamento do Amazon EMR.

O Amazon EMR usa o Hadoop KMS por padrão; no entanto, você pode usar outro KMS que implemente a operação da API. KeyProvider Cada arquivo em uma zona de criptografia HDFS tem sua própria chave de criptografia de dados exclusiva, que é criptografada pela chave de zona de criptografia. Os dados do HDFS são criptografados end-to-end (em repouso e em trânsito) quando são gravados em uma zona de criptografia porque as atividades de criptografia e descriptografia ocorrem somente no cliente.

Você não pode mover arquivos entre zonas de criptografias ou de uma zona de criptografia para caminhos não criptografados.

O cliente NameNode e o HDFS interagem com o Hadoop KMS (ou um KMS alternativo que você configurou) por meio da operação da API. KeyProvider O KMS é responsável por armazenar chaves de criptografia no repositório de chaves de suporte. Além disso, o Amazon EMR inclui a política de força ilimitada JCE e, portanto, você pode criar chaves com o comprimento desejado.

Para obter mais informações, consulte Transparent encryption in HDFS na documentação do Hadoop.

nota

No Amazon EMR, o KMS via HTTPS não está habilitado por padrão com o Hadoop KMS. Para obter mais informações sobre como habilitar o KMS por HTTPS, consulte a Documentação do Hadoop KMS.

Configurar a criptografia transparente do HDFS

É possível configurar a criptografia transparente no Amazon EMR criando chaves e adicionando zonas de criptografia. Você pode fazer isso de várias maneiras:

  • Usar a operação da API de configuração do Amazon EMR ao criar um cluster

  • Usando uma etapa Hadoop JAR com command-runner.jar

  • Fazendo login no nó principal do cluster Hadoop e usando os clientes de linha de comando hadoop key e hdfs crypto

  • Usando as APIs REST para o Hadoop KMS e o HDFS

Para obter mais informações sobre as APIs REST, consulte a respectiva documentação do Hadoop KMS e do HDFS.

Para criar zonas de criptografia e suas chaves na criação de cluster usando a CLI

A classificaçãohdfs-encryption-zones na operação da API de configuração permite que você especifique um nome de chave e uma zona de criptografia ao criar um cluster. O Amazon EMR cria essa chave no Hadoop KMS no cluster e configura a zona de criptografia.

  • Crie um cluster com o comando a seguir.

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

    myConfig.json:

    [ { "Classification": "hdfs-encryption-zones", "Properties": { "/myHDFSPath1": "path1_key", "/myHDFSPath2": "path2_key" } } ]
Para criar zonas de criptografia e suas chaves manualmente no nó principal
  1. Inicie o cluster usando uma versão do Amazon EMR superior a 4.1.0.

  2. Conecte-se ao nó principal do cluster com SSH.

  3. Crie uma chave no Hadoop KMS.

    $ hadoop key create path2_key path2_key has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=256, description='null', attributes=null}. KMSClientProvider[http://ip-x-x-x-x.ec2.internal:16000/kms/v1/] has been updated.
    Importante

    O Hadoop KMS exige que os nomes das suas chaves estejam em minúsculas. Se você usar uma chave que tenha caracteres em maiúsculas, seu cluster falhará durante a execução.

  4. Crie o caminho da zona de criptografia no HDFS.

    $ hadoop fs -mkdir /myHDFSPath2
  5. Transforme o caminho do HDFS em uma zona de criptografia usando a chave que você criou.

    $ hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2 Added encryption zone /myHDFSPath2
Para criar zonas de criptografia e suas chaves manualmente usando o AWS CLI
  • Adicione etapas para criar as chaves do KMS e as zonas de criptografia manualmente com o comando a seguir.

    aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Create First Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path1_key\""] \ Type=CUSTOM_JAR,Name="Create First Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create First Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path1_key -path /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path2_key\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath2\""] \ Type=CUSTOM_JAR,Name="Create Second Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2\""]
    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

Considerações para criptografia transparente do HDFS

Uma prática recomendada é criar uma zona de criptografia para cada aplicativo, na qual eles podem gravar arquivos. Além disso, você pode criptografar todo o HDFS usando a hdfs-encryption-zones classificação na API de configuração e especificar o caminho raiz (/) como a zona de criptografia.

Servidor de gerenciamento de chaves do Hadoop

O Hadoop KMS é um servidor de gerenciamento de chaves que fornece a capacidade de implementar serviços criptográficos para clusters Hadoop e pode servir como fornecedor de caves para o Criptografia transparente no HDFS com o Amazon EMR. O Hadoop KMS no Amazon EMR é instalado e habilitado por padrão quando você seleciona a aplicação Hadoop ao executar um cluster do EMR. O Hadoop KMS não armazena as chaves por si só, exceto no caso de um armazenamento em cache temporário. O KMS do Hadoop atua como proxy entre o provedor de chaves e o agente de confiança do cliente para um repositório de chaves de suporte. Ele não é um repositório de chaves. O repositório de chaves padrão criado para o Hadoop KMS é a Java Cryptography Extension (JCEKS). KeyStore A política de força ilimitada JCE também está incluída e, portanto, é possível criar chaves com o comprimento desejado. O Hadoop KMS também oferece suporte para várias ACLs que controlam o acesso a chaves e operações de chaves independentemente de outros aplicativos cliente, como o HDFS. O comprimento de chave padrão do Amazon EMR é 256 bits.

Para configurar o Hadoop KMS, use a hadoop-kms-site classificação para alterar as configurações. Para configurar ACLs, use a classificação kms-acls.

Para obter mais informações, consulte a documentação do Hadoop KMS. O Hadoop KMS é usado na criptografia transparente do Hadoop HDFS. Para saber mais sobre a criptografia transparente do HDFS, consulte o tópico HDFS transparent encryption na documentação do Apache Hadoop.

nota

No Amazon EMR, o KMS via HTTPS não está habilitado por padrão com o Hadoop KMS. Para saber como habilitar o KMS por HTTPS, consulte a Documentação do Hadoop KMS.

Importante

O Hadoop KMS exige que os nomes das suas chaves estejam em minúsculas. Se você usar uma chave que tenha caracteres em maiúsculas, seu cluster falhará durante a execução.

Configurar o Hadoop KMS no Amazon EMR

No Amazon EMR versão 4.6.0 ou posteriores, kms-http-port é 9700 e kms-admin-port é 9701.

Você pode configurar o Hadoop KMS durante a criação do cluster usando a API de configuração para versões do Amazon EMR. Veja a seguir as classificações de objeto de configuração disponíveis para o Hadoop KMS:

Classificações de configuração do KMS do Hadoop
Classificação Nome do arquivo
hadoop-kms-site kms-site.xml
hadoop-kms-acls kms-acls.xml
hadoop-kms-env kms-env.sh
hadoop-kms-log4j kms-log4j.properties
Para configurar ACLs do Hadoop KMS usando a CLI
  • Crie um cluster com o Hadoop KMS com ACLs usando o seguinte comando:

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-acls", "Properties": { "hadoop.kms.blacklist.CREATE": "hdfs,foo,myBannedUser", "hadoop.kms.acl.ROLLOVER": "myAllowedUser" } } ]
Para desabilitar o cache do Hadoop KMS usando a CLI
  • Crie um cluster com o Hadoop KMS hadoop.kms.cache.enable definido como false, usando o seguinte comando:

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.cache.enable": "false" } } ]
Para definir variáveis de ambiente no script kms-env.sh usando a CLI
  • Altere configurações em kms-env.sh por meio da configuração hadoop-kms-env. Crie um cluster com o Hadoop KMS usando o seguinte comando:

    aws emr create-cluster --release-label emr-7.1.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=App1 Name=App2 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json
    nota

    Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

    myConfig.json:

    [ { "Classification": "hadoop-kms-env", "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_LIBRARY_PATH": "/path/to/files", "KMS_SSL_KEYSTORE_FILE": "/non/Default/Path/.keystore", "KMS_SSL_KEYSTORE_PASS": "myPass" }, "Configurations": [ ] } ] } ]

Para obter informações sobre como configurar o Hadoop KMS, consulte a documentação do Hadoop KMS.

Criptografia transparente do HDFS em clusters do EMR com múltiplos nós principais

O Apache Ranger KMS é usado em um cluster do Amazon EMR com múltiplos nós centrais para criptografia transparente no HDFS.

O Apache Ranger KMS armazena a chave raiz e as chaves de zona de criptografia (EZ) em seu Amazon RDS para um cluster do Amazon EMR com múltiplos nós primários. Para habilitar a criptografia transparente no HDFS em um cluster do Amazon EMR com múltiplos nós primários, você deverá fornecer as configurações a seguir.

  • O Amazon RDS ou seu próprio URL de conexão do servidor MySQL para armazenar a chave raiz do Ranger KMS e a chave da EZ

  • Nome de usuário e senha do MySQL

  • Senha para chave raiz do KMS do Ranger

  • Arquivo PEM da autoridade de certificação (CA) para conexão SSL ao servidor MySQL

Você pode fornecer essas configurações usando as classificações ranger-kms-dbks-site e ranger-kms-db-ca, como demonstra o exemplo a seguir.

[ { "Classification": "ranger-kms-dbks-site", "Properties": { "ranger.ks.jpa.jdbc.url": "jdbc:log4jdbc:mysql://mysql-host-url.xx-xxx-1.xxx.amazonaws.com:3306/rangerkms", "ranger.ks.jpa.jdbc.user": "mysql-user-name", "ranger.ks.jpa.jdbc.password": "mysql-password", "ranger.db.encrypt.key.password": "password-for-encrypting-a-master-key" } }, { "Classification": "ranger-kms-db-ca", "Properties": { "ranger.kms.trust.ca.file.s3.url": "s3://rds-downloads/rds-ca-2019-root.pem" } } ]

Veja a seguir as classificações de objetos de configuração para o Apache Ranger KMS.

Classificações de configuração do KMS do Hadoop
Classificação Descrição
ranger-kms-dbks-site Altere os valores no arquivo dbks-site.xml do Ranger KMS.
ranger-kms-site Altere os valores no ranger-kms-site arquivo.xml do Ranger KMS.
ranger-kms-env Altere os valores no ambiente do Ranger KMS.
ranger-kms-log4j Altere os valores no arquivo kms-log4j.properties do Ranger KMS.
ranger-kms-db-ca Altere os valores do arquivo CA no S3 para conexão SSL do MySQL com o Ranger KMS.

Considerações

  • É altamente recomendável criptografar sua instância do Amazon RDS para melhorar a segurança. Para obter mais informações, consulte Visão geral da criptografia de recursos do Amazon RDS.

  • É altamente recomendável que você use um banco de dados MySQL separado para cada cluster do Amazon EMR com múltiplos nós primários a fim de criar barreiras de alta segurança.

  • Para configurar a criptografia transparente no HDFS em um cluster do Amazon EMR com múltiplos nós primários, você deverá especificar a classificação hdfs-encryption-zones ao criar o cluster. Caso contrário, o Ranger KMS não será configurado ou iniciado. Não há suporte para reconfigurar a classificação hdfs-encryption-zones ou qualquer uma das classificações de configuração em um cluster em execução no cluster do Amazon EMR com múltiplos nós primários.