Configurar o Kerberos para endpoints gRPC do metastore do Dataproc

Esta página explica como configurar o Kerberos para seu serviço do metastore do Dataproc que usa o protocolo de endpoint gRPC. Se o serviço Metastore do Dataproc usar o protocolo de endpoint Thrift, consulte Configure o Kerberos para endpoints do Thrift.

Antes de começar

  • Entenda o básico sobre Kerberos

    Nestas instruções, você vai usar um cluster do Dataproc 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 de 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 Dataproc.

  • Crie um bucket do Cloud Storage ou acesse um bucket existente. Você precisa armazenar o arquivo krb5.conf nesse bucket.

Papéis necessários

Para receber a permissão necessária para criar uma Metastore do Dataproc configurada com Kerberos, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, com base no princípio do 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 permissão metastore.services.create, que é necessária para criar uma Metastore do Dataproc configurada com Kerberos.

Também é possível conseguir 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 Dataproc Metastore, 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 do Dataproc Metastore que usa o endpoint do gRPC.

Primeiro, crie uma metastore do Dataproc que use o endpoint gRPC. Em seguida, você cria um cluster do Dataproc configurado com o Kerberos e se conecta a ele.

Criar um serviço do Dataproc Metastore com o endpoint gRPC

Para criar um metastore do Dataproc que use o endpoint gRPC, execute o seguinte comando gcloud metastore services create:

gcloud

gcloud metastore services create SERVICE \
     --instance-size=medium \
     --endpoint-protocol=grpc

Substitua:

  • SERVICE: o nome do Serviço Dataproc Metastore

Criar um cluster do Dataproc e se conectar ao serviço

Para criar um Dataproc configurado com o Kerberos, execute o comando gcloud dataproc clusters create abaixo.

Nesse comando, a opção --enable-kerberos cria o arquivo Kerberos Arquivo keytab, krb5.conf e principal. Todos esses valores são criados usando e os nomes e configurações padrão definidos pelo cluster do Dataproc.

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 Dataproc.
  • PROJECT_ID pelo ID do projeto no Google Cloud.
  • REGION: a região do Google Cloud em que você quer criar o cluster do Dataproc.
  • DATAPROC_METASTORE_NAME: o nome do o serviço Metastore do Dataproc que você está anexando ao cluster; neste formato: projects/<my_project>/locations/<location>/services/<service_id>.

Configurar o Dataproc antes de enviar jobs

Para executar jobs do Dataproc: você precisa adicionar 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 SSH no cluster principal do Dataproc associado ao serviço do Metastore do Dataproc e atualizar o arquivo container-executor.cfg.

  1. No console do Google Cloud, acesse VM instâncias.
  2. Na lista de instâncias de máquina virtual, clique em SSH na linha do nó principal do Dataproc (your-cluster-name-m).

    Uma janela de navegador é aberta no diretório principal 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 linha a seguir em cada nó do Dataproc.

    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 Dataproc, gere um tíquete do Kerberos e conecte-se ao serviço Metastore do Dataproc.

    Esse comando usa o nome de keytab padrão gerado pelo seu cluster do Dataproc.

    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 a keytab é listado usando o comando klist -kte. Ele contém do nó principal nele.

(Opcional) Adicionar um novo principal

  1. Para adicionar um novo principal, execute o comando a seguir.

    sudo kadmin.local -q "addprinc -randkey PRINCIPAL"
    sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
    
  2. Receber 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