Usando a LDAP autenticação para o Presto na 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á.

Usando a LDAP autenticação para o Presto na Amazon EMR

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

Etapa 1: Colete informações sobre seu LDAP servidor e copie o certificado do servidor para o Amazon S3

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

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

O coordenador do Presto no nó EMR principal da Amazon deve ser capaz de acessar o LDAP servidor no endereço IP ou nome do host especificado. Por padrão, o Presto se comunica com o LDAP servidor usando a porta LDAPS 636. Se sua LDAP implementação exigir uma porta personalizada, você pode especificá-la usando a ldap.url propriedade com o Amazon EMR 5.16.0 ou posterior, 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 as 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 LDAP do servidor

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: Crie o script para copiar o certificado LDAP do servidor e carregá-lo no Amazon S3. O certificado de exemplo é s3://amzn-s3-demo-bucket/ldap_server.crt.

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

Se a vinculação anônima estiver desativada no PrestoDB, você precisará do ID de usuário UID () e da senha de uma conta com permissões para se vincular ao servidor para que LDAP o servidor PrestoDB possa estabelecer uma conexão. Você especifica a senha UID e usando as internal-communication.authentication.ldap.password propriedades internal-communication.authentication.ldap.user e na classificação presto-config de configuração. O Amazon EMR 5.10.0 não oferece suporte a essas configurações, portanto, a vinculação anônima deve ser suportada no LDAP servidor quando você usa esta versão de lançamento.

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

Para obter o status de vinculação anônima no LDAP servidor
  • 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 permissões para um LDAP servidor 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 LDAP servidor Open 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 com a senha 123456:

    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 as 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 LDAP servidor usar associação anônima, remova os internal-communication.authentication.ldap.user pares internal-communication.authentication.ldap.password nome/valor e.

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

Ao especificar a LDAP configuração do Presto, você especifica um padrão de vinculação que consiste ${USER} em uma unidade organizacional (OU) e componentes de domínio adicionais (DCs). O Presto ${USER} substitui pelo ID de usuário (UID) real de cada usuário durante a autenticação por senha para corresponder ao nome distinto (DN) que esse padrão de associação especifica. Você precisa do OUs que os usuários qualificados pertencem e delesDCs. 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 ID ${USER} de usuário real (). UID 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ê pode especificar somente um desses padrões. Usando o Amazon EMR 5.11.0 ou posterior, 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 ver um exemplo, consulte Etapa 3: criar uma configuração JSON com as 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 Amazon EMR Management Guide. 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 LDAP do servidor é usado para autenticar as conexões do cliente com o servidor Presto.

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

Você usa a classificação presto-config de configuração para definir as propriedades do Presto paraLDAP. O formato e o conteúdo do presto-config são ligeiramente diferentes dependendo da versão de EMR lançamento da Amazon 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 JSON dados em um arquivo, MyPrestoConfig.json. Se você usar o console, faça o upload do arquivo em um local seguro no Amazon S3 para que você possa referenciá-lo ao criar o cluster. Se você usar o AWS CLI, poderá referenciar o arquivo localmente.

exemplo Amazon EMR 6.1.0 e versões posteriores com Presto SQL (Trino)

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

EMRAs versões 6.4.0 e posteriores da Amazon usam o novo nome Trino em vez de Presto. SQL Se você usa Trino, substitua configuração prestosql na seguinte classificação de configuração com trino-config e prestosql-password-authenticator comtrino-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 Amazon EMR 5.16.0 e versões posteriores

O exemplo a seguir usa o ID LDAP do usuário e a senha e o nome do LDAP host Etapa 1: Colete informações sobre seu LDAP servidor e copie o certificado do servidor para o Amazon S3 para autenticação no LDAP servidor para vinculação. Dois padrões de associação de usuário são especificados, o que indica que os usuários dentro da admins datascientists OU e da OU no LDAP servidor estão qualificados para autenticação no 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 oferece suporte somente à vinculaçã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: Crie o script para copiar o certificado LDAP do servidor 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 como s3://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 depois de criar o cluster e alterar a senha do keystore 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, você especifica o Presto e outros aplicativos que deseja que EMR a Amazon instale. Os exemplos a seguir também fazem referência às propriedades de classificação de configuração em umJSON, mas você também pode especificar a classificação de configuração em linha.

Para criar um cluster Presto com LDAP autenticação usando o console da Amazon EMR
  1. Navegue até o novo EMR console da Amazon 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. Escolha o Presto junto com outros aplicativos para EMR a Amazon instalar e, em Configuração de software, selecione a versão da Amazon EMR a ser usada. LDAPa autenticação é suportada somente com o Amazon EMR 5.10.0 e versões posteriores.

  4. Em Editar configurações de software, escolha Carregar JSON do S3, insira a localização no Amazon S3 JSON do arquivo de configuração que você criou e, Etapa 3: criar uma configuração JSON com as propriedades do Presto para LDAP em seguida, escolha Avançar.

  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: Crie o script para copiar o certificado LDAP do servidor e carregá-lo no Amazon S3, por exemplo, s3://amzn-s3-demo-bucket/L oadLDAPCert .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 Presto com LDAP autenticação usando o 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 JSON arquivo 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