

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 SSL/TLS e configurando o LDAPS com o Presto no Amazon EMR
<a name="presto-ssl"></a>

Com a versão 5.6.0 e posterior do Amazon EMR, você pode ajudar a [proteger SSL/TLS a comunicação interna entre](https://prestodb.io/docs/current/security/internal-communication.html) os nós do Presto. Você pode fazer isso definindo uma configuração de segurança para criptografia em trânsito. Para obter mais informações, consulte [Opções de criptografia](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption-options.html) e [Usar configurações de segurança para definir a segurança do cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html) no *Guia de gerenciamento do Amazon EMR*.

Quando você usa uma configuração de segurança com criptografia em trânsito, o Amazon EMR faz o seguinte para o Presto:
+ Distribui os artefatos ou certificados de criptografia que você especifica para a criptografia em trânsito em todo o cluster do Presto. Para obter mais informações, consulte [Fornecer certificados para criptografia de dados em trânsito](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates).
+ Define as seguintes propriedades usando a classificação de configuração `presto-config`, que corresponde ao arquivo `config.properties` para o Presto:
  + Define `http-server.http.enabled` como `false` em todos os nós, o que desabilita HTTP em favor de HTTPS. Isso exige que você forneça certificados que funcionem para DNS público e privado quando definir a configuração de segurança para criptografia em trânsito. Uma maneira de fazer isso é usar certificados SAN (Subject Alternative Name), compatíveis com vários domínios.
  + Define os valores `http-server.https.*`. Para obter detalhes da configuração, consulte [Autenticação LDAP](https://prestodb.io/docs/current/security/ldap.html) na documentação do Presto.

Além disso, com as versões 5.10.0 e posteriores do Amazon EMR, você pode configurar a [autenticação LDAP](https://prestodb.io/docs/current/security/ldap.html) para conexões de clientes ao coordenador do Presto usando HTTPS. Essa configuração usa um LDAP seguro (LDAPS). O TLS deve ser habilitado no servidor LDAP, e o cluster do Presto deve usar uma configuração de segurança com a criptografia de dados em trânsito habilitada. Configurações adicionais são necessárias. As opções de configuração são diferentes de acordo com a versão do Amazon EMR que você usa. Para obter mais informações, consulte [Usar autenticação LDAP para o Presto no Amazon EMR](emr-presto-ldap.md).

O Presto no Amazon EMR usa a porta 8446 para HTTPS interno por padrão. A porta usada para comunicação interna deve ser a mesma usada para o acesso HTTPS de clientes ao coordenador do Presto. A propriedade `http-server.https.port` na classificação de configuração `presto-config` especifica a porta.

# Usar autenticação LDAP para o Presto no Amazon EMR
<a name="emr-presto-ldap"></a>

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

**Topics**
+ [

## Etapa 1: coletar informações sobre o servidor LDAP e copiar o certificado do servidor para o Amazon S3
](#emr-presto-ldap-server-prereq)
+ [

## Etapa 2: definir uma configuração de segurança
](#emr-presto-ldap-seccfg)
+ [

## Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP
](#emr-presto-ldap-prestoconfig)
+ [

## Etapa 4: criar o script para copiar o certificado do servidor LDAP e carregá-lo no Amazon S3
](#emr-presto-ldap-servercert)
+ [

## Etapa 5: criar um cluster
](#emr-presto-ldap-createcluster)

## Etapa 1: coletar informações sobre o servidor LDAP e copiar o certificado do servidor para o Amazon S3
<a name="emr-presto-ldap-server-prereq"></a>

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
<a name="w2aac60c39c13b7b5"></a>

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](#emr-presto-ldap-prestoconfig). 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
<a name="w2aac60c39c13b7b7"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) 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](#emr-presto-ldap-servercert). O certificado de exemplo é*s3://amzn-s3-demo-bucket/ldap\$1server.crt*.

### As configurações do servidor LDAP para associação anônima
<a name="w2aac60c39c13b7b9"></a>

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](https://linux.die.net/man/1/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](https://linux.die.net/man/1/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 instância EC2 com o nome de host fictício. *ip-xxx-xxx-xxx-xxx.ec2.internal* O usuário está associado à unidade organizacional (OU) *admins* e à 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 propriedades do Presto para LDAP](#emr-presto-ldap-prestoconfig) 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 usar associação anônima, remova os pares `internal-communication.authentication.ldap.user` e. `internal-communication.authentication.ldap.password` name/value 

### O nome diferenciado (DN) LDAP para usuários do Presto
<a name="w2aac60c39c13b7c11"></a>

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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html) 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 ver um exemplo, consulte [Etapa 3: criar uma configuração JSON com propriedades do Presto para LDAP](#emr-presto-ldap-prestoconfig).

## Etapa 2: definir uma configuração de segurança
<a name="emr-presto-ldap-seccfg"></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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-create-security-configuration.html) 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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html#emr-encryption-certificates). 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
<a name="emr-presto-ldap-prestoconfig"></a>

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](emr-configure-apps.md).

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.

**Example 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](#emr-presto-ldap-server-prereq) 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"
      }
   }
]
```

**Example 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](#emr-presto-ldap-server-prereq) 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"
                }
        }]
```

**Example 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"
                }
        }]
```

**Example 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
<a name="emr-presto-ldap-servercert"></a>

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. Em[Etapa 5: criar um cluster](#emr-presto-ldap-createcluster), 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 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
<a name="emr-presto-ldap-createcluster"></a>

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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

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

1. 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.

1. 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](#emr-presto-ldap-prestoconfig) e, em seguida, selecione **Próximo**.

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

1. 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)**.

1. **Insira um **nome** para a ação de bootstrap, insira a **localização do script** que você criou[Etapa 4: criar o script para copiar o certificado do servidor LDAP e carregá-lo no Amazon S3](#emr-presto-ldap-servercert), por exemplo, **s3://amzn-s3-demo-bucket/Load LDAPCert .sh**, e escolha Adicionar.**

1. 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)**.

1. 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](#emr-presto-ldap-seccfg).

1. 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 autenticação LDAP 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 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 (\$1) 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
  ```