

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

# Configuração de um cluster do Amazon EMR para usuários do HDFS autenticados pelo Kerberos e conexões SSH
<a name="emr-kerberos-configuration-users"></a>

O Amazon EMR cria clientes de usuário autenticados pelo Kerberos para aplicações executadas no cluster. Por exemplo, o usuário `hadoop`, o usuário `spark` e outros. Você também pode adicionar usuários autenticados em processos de cluster usando o Kerberos. Os usuários autenticados podem se conectar ao cluster usando as credenciais do Kerberos e trabalhar com os aplicativos. Para que um usuário faça autenticação no cluster, as seguintes configurações são necessárias:
+ Deve haver uma conta Linux que corresponda à entidade principal do Kerberos no KDC no cluster. O Amazon EMR faz isso automaticamente em arquiteturas que se integram ao Active Directory.
+ Você deve criar um diretório de usuário do HDFS no nó primário para cada usuário e conceder as permissões ao usuário para o diretório.
+ É necessário configurar o serviço SSH para que GSSAPI esteja habilitada no nó primário. Além disso, os usuários devem ter um cliente SSH com GSSAPI habilitada.

## Adicionar usuários do Linux e entidades principais do Kerberos ao nó primário
<a name="emr-kerberos-configure-linux-kdc"></a>

Se não usar o Active Directory, você deverá criar contas do Linux no nó primário do cluster e adicionar entidades principais a esses usuários do Linux para o KDC. Isso inclui uma entidade principal no KDC para o nó primário. Além dos usuários principais, o KDC em execução no nó primário precisa de uma entidade principal para o host local.

Quando sua arquitetura inclui integração com o Active Directory, os usuários do Linux e os principais no KDC local, se aplicável, são criados automaticamente. Você pode ignorar esta etapa. Para obter mais informações, consulte [Relação de confiança entre realms](emr-kerberos-options.md#emr-kerberos-crossrealm-summary) e [KDC externo: KDC do cluster em um cluster diferente com relação de confiança entre realms do Active Directory](emr-kerberos-options.md#emr-kerberos-extkdc-ad-trust-summary).

**Importante**  
O KDC, junto com o banco de dados de entidades principais, é perdido quando o nó primário é terminado porque o nó primário usa armazenamento temporário. Se você criar usuários para conexões SSH, é recomendável estabelecer uma relação de confiança entre regiões com um KDC externo configurado para alta disponibilidade. Como alternativa, se você criar usuários para conexões SSH usando contas Linux, automatize o processo de criação da conta usando ações e scripts de bootstrap de modo que possa ser repetido ao criar um novo cluster.

Enviar uma etapa ao cluster depois de criá-lo ou ao criar o cluster é a maneira mais fácil de adicionar usuários e principais do KDC. Como alternativa, você pode se conectar ao nó primário usando um par de chaves do EC2 como o usuário `hadoop` padrão para executar os comandos. Para obter mais informações, consulte [Como se conectar ao nó primário do cluster do Amazon EMR usando SSH](emr-connect-master-node-ssh.md).

O exemplo a seguir envia um script bash `configureCluster.sh` para um cluster que já existe, fazendo referência ao ID do cluster. O script é salvo no Amazon S3. 

```
aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\
Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,\
Args=["s3://amzn-s3-demo-bucket/configureCluster.sh"]
```

O exemplo a seguir demonstra o conteúdo do script `configureCluster.sh`. O script também trata da criação de diretórios do usuário do HDFS e habilita GSSAPI para SSH, que são abordados nas seções a seguir.

```
#!/bin/bash
#Add a principal to the KDC for the primary node, using the primary node's returned host name
sudo kadmin.local -q "ktadd -k /etc/krb5.keytab host/`hostname -f`"
#Declare an associative array of user names and passwords to add
declare -A arr
arr=([lijuan]=pwd1 [marymajor]=pwd2 [richardroe]=pwd3)
for i in ${!arr[@]}; do
    #Assign plain language variables for clarity
     name=${i} 
     password=${arr[${i}]}

     # Create a principal for each user in the primary node and require a new password on first logon
     sudo kadmin.local -q "addprinc -pw $password +needchange $name"

     #Add hdfs directory for each user
     hdfs dfs -mkdir /user/$name

     #Change owner of each user's hdfs directory to that user
     hdfs dfs -chown $name:$name /user/$name
done

# Enable GSSAPI authentication for SSH and restart SSH service
sudo sed -i 's/^.*GSSAPIAuthentication.*$/GSSAPIAuthentication yes/' /etc/ssh/sshd_config
sudo sed -i 's/^.*GSSAPICleanupCredentials.*$/GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd
```

## Adicionar diretórios do usuário do HDFS
<a name="emr-kerberos-configure-HDFS"></a>

Para permitir que os usuários façam login no cluster para executar trabalhos do Hadoop, você deve adicionar diretórios do usuário HDFS para contas do Linux e conceder a cada um a propriedade do diretório.

Enviar uma etapa ao cluster depois de criá-lo ou ao criar o cluster é a maneira mais fácil de criar diretórios do HDFS. Como alternativa, você pode se conectar ao nó primário usando um par de chaves do EC2 como o usuário `hadoop` padrão para executar os comandos. Para obter mais informações, consulte [Como se conectar ao nó primário do cluster do Amazon EMR usando SSH](emr-connect-master-node-ssh.md).

O exemplo a seguir envia um script bash `AddHDFSUsers.sh` para um cluster que já existe, fazendo referência ao ID do cluster. O script é salvo no Amazon S3. 

```
aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \
--steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\
Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/AddHDFSUsers.sh"]
```

O exemplo a seguir demonstra o conteúdo do script `AddHDFSUsers.sh`.

```
#!/bin/bash
# AddHDFSUsers.sh script

# Initialize an array of user names from AD, or Linux users created manually on the cluster
ADUSERS=("lijuan" "marymajor" "richardroe" "myusername")

# For each user listed, create an HDFS user directory
# and change ownership to the user

for username in ${ADUSERS[@]}; do
     hdfs dfs -mkdir /user/$username
     hdfs dfs -chown $username:$username /user/$username
done
```

## Habilitar GSSAPI para SSH
<a name="emr-kerberos-ssh-config"></a>

Para usuários autenticados pelo Kerberos se conectarem ao nó primário usando o SSH, o serviço SSH deve ter a autenticação GSSAPI habilitada. Para habilitar GSSAPI, execute os seguintes comandos na linha de comando do nó primário ou use uma etapa para executá-lo como um script. Depois de reconfigurar o SSH, você deverá reiniciar o serviço.

```
sudo sed -i 's/^.*GSSAPIAuthentication.*$/GSSAPIAuthentication yes/' /etc/ssh/sshd_config
sudo sed -i 's/^.*GSSAPICleanupCredentials.*$/GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd
```