Usar autenticação LDAP para o Presto no 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á.

Usar autenticação LDAP para o Presto no Amazon EMR

Siga as etapas nesta seção para configurar LDAP. Consulte cada etapa para obter exemplos e links para mais informações.

Etapa 1: coletar informações sobre o servidor LDAP e copiar o certificado do servidor para o Amazon S3

Você precisará dos itens e informações na seção a seguir do seu servidor LDAP para configurar a autenticação LDAP.

O endereço IP ou o nome do host do servidor LDAP

O coordenador do Presto no nó principal do Amazon EMR deve ser capaz de acessar o servidor LDAP no endereço IP ou nome de host especificado. Por padrão, o Presto se comunica com o servidor LDAP usando LDAPS pela porta 636. Se sua implementação do LDAP exige uma porta personalizada, você pode especificá-la usando a propriedade ldap.url com as versões 5.16.0 ou posteriores do Amazon EMR ou usando authentication.ldap.url com versões anteriores. Substitua a porta personalizada em 636, conforme mostrado nos exemplos da classificação de configuração presto-config em Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP. Verifique se todos os firewalls e grupos de segurança permitem o tráfego de entrada e saída na porta 636 (ou na porta personalizada) e também na porta 8446 (ou na porta personalizada), que é usada para comunicações do cluster interno.

O certificado do servidor LDAP

Você deve carregar o arquivo do certificado em um local seguro no Amazon S3. Para obter mais informações, consulte Como carregar arquivos e pastas em um bucket do S3 no Guia do usuário do Amazon Simple Storage Service. Crie uma ação de bootstrap que copie esse certificado do Amazon S3 em cada nó do cluster quando esse cluster é iniciado. Em Etapa 4: criar o script para copiar o certificado do servidor LDAP e carregá-lo no Amazon S3. O certificado de exemplo és3://amzn-s3-demo-bucket/ldap_server.crt.

As configurações do servidor LDAP para associação anônima

Se a associação anônima estiver desabilitada no PrestoDB, você precisará do ID de usuário (UID) e da senha de uma conta com permissões para associação ao servidor LDAP, para que o servidor PrestoDB possa estabelecer uma conexão. Especifique o UID e a senha usando as propriedades internal-communication.authentication.ldap.user e internal-communication.authentication.ldap.password na classificação de configuração presto-config. O Amazon EMR 5.10.0 não é compatível com essas configurações, portanto, a associação anônima deve ser compatível com o servidor LDAP quando você usa esta versão.

Observe que o Trino não exige a configuração de vinculação anônima.

Para obter o status da associação anônima no servidor LDAP
  • Use o comando ldapwhoami do cliente Linux, conforme mostrado no exemplo a seguir:

    ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress

    Se a associação anônima não for permitida, o comando retornará o seguinte:

    ldap_bind: Inappropriate authentication (48) additional info: anonymous bind disallowed
Para verificar se uma conta tem as permissões para um servidor LDAP que usa autenticação simples
  • Use o comando ldapwhoami do cliente Linux, conforme mostrado no exemplo a seguir. O exemplo usa um usuário fictício,presto, armazenado em um servidor Open LDAP executado em uma EC2 instância com o nome de host fictício. ip-xxx-xxx-xxx-xxx.ec2.internal O usuário está associado à unidade organizacional (OU) admins e à senha123456:

    ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal

    Se a conta for válida e tiver as permissões adequadas, o comando retornará:

    dn:uid=presto,ou=admins,dc=ec2,dc=internal

As configurações de exemplo em Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP incluem essa conta para maior clareza, com exceção do exemplo de 5.10.0, em que ela não é compatível. Se o servidor LDAP usa a associação anônima, remova internal-communication.authentication.ldap.user e os pares de nome/valor internal-communication.authentication.ldap.password.

O nome diferenciado (DN) LDAP para usuários do Presto

Ao especificar a configuração LDAP para o Presto, você especifica um padrão de associação que consiste ${USER} em uma unidade organizacional (OU) e componentes de domínio adicionais (). DCs O Presto substitui ${USER} pelo ID de usuário (UID) real de cada usuário durante a autenticação de senha para corresponder ao nome diferenciado (DN) que esse padrão de associação especifica. Você precisa do OUs que os usuários qualificados pertencem e deles DCs. Por exemplo, para permitir que os usuários da OU admins no domínio corp.example.com autentiquem para o Presto, especifique ${USER},ou=admins,dc=corp,dc=example,dc=com como o padrão de associação do usuário.

nota

Ao usar AWS CloudFormation, você precisa usar a função Fn: :Sub para substituí-la pela ${USER} ID de usuário (UID) real. Para obter mais informações, consulte o tópico Fn::Sub no Guia do usuário do AWS CloudFormation .

Ao usar o Amazon EMR 5.10.0, você só pode especificar um padrão desse tipo. Ao usar as versões 5.11.0 ou posteriores do Amazon EMR, você pode especificar vários padrões separados por dois-pontos (:). Os usuários que tentam autenticar para o Presto são comparados com o primeiro padrão, o segundo, e assim por diante. Para obter um exemplo, consulte Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP.

Etapa 2: definir uma configuração de segurança

Crie uma configuração de segurança com a criptografia em trânsito habilitada. Para obter mais informações, consulte Criar uma configuração de segurança no Guia de gerenciamento do Amazon EMR. Os artefatos de criptografia que você fornece ao configurar a criptografia em trânsito são usados para criptografar a comunicação interna entre os nós Presto. Para obter mais informações, consulte Fornecer certificados para criptografia de dados em trânsito. O certificado do servidor LDAP é usado para autenticar conexões de clientes ao servidor Presto.

Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP

Você pode usar a classificação de configuração presto-config para definir as propriedades do Presto para LDAP. O formato e o conteúdo de presto-config são ligeiramente diferentes, dependendo da versão do Amazon EMR e da instalação do Presto (PrestoDB ou Trino). Exemplos de diferenças de configuração serão fornecidos posteriormente nesta seção. Para obter mais informações, consulte Configurar aplicações.

As etapas a seguir pressupõem que você salve os dados JSON em um arquivo,MyPrestoConfig.json. Se você usa o console, carregue o arquivo em um local seguro no Amazon S3 para poder fazer referência a ele quando criar o cluster. Se você usar o AWS CLI, poderá referenciar o arquivo localmente.

exemplo Versões 6.1.0 e posteriores do Amazon EMR com PrestoSQL (Trino)

O exemplo a seguir usa o nome de host LDAP de Etapa 1: coletar informações sobre o servidor LDAP e copiar o certificado do servidor para o Amazon S3 para autenticação no servidor LDAP para associação. Dois padrões de associação do usuário são especificados, o que indica que os usuários dentro da unidade organizacional (UO) admins e da UO datascientists no servidor LDAP estão qualificados para autenticação ao servidor Trino como usuários. Os padrões de associação são separados com uma vírgula (:).

As versões 6.4.0 e posteriores do Amazon EMR usam o novo nome Trino em vez de PrestoSQL. Se você usa o Trino, substitua prestosql-config na seguinte classificação de configuração por trino-config e prestosql-password-authenticator por trino-password-authenticator.

[ { "Classification":"prestosql-config", "Properties":{ "http-server.authentication.type":"PASSWORD" } }, { "Classification":"prestosql-password-authenticator", "Properties":{ "password-authenticator.name":"ldap", "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal" } } ]
exemplo Versões 5.16.0 e posteriores do Amazon EMR

O exemplo a seguir usa o ID de usuário, a senha e o nome de host LDAP de Etapa 1: coletar informações sobre o servidor LDAP e copiar o certificado do servidor para o Amazon S3 para autenticar ao servidor LDAP para associação. Dois padrões de associação do usuário são especificados, o que indica que os usuários dentro da OU admins e da OU datascientists no servidor LDAP estão qualificados para autenticação ao servidor Presto como usuários. Os padrões de associação são separados com uma vírgula (:).

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "PASSWORD" } }, { "Classification": "presto-password-authenticator", "Properties": { "password-authenticator.name": "ldap", "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal", "internal-communication.authentication.ldap.user": "presto", "internal-communication.authentication.ldap.password": "123456" } }]
exemplo Amazon EMR 5.11.0 a 5.15.0

O formato da classificação de configuração presto-config é um pouco diferente para essas versões. O exemplo a seguir especifica os mesmos parâmetros que o exemplo anterior.

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "LDAP", "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal", "internal-communication.authentication.ldap.user": "presto", "internal-communication.authentication.ldap.password": "123456" } }]
exemplo Amazon EMR 5.10.0

O Amazon EMR 5.10.0 só é compatível com associação anônima. Portanto, essas entradas são omitidas. Além disso, apenas um único padrão de associação pode ser especificado.

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "LDAP", "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal" } }]

Etapa 4: criar o script para copiar o certificado do servidor LDAP e carregá-lo no Amazon S3

Crie um script que copie o arquivo do certificado em cada dó no cluster e o adicione ao repositório de chaves. Crie o script usando um editor de texto, salve-o e carregue-o no Amazon S3. EmEtapa 5: criar um cluster, o arquivo de script é referenciado comos3://amzn-s3-demo-bucket/LoadLDAPCert.sh.

O script de exemplo a seguir usa a senha padrão do keystore,changeit. Recomendamos que você se conecte ao nó principal após criar o cluster e alterar a senha do repositório de chaves usando o comando keytool.

#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt . sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt

Etapa 5: criar um cluster

Ao criar o cluster, especifique o Presto e outras aplicações que você deseja que o Amazon EMR instale. Os exemplos a seguir também fazem referência às propriedades da classificação de configuração em um JSON, mas você também pode especificar a classificação de configuração em linha.

Criar um cluster do Presto com autenticação LDAP usando o console do Amazon EMR
  1. Navegue até o novo console do Amazon EMR e selecione Alternar para o console antigo na navegação lateral. Para obter mais informações sobre o que esperar ao alternar para o console antigo, consulte Usar o console antigo.

  2. Escolha Create cluster (Criar cluster), Go to advanced options (Ir para opções avançadas).

  3. Selecione Presto e outras aplicações para o Amazon EMR instalar e, em Configuração de software, selecione a Versão do Amazon EMR a ser usada. A autenticação LDAP só é compatível com as versões 5.10.0 e posteriores do Amazon EMR.

  4. Em Editar configurações de software, selecione Carregar JSON do S3, insira o local no Amazon S3 do arquivo de configuração JSON que você criou em Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP e, em seguida, selecione Próximo.

  5. Configure os recursos de hardware e rede do cluster e, em seguida, selecione Next (Próximo).

  6. Selecione Bootstrap Actions (Ações de bootstrap). Em Add bootstrap action (Adicionar ação de bootstrap), selecione Custom action (Personalizar ação) e, em seguida, selecione Configure and add (Configurar e adicionar).

  7. Insira um nome para a ação de bootstrap, insira a localização do script que você criouEtapa 4: criar o script para copiar o certificado do servidor LDAP e carregá-lo no Amazon S3, por exemplo, s3://amzn-s3-demo-bucket/Load LDAPCert .sh, e escolha Adicionar.

  8. Em General Options (Opções gerais), Tags e Additional Options (Opções adicionais), selecione as configurações adequadas para o seu aplicativo e, em seguida, selecione Next (Próximo).

  9. Selecione Authentication and encryption (Autenticação e criptografia) e, em seguida, selecione a Security configuration (Configuração de segurança) que você criou em Etapa 2: definir uma configuração de segurança.

  10. Selecione outras opções de segurança conforme adequado para o seu aplicativo e, em seguida, selecione Create cluster (Criar cluster).

Para criar um cluster do Presto com autenticação LDAP usando a AWS CLI
  • Use o comando aws emr create-cluster. No mínimo, especifique o aplicativo do Presto e também a classificação de configuração, o script de bootstrap e a configuração de segurança do Presto que você criou nas etapas anteriores. O exemplo a seguir faz referência ao arquivo de configuração como um arquivo JSON salvo no mesmo diretório em que você executa o comando. Por outro lado, o script de bootstrap deve ser salvo no Amazon S3. O exemplo a seguir usa s3://amzn-s3-demo-bucket/LoadLDAPCert.sh.

    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 (^).

    aws emr create-cluster --applications Name=presto --release-label emr-5.16.0 \ --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \ --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json