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á.
Crie chaves e certificados para criptografia de dados com a Amazon EMR
Antes de especificar as opções de criptografia usando uma configuração de segurança, decida qual provedor você quer usar para as chaves e os artefatos criptográficos. Por exemplo, você pode usar AWS KMS ou um provedor personalizado criado por você. Depois, crie as chaves ou o provedor de chaves conforme descrito nesta seção.
Fornecimento de chaves para criptografia de dados em repouso
Você pode usar AWS Key Management Service (AWS KMS) ou um provedor de chave personalizado para criptografia de dados em repouso na AmazonEMR. Quando você usa AWS KMS, cobranças são cobradas pelo armazenamento e uso de chaves de criptografia. Para obter mais informações, consulte Definição de preço do AWS KMS
Este tópico fornece os principais detalhes da política de uma KMS chave a ser usada com a AmazonEMR, bem como diretrizes e exemplos de código para escrever uma classe de provedor de chaves personalizada para a criptografia do Amazon S3. Para obter mais informações sobre como criar chaves, consulte Creating keys no Guia do desenvolvedor do AWS Key Management Service .
Usando AWS KMS keys para criptografia
A chave de AWS KMS criptografia deve ser criada na mesma região da sua instância de EMR cluster da Amazon e dos buckets do Amazon S3 usados com. EMRFS Se a chave que você especificar estiver em uma conta diferente daquela usada para configurar um cluster, você deverá especificar a chave usando suaARN.
A função do perfil da EC2 instância da Amazon deve ter permissões para usar a KMS chave que você especificar. A função padrão para o perfil da instância na Amazon EMR éEMR_EC2_DefaultRole
. Se você usar uma função diferente para o perfil da instância ou usar IAM funções para EMRFS solicitações ao Amazon S3, certifique-se de que cada função seja adicionada como um usuário chave, conforme apropriado. Isso dá à função permissões para usar a KMS chave. Para obter mais informações, consulte Usando políticas de chaves no Guia do AWS Key Management Service desenvolvedor e Configurar IAM funções para EMRFS solicitações ao Amazon S3.
Você pode usar o AWS Management Console para adicionar seu perfil de instância ou perfil de EC2 instância à lista de usuários de chave para a KMS chave especificada, ou você pode usar o AWS CLI ou an AWS SDK para anexar uma política de chaves apropriada.
Observe que a Amazon EMR oferece suporte somente a KMSchaves simétricas. Você não pode usar uma KMSchave assimétrica para criptografar dados em repouso em um cluster da Amazon. EMR Para obter ajuda para determinar se uma KMS chave é simétrica ou assimétrica, consulte Identificação de chaves simétricas e assimétricas. KMS
O procedimento abaixo descreve como adicionar o perfil de EMR instância padrão da Amazon, EMR_EC2_DefaultRole
como um usuário chave usando AWS Management Console o. Ele pressupõe que você já tenha criado uma KMS chave. Para criar uma nova KMS chave, consulte Criação de chaves no Guia do AWS Key Management Service desenvolvedor.
Para adicionar o perfil de EC2 instância da Amazon EMR à lista de usuários da chave de criptografia
-
Faça login no console AWS Management Console e abra o AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.
-
Selecione o alias da KMS chave a ser modificada.
-
Na página de detalhes da chave, em Key Users (Usuários de chaves), escolha Add (Adicionar).
-
Na caixa de diálogo Add key users (Adicionar usuários da chave) selecione a função apropriada. O nome da função padrão é
EMR_EC2_DefaultRole
. -
Escolha Adicionar.
Ativando a EBS criptografia fornecendo permissões adicionais para KMS chaves
A partir da EMR versão 5.24.0 da Amazon, você pode criptografar o dispositivo EBS raiz e os volumes de armazenamento usando uma opção de configuração de segurança. Para ativar essa opção, você deve especificar AWS KMS como seu provedor de chaves. Além disso, você deve conceder à função EMR_DefaultRole
de serviço permissões para usar o AWS KMS key que você especificar.
Você pode usar o AWS Management Console para adicionar a função de serviço à lista de usuários principais da KMS chave especificada ou pode usar o AWS CLI ou an AWS SDK para anexar uma política de chaves apropriada.
O procedimento a seguir descreve como usar o AWS Management Console para adicionar a função de EMR serviço padrão da Amazon EMR_DefaultRole
como um usuário chave. Ele pressupõe que você já tenha criado uma KMS chave. Para criar uma nova KMS chave, consulte Criação de chaves no Guia do AWS Key Management Service desenvolvedor.
Para adicionar a função EMR de serviço da Amazon à lista de usuários da chave de criptografia
-
Faça login no console AWS Management Console e abra o AWS Key Management Service (AWS KMS) em https://console.aws.amazon.com/kms
. -
Para alterar o Região da AWS, use o seletor de região no canto superior direito da página.
-
Escolha Chaves gerenciadas pelo cliente na barra lateral esquerda.
-
Selecione o alias da KMS chave a ser modificada.
-
Na página de detalhes da chave, em Key Users (Usuários de chaves), escolha Add (Adicionar).
-
Na seção Adicionar usuários da chave selecione o perfil apropriado. O nome da função de serviço padrão da Amazon EMR é
EMR_DefaultRole
. -
Escolha Adicionar.
Criar um provedor de chaves personalizado
Ao usar uma configuração de segurança, você deve especificar um nome de classe de provedor diferente para a criptografia de disco local e para a criptografia do Amazon S3. Os requisitos para o provedor de chave personalizada dependem de você usar criptografia de disco local e criptografia Amazon S3, bem como a versão de EMR lançamento da Amazon.
Dependendo do tipo de criptografia que você usa ao criar um provedor de chave personalizado, o aplicativo também deve implementar EncryptionMaterialsProvider interfaces diferentes. Ambas as interfaces estão disponíveis na versão 1.11.0 e posterior AWS SDK para Java.
-
Para implementar a criptografia de disco local, use com.amazonaws.services.elasticmapreduce.spi.security. EncryptionMaterialsProvider interface.
Você pode usar qualquer estratégia para fornecer materiais de criptografia para a implementação. Por exemplo, você pode optar por fornecer materiais de criptografia estáticos ou fazer uma integração com um sistema de gerenciamento de chaves mais complexo.
Se você estiver usando a criptografia do Amazon S3, deverá usar os algoritmos de criptografia AES/GCM/NoPaddingpara materiais de criptografia personalizados.
Se você estiver usando criptografia de disco local, o algoritmo de criptografia a ser usado para materiais de criptografia personalizados varia de acordo com a EMR versão. Para Amazon EMR 7.0.0 e versões anteriores, você deve usar AES/GCM/NoPadding. Para Amazon EMR 7.1.0 e superior, você deve usar AES.
A EncryptionMaterialsProvider classe obtém materiais de criptografia por contexto de criptografia. A Amazon EMR preenche as informações do contexto de criptografia em tempo de execução para ajudar o chamador a determinar os materiais de criptografia corretos a serem devolvidos.
exemplo Exemplo: Usando um provedor de chave personalizado para criptografia do Amazon S3 com EMRFS
Quando a Amazon EMR busca os materiais de criptografia da EncryptionMaterialsProvider classe para realizar a criptografia, EMRFS opcionalmente preenche o materialsDescription argumento com dois campos: o Amazon S3 URI para o objeto e o JobFlowId do cluster, que podem ser usados pela EncryptionMaterialsProvider classe para retornar materiais de criptografia seletivamente.
Por exemplo, o provedor pode retornar chaves diferentes para diferentes prefixos do Amazon S3URI. É a descrição dos materiais de criptografia retornados que são eventualmente armazenados com o objeto Amazon S3, em vez do materialsDescription valor que é gerado EMRFS e passado para o provedor. Ao descriptografar um objeto do Amazon S3, a descrição do material de criptografia é passada para a EncryptionMaterialsProvider classe, para que ela possa, novamente, retornar seletivamente a chave correspondente para descriptografar o objeto.
Uma implementação de EncryptionMaterialsProvider referência é fornecida abaixo. Outro provedor personalizado, EMRFSRSAEncryptionMaterialsProvider
import com.amazonaws.services.s3.model.EncryptionMaterials; import com.amazonaws.services.s3.model.EncryptionMaterialsProvider; import com.amazonaws.services.s3.model.KMSEncryptionMaterials; import org.apache.hadoop.conf.Configurable; import org.apache.hadoop.conf.Configuration; import java.util.Map; /** * Provides KMSEncryptionMaterials according to Configuration */ public class MyEncryptionMaterialsProviders implements EncryptionMaterialsProvider, Configurable{ private Configuration conf; private String kmsKeyId; private EncryptionMaterials encryptionMaterials; private void init() { this.kmsKeyId = conf.get("my.kms.key.id"); this.encryptionMaterials = new KMSEncryptionMaterials(kmsKeyId); } @Override public void setConf(Configuration conf) { this.conf = conf; init(); } @Override public Configuration getConf() { return this.conf; } @Override public void refresh() { } @Override public EncryptionMaterials getEncryptionMaterials(Map<String, String> materialsDescription) { return this.encryptionMaterials; } @Override public EncryptionMaterials getEncryptionMaterials() { return this.encryptionMaterials; } }
Fornecendo certificados para criptografar dados em trânsito com a criptografia da Amazon EMR
Com a EMR versão 4.8.0 ou posterior da Amazon, você tem duas opções para especificar artefatos para criptografar dados em trânsito usando uma configuração de segurança:
-
Você pode criar PEM certificados manualmente, incluí-los em um arquivo.zip e depois referenciar o arquivo.zip no Amazon S3.
-
É possível implementar um provedor de certificados personalizado como uma classe Java. Você especifica o JAR arquivo do aplicativo no Amazon S3 e, em seguida, fornece o nome completo da classe do provedor conforme declarado no aplicativo. A classe deve implementar a TLSArtifactsProviderinterface disponível a partir da AWS SDK for Java versão 1.11.0.
A Amazon baixa EMR automaticamente os artefatos para cada nó no cluster e depois os usa para implementar os recursos de criptografia de código aberto em trânsito. Para obter mais informações sobre as opções disponíveis, consulte Criptografia em trânsito.
Usando PEM certificados
Quando você especifica um arquivo.zip para criptografia em trânsito, a configuração de segurança espera que PEM os arquivos dentro do arquivo.zip sejam nomeados exatamente como aparecem abaixo:
Nome do arquivo | Obrigatório/opcional | Detalhes |
---|---|---|
privateKey.pem | Obrigatório | Chave privada |
certificateChain.pem | Obrigatório | Cadeia de certificados |
trustedCertificates.pem | Opcional | Recomendamos que você forneça um certificado que não seja assinado pela autoridade de certificação (CA) raiz confiável padrão Java ou por uma CA intermediária que possa vincular-se à CA raiz confiável padrão Java. Não recomendamos que você use public CAs ao usar certificados curinga ou ao desativar a verificação do nome do host. |
É provável que você queira configurar o PEM arquivo de chave privada para ser um certificado curinga que permita o acesso ao VPC domínio da Amazon no qual suas instâncias de cluster residem. Por exemplo, se o seu cluster reside em us-east-1 (Norte da Virgínia), você pode optar por especificar um nome comum na configuração do certificado que permita o acesso ao cluster, especificando CN=*.ec2.internal
na definição de requerente do certificado. Se o seu cluster residir em us-west-2 (Oregon), poderá especificar CN=*.us-west-2.compute.internal
.
Se o PEM arquivo fornecido no artefato de criptografia não tiver um caractere curinga para o domínio no nome comum, você deverá alterar o valor de hadoop.ssl.hostname.verifier
para. ALLOW_ALL
Para fazer isso nas EMR versões 7.3.0 e superiores da Amazon, adicione a core-site
classificação ao enviar configurações para um cluster. Nas versões anteriores à 7.3.0, adicione a configuração "hadoop.ssl.hostname.verifier": "ALLOW_ALL"
diretamente ao arquivo core-site.xml
. Essa alteração é necessária porque o verificador do nome de host padrão exige um nome de host sem curinga, pois todos os hosts do cluster o usam. Para obter mais informações sobre a configuração de EMR clusters em uma AmazonVPC, consulteConfigurar a rede em um VPC para a Amazon EMR.
O exemplo a seguir demonstra como usar o Open SSLus-west-2
(Oregon), conforme especificado pelo nome de
domínio como nome comum.*.us-west-2.compute.internal
Outros itens de requerente opcionais como país (C), estado (S) e Localidade (L) são especificados. Como um certificado autoassinado é gerado, o segundo comando no exemplo copia o arquivo certificateChain.pem
no arquivo trustedCertificates.pem
. O terceiro comando usa zip
para criar o arquivo my-certs.zip
que contém os certificados.
Importante
Este exemplo é apenas uma proof-of-concept demonstração. O uso de certificados autoassinados não é recomendado e apresenta um possível risco de segurança. Para sistemas de produção, use uma autoridade de certificação (AC) confiável para emitir certificados.
$ openssl req -x509 -newkey rsa:2048 -keyout privateKey.pem -out certificateChain.pem -days 365 -nodes -subj '/C=US/ST=Washington/L=Seattle/O=MyOrg/OU=MyDept/CN=*.us-west-2.compute.internal' $ cp certificateChain.pem trustedCertificates.pem $ zip -r -X my-certs.zip certificateChain.pem privateKey.pem trustedCertificates.pem