Esta página explica como configurar o Kerberos para seu serviço metastore do Dataproc que usa o protocolo de endpoint gRPC. Se o serviço metastore do Dataproc usa o protocolo de endpoint Thrift, consulte Configurar o Kerberos para endpoints Thrift.
Antes de começar
Entenda os conceitos básicos do Kerberos.
Nestas instruções, você usa um cluster do Serviço Gerenciado para Apache Spark para criar os seguintes recursos do Kerberos:
- Um arquivo keytab.
- Um arquivo
krb5.conf. - Um principal do Kerberos.
Para mais informações sobre como esses recursos do Kerberos funcionam com um serviço metastore do Dataproc, consulte Sobre o Kerberos.
Crie e hospede seu próprio KDC do Kerberos ou aprenda a usar o KDC local de um cluster do Serviço Gerenciado para Apache Spark.
Crie um bucket do Cloud Storage ou acesse um bucket atual. É necessário armazenar o arquivo
krb5.confnesse bucket.
Papéis necessários
Para receber a permissão necessária para criar um metastore do Dataproc configurado com o Kerberos , peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, com base no princípio de privilégio mínimo:
- Conceder controle total dos recursos do metastore do Dataproc (
roles/metastore.editor) - Conceder acesso total a todos os recursos do metastore do Dataproc, incluindo a administração da política do IAM (
roles/metastore.admin) - Conceder acesso de leitura/gravação gRPC aos metadados do metastore do Dataproc (
roles/metastore.metadataEditor)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém a
metastore.services.create
permissão,
que é necessária para
criar um metastore do Dataproc configurado com o Kerberos .
Também é possível receber essa permissão com papéis personalizados ou outros papéis predefinidos.
Para mais informações sobre papéis e permissões específicos do metastore do Dataproc, consulte Gerenciar o acesso com o IAM.Para mais informações, consulte IAM e Dataproc de controle de acesso.
Configurar o Kerberos para o metastore do Dataproc
As instruções a seguir mostram como configurar o Kerberos para um serviço metastore do Dataproc que usa o endpoint gRPC.
Primeiro, crie um metastore do Dataproc que use o endpoint gRPC. Depois, crie um cluster do Serviço Gerenciado para Apache Spark configurado com o Kerberos e conecte-se a ele.
Criar um serviço metastore do Dataproc com o endpoint gRPC
Para criar um metastore do Dataproc que use o endpoint gRPC, execute
o seguinte gcloud metastore services create comando:
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
Substitua:
SERVICE: o nome do serviço metastore do Dataproc.
Criar um cluster do Serviço Gerenciado para Apache Spark e se conectar ao serviço
Para criar um Serviço Gerenciado para Apache Spark configurado com o Kerberos, execute o seguinte comando gcloud dataproc clusters create.
Nesse comando, a opção --enable-kerberos cria o arquivo keytab do Kerberos, o arquivo krb5.conf e o principal. Todos esses valores são criados usando nomes e configurações padrão definidos pelo cluster do Serviço Gerenciado para Apache Spark.
gcloud
gcloud dataproc clusters create CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--image-version 2.0-debian10 \
--dataproc-metastore DATAPROC_METASTORE_NAME \
--enable-kerberos \
--scopes 'https://www.googleapis.com/auth/cloud-platform'
Substitua:
CLUSTER_NAME: o nome do cluster do Serviço Gerenciado para Apache Spark.PROJECT_ID: o ID do projeto na nuvem do Google Cloud.REGION: aregião em que você quer criar o cluster do Serviço Gerenciado para Apache Spark. Google CloudDATAPROC_METASTORE_NAME: o nome do serviço metastore do Dataproc que você está anexando ao cluster, no seguinte formato:projects/<my_project>/locations/<location>/services/<service_id>.
Configurar o Serviço Gerenciado para Apache Spark antes de enviar jobs
Para executar os jobs do Serviço Gerenciado para Apache Spark,
adicione o usuário hive à propriedade allowed.system.users no
arquivo container-executor.cfg do Hadoop. Isso permite que os usuários executem consultas para acessar dados, como select * from.
As instruções a seguir mostram como fazer login SSH no cluster principal do Serviço Gerenciado para Apache Spark associado ao serviço metastore do Dataproc e atualizar o arquivo container-executor.cfg.
- No Google Cloud console, acesse a página VM Instances.
Na lista de instâncias de máquina virtual, clique em SSH na linha do nó principal do Serviço Gerenciado para Apache Spark (
your-cluster-name-m).Uma janela do navegador é aberta no diretório inicial do nó.
Na sessão SSH, abra o arquivo
container-executor.cfgdo Hadoop.sudo vim /etc/hadoop/conf/container-executor.cfgAdicione a seguinte linha em cada nó do Serviço Gerenciado para Apache Spark.
allowed.system.users=hive
Receber um tíquete do Kerberos
As instruções a seguir mostram como gerar um tíquete do Kerberos.
Na sessão SSH do cluster do Serviço Gerenciado para Apache Spark, gere um tíquete do Kerberos e conecte-se ao serviço metastore do Dataproc.
Esse comando usa o nome keytab padrão gerado pelo cluster do Serviço Gerenciado para Apache Spark.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab hive/_HOST@${realm} sudo klist # gets the ticket information.O valor
_HOSTé recuperado quando o arquivo keytab é listado usando o comandoklist -kte. Ele contém o nome do host do nó principal.
(Opcional) Adicionar um novo principal
Para adicionar um novo principal, execute o seguinte comando.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"Receba o tíquete do Kerberos.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive