Configurar o Kerberos para endpoints gRPC do metastore do Dataproc

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.conf nesse 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:

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 Cloud
  • DATAPROC_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.

  1. No Google Cloud console, acesse a página VM Instances.
  2. 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ó.

  3. Na sessão SSH, abra o arquivo container-executor.cfg do Hadoop.

    sudo vim /etc/hadoop/conf/container-executor.cfg
    

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

  1. 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 comando klist -kte. Ele contém o nome do host do nó principal.

(Opcional) Adicionar um novo principal

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

A seguir