

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

# Configurar o Kerberos no Amazon EMR
<a name="emr-kerberos-configure"></a>

Esta seção fornece detalhes da configuração e exemplos para configurar o Kerberos com arquiteturas comuns. Independentemente da arquitetura escolhida, as noções básicas de configuração são as mesmas e a configuração é feita em três etapas. Se usar um KDC externo ou configurar uma relação de confiança entre realms, você deverá garantir que cada nó em um cluster tenha uma rota de rede para o KDC externo, incluindo a configuração aplicável de grupos de segurança para permitir o tráfego de entrada e saída do Kerberos.

## Etapa 1: Criar uma configuração de segurança com propriedades do Kerberos
<a name="emr-kerberos-step1-summary"></a>

A configuração de segurança especifica detalhes sobre o KDC do Kerberos e permite que a configuração do Kerberos seja reutilizada cada vez que você criar um cluster. Você pode criar uma configuração de segurança usando o console do Amazon EMR AWS CLI, o ou a API do EMR. A configuração de segurança também pode conter outras opções de segurança, como criptografia. Para obter mais informações sobre como criar configurações de segurança e especificar uma configuração de segurança ao criar um cluster, consulte [Uso de configurações de segurança para definir a segurança do cluster do Amazon EMR](emr-security-configurations.md). Para obter informações sobre as propriedades do Kerberos em uma configuração de segurança, consulte [Configurações do Kerberos para configurações de segurança](emr-kerberos-configure-settings.md#emr-kerberos-security-configuration).

## Etapa 2: Criar um cluster e especificar os atributos do Kerberos específicos do cluster
<a name="emr-kerberos-step2-summary"></a>

Ao criar um cluster, você especifica uma configuração de segurança do Kerberos juntamente com e as opções do Kerberos específicas do cluster. Quando o console do Amazon EMR é usado, somente as opções do Kerberos compatíveis com a configuração de segurança especificada estão disponíveis. Ao usar a API AWS CLI ou o Amazon EMR, certifique-se de especificar as opções do Kerberos compatíveis com a configuração de segurança especificada. Por exemplo, se você especificar uma senha principal para uma relação de confiança entre realms ao criar um cluster usando a CLI e a configuração de segurança especificada não for configurada com os parâmetros da relação de confiança entre realms, ocorrerá um erro. Para obter mais informações, consulte [Configurações do Kerberos para clusters](emr-kerberos-configure-settings.md#emr-kerberos-cluster-configuration).

## Etapa 3: configurar o nó primário do cluster
<a name="emr-kerberos-step3-summary"></a>

Dependendo dos requisitos de sua arquitetura e implantação, configuração adicional no cluster pode ser necessária. Você pode fazer isso depois de criá-lo ou usando etapas ou ações de bootstrap durante o processo de criação.

Para cada usuário autenticado pelo Kerberos que se conecta ao cluster usando SSH, você deve garantir que as contas do Linux criadas correspondam ao usuário do Kerberos. Se as entidades principais forem fornecidos por um controlador de domínio do Active Directory, como o KDC externo ou por meio de uma relação de confiança entre realms, o Amazon EMR criará contas de usuário do Linux automaticamente. Se o Active Directory não for usado, você deverá criar principais para cada usuário que correspondam ao usuário do Linux. Para obter mais informações, consulte [Configuração de um cluster do Amazon EMR para usuários do HDFS autenticados pelo Kerberos e conexões SSH](emr-kerberos-configuration-users.md).

Cada usuário também deve ter um diretório de usuário do HDFS que pertença a eles, que você deve criar. Além disso, o SSH deve ser configurado com GSSAPI habilitada para permitir conexões de usuários autenticados pelo Kerberos. A GSSAPI deve ser habilitada no nó primário, e a aplicação SSH cliente deve ser configurada para usar GSSAPI. Para obter mais informações, consulte [Configuração de um cluster do Amazon EMR para usuários do HDFS autenticados pelo Kerberos e conexões SSH](emr-kerberos-configuration-users.md).

# Configuração de segurança e configurações do cluster para Kerberos no Amazon EMR
<a name="emr-kerberos-configure-settings"></a>

Ao criar um cluster Kerberizado, você especifica a configuração de segurança com atributos do Kerberos específicos do cluster. Você não pode especificar um conjunto sem o outro, ou ocorrerá um erro.

Este tópico fornece uma visão geral dos parâmetros de configuração disponíveis para o Kerberos quando você cria uma configuração de segurança e um cluster. Além disso, exemplos da CLI para criar configurações de segurança e clusters compatíveis são fornecidos para arquiteturas comuns.

## Configurações do Kerberos para configurações de segurança
<a name="emr-kerberos-security-configuration"></a>

Você pode criar uma configuração de segurança que especifique os atributos do Kerberos usando o console do Amazon EMR, o AWS CLI ou a API do EMR. A configuração de segurança também pode conter outras opções de segurança, como criptografia. Para obter mais informações, consulte [Crie uma configuração de segurança com o console do Amazon EMR ou com o AWS CLI](emr-create-security-configuration.md).

Use as referências a seguir para compreender as definições de configuração de segurança disponíveis para a arquitetura do Kerberos que você escolher. As configurações do console do Amazon EMR são exibidas. Para opções da CLI correspondentes, consulte [Especificando as configurações do Kerberos usando o AWS CLI](emr-create-security-configuration.md#emr-kerberos-cli-parameters) ou [Exemplos de configuração](emr-kerberos-config-examples.md).

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ManagementGuide/emr-kerberos-configure-settings.html)

## Configurações do Kerberos para clusters
<a name="emr-kerberos-cluster-configuration"></a>

Você pode especificar as configurações do Kerberos ao criar um cluster usando o console do Amazon EMR, o AWS CLI ou a API do EMR.

Use as referências a seguir para compreender as definições de configuração de cluster disponíveis para a arquitetura do Kerberos que você escolher. As configurações do console do Amazon EMR são exibidas. Para opções da CLI correspondentes, consulte [Exemplos de configuração](emr-kerberos-config-examples.md).


| Parâmetro | Description | 
| --- | --- | 
|  Realm  |  O nome do realm do Kerberos para o cluster. A convenção do Kerberos deve ser a mesma do nome de domínio, mas em maiúsculas. Por exemplo, para o domínio `ec2.internal`, usando `EC2.INTERNAL` como o nome do realm.  | 
|  Senha admin do KDC  |  A senha usada dentro do cluster para `kadmin` ou `kadmin.local`. Essas são interfaces de linha de comando para o sistema de administração do Kerberos V5, que mantém os principais do Kerberos, as políticas de senha e os keytabs do cluster.   | 
|  Senha do principal da relação de confiança entre realms (opcional)  |  Obrigatório quando se estabelece uma relação de confiança entre realms. A senha do principal entre realms, que deve ser idêntica em todos os realms. Use uma senha forte.  | 
|  Usuário de inclusão no domínio do Active Directory (opcional)  |  Obrigatório ao usar o Active Directory em uma relação de confiança entre realms. Este é o nome de logon de usuário de uma conta do Active Directory com permissão para integrar computadores ao domínio. O Amazon EMR usa essa identidade para integrar o cluster ao domínio. Para obter mais informações, consulte [Etapa 3: adicionar contas de usuário ao domínio do cluster do EMR](emr-kerberos-cross-realm.md#emr-kerberos-ad-users).  | 
|  Senha de inclusão no domínio do Active Directory (opcional)  |  A senha para o usuário de inclusão no domínio do Active Directory. Para obter mais informações, consulte [Etapa 3: adicionar contas de usuário ao domínio do cluster do EMR](emr-kerberos-cross-realm.md#emr-kerberos-ad-users).  | 

# Exemplos de configuração
<a name="emr-kerberos-config-examples"></a>

Os exemplos a seguir demonstram configurações de segurança e configurações de cluster para cenários comuns. AWS CLI os comandos são mostrados para fins de concisão.

## KDC local
<a name="emr-kerberos-example-local-kdc"></a>

Os comandos a seguir criam um cluster com um KDC dedicado ao cluster em execução no nó primário. Configurações adicionais no cluster podem ser necessárias. Para obter mais informações, consulte [Configuração de um cluster do Amazon EMR para usuários do HDFS autenticados pelo Kerberos e conexões SSH](emr-kerberos-configuration-users.md).

**Criar configuração de segurança**

```
aws emr create-security-configuration --name LocalKDCSecurityConfig \
--security-configuration '{"AuthenticationConfiguration": \
{"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc",\
"ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24 }}}}'
```

**Criar cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge \
--applications Name=Hadoop Name=Hive --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole \
--security-configuration LocalKDCSecurityConfig \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=MyPassword
```

## KDC dedicado ao cluster com relação de confiança entre realms do Active Directory
<a name="emr-kerberos-example-crossrealm"></a>

Os comandos a seguir criam um cluster com um KDC dedicado ao cluster em execução no nó primário com uma relação de confiança entre realms para um domínio do Active Directory. Configuração adicional no cluster e no Active Directory é necessária. Para obter mais informações, consulte [Tutorial: configurar uma relação de confiança entre realms com um controlador de domínio do Active Directory](emr-kerberos-cross-realm.md).

**Criar configuração de segurança**

```
aws emr create-security-configuration --name LocalKDCWithADTrustSecurityConfig \
--security-configuration '{"AuthenticationConfiguration": \
{"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", \
"ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24, \
"CrossRealmTrustConfiguration": {"Realm":"AD.DOMAIN.COM", \
"Domain":"ad.domain.com", "AdminServer":"ad.domain.com", \
"KdcServer":"ad.domain.com"}}}}}'
```

**Criar cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop Name=Hive \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole --security-configuration KDCWithADTrustSecurityConfig \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=MyClusterKDCAdminPassword,\
ADDomainJoinUser=ADUserLogonName,ADDomainJoinPassword=ADUserPassword,\
CrossRealmTrustPrincipalPassword=MatchADTrustPassword
```

## KDC externo em um cluster diferente
<a name="emr-kerberos-example-extkdc-cluster"></a>

Os comandos a seguir criam um cluster que referencia um KDC dedicado ao cluster no nó primário de um cluster diferente para autenticar entidades principais. Configurações adicionais no cluster podem ser necessárias. Para obter mais informações, consulte [Configuração de um cluster do Amazon EMR para usuários do HDFS autenticados pelo Kerberos e conexões SSH](emr-kerberos-configuration-users.md).

**Criar configuração de segurança**

```
aws emr create-security-configuration --name ExtKDCOnDifferentCluster \
--security-configuration '{"AuthenticationConfiguration": \
{"KerberosConfiguration": {"Provider": "ExternalKdc", \
"ExternalKdcConfiguration": {"KdcServerType": "Single", \
"AdminServer": "MasterDNSOfKDCMaster:749", \
"KdcServer": "MasterDNSOfKDCMaster:88"}}}}'
```

**Criar cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge \
--applications Name=Hadoop Name=Hive \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole --security-configuration ExtKDCOnDifferentCluster \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=KDCOnMasterPassword
```

## KDC externo do cluster com relação de confiança entre realms do Active Directory
<a name="emr-kerberos-example-extkdc-ad-trust"></a>

Os comandos a seguir criam um cluster sem nenhum KDC. O cluster faz referência a um KDC dedicado ao cluster em execução no nó primário de outro cluster para autenticar entidades principais. Esse KDC tem uma relação de confiança entre realms com um controlador de domínio do Active Directory. A configuração adicional no nó primário com o KDC é obrigatória. Para obter mais informações, consulte [Tutorial: configurar uma relação de confiança entre realms com um controlador de domínio do Active Directory](emr-kerberos-cross-realm.md).

**Criar configuração de segurança**

```
aws emr create-security-configuration --name ExtKDCWithADIntegration \
--security-configuration '{"AuthenticationConfiguration": \
{"KerberosConfiguration": {"Provider": "ExternalKdc", \
"ExternalKdcConfiguration": {"KdcServerType": "Single", \
"AdminServer": "MasterDNSofClusterKDC:749", \
"KdcServer": "MasterDNSofClusterKDC.com:88", \
"AdIntegrationConfiguration": {"AdRealm":"AD.DOMAIN.COM", \
"AdDomain":"ad.domain.com", \
"AdServer":"ad.domain.com"}}}}}'
```

**Criar cluster**

```
aws emr create-cluster --release-label emr-7.12.0 \
--instance-count 3 --instance-type m5.xlarge --applications Name=Hadoop Name=Hive \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2Key \
--service-role EMR_DefaultRole --security-configuration ExtKDCWithADIntegration \
--kerberos-attributes Realm=EC2.INTERNAL,KdcAdminPassword=KDCOnMasterPassword,\
ADDomainJoinUser=MyPrivilegedADUserName,ADDomainJoinPassword=PasswordForADDomainJoinUser
```

# 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
```