Tutorial: Configurar um cluster dedicado KDC - 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á.

Tutorial: Configurar um cluster dedicado KDC

Este tópico orienta você na criação de um cluster com um centro de distribuição de chaves dedicado ao cluster (KDC), na adição manual de contas Linux a todos os nós do cluster, na adição de entidades do Kerberos no nó primário e KDC na garantia de que os computadores clientes tenham um cliente Kerberos instalado.

Para obter mais informações sobre o EMR suporte da Amazon para Kerberos eKDC, além de links para a documentação do MIT Kerberos, consulte. Use o Kerberos para autenticação com a Amazon EMR

Etapa 1: criar o cluster kerberizado

  1. Crie uma configuração de segurança que permita o Kerberos. O exemplo a seguir demonstra um create-security-configuration comando usando o AWS CLI que especifica a configuração de segurança como uma estrutura JSON embutida. Você também pode fazer referência a um arquivo salvo localmente.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
  2. Crie um cluster que faça referência à configuração de segurança, estabeleça os atributos do Kerberos para o cluster e adicione contas do Linux usando uma ação de bootstrap. O exemplo a seguir demonstra um comando create-cluster usando a AWS CLI. O comando faz referência à configuração de segurança criada por você acima, MyKerberosConfig. Ele também faz referência a um script simples, createlinuxusers.sh, como uma ação de bootstrap, que você cria e carrega no Amazon S3 antes de criar o cluster.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-7.2.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair \ --service-role EMR_DefaultRole \ --security-configuration MyKerberosConfig \ --applications Name=Hadoop Name=Hive Name=Oozie Name=Hue Name=HCatalog Name=Spark \ --kerberos-attributes Realm=EC2.INTERNAL,\ KdcAdminPassword=MyClusterKDCAdminPwd \ --bootstrap-actions Path=s3://DOC-EXAMPLE-BUCKET/createlinuxusers.sh

    O código a seguir demonstra o conteúdo do script createlinuxusers.sh, que adiciona user1, user2 e user3 a cada nó no cluster. Na próxima etapa, você adiciona esses usuários como KDC principais.

    #!/bin/bash sudo adduser user1 sudo adduser user2 sudo adduser user3

Etapa 2: Adicionar diretórios de usuários aoKDC, criar diretórios de HDFS usuários e configurar SSH

A KDC execução no nó primário precisa de um principal adicionado para o host local e para cada usuário que você cria no cluster. Você também pode criar HDFS diretórios para cada usuário se ele precisar se conectar ao cluster e executar trabalhos do Hadoop. Da mesma forma, configure o SSH serviço para habilitar a GSSAPI autenticação, que é necessária para o Kerberos. Depois de habilitarGSSAPI, reinicie o SSH serviço.

A maneira mais fácil de realizar essas tarefas é enviar uma etapa para o cluster. O exemplo a seguir envia um configurekdc.sh de script bash para o cluster que você criou na etapa anterior, referenciando o ID do cluster. O script é salvo no Amazon S3. Como alternativa, você pode se conectar ao nó primário usando um EC2 key pair para executar os comandos ou enviar a etapa durante a criação do cluster.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myregion.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://DOC-EXAMPLE-BUCKET/configurekdc.sh"]

O código a seguir demonstra o conteúdo do script configurekdc.sh.

#!/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=([user1]=pwd1 [user2]=pwd2 [user3]=pwd3) for i in ${!arr[@]}; do #Assign plain language variables for clarity name=${i} password=${arr[${i}]} # Create principal for sshuser in the primary node and require a new password on first logon sudo kadmin.local -q "addprinc -pw $password +needchange $name" #Add user hdfs directory hdfs dfs -mkdir /user/$name #Change owner of user's hdfs directory to 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

Os usuários que você adicionou agora devem poder se conectar ao cluster usando SSH o. Para obter mais informações, consulte Usando SSH para se conectar a clusters Kerberizados.