Configurar o Kerberos para endpoints gRPC do Dataproc Metastore

Esta página explica como configurar o Kerberos para seu Serviço do Dataproc Metastore que usa o protocolo de endpoint do 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 os princípios básicos do 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 do Dataproc Metastore, consulte Sobre o Kerberos.

  • Crie e hospede seu próprio KDC 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 ter a permissão necessária para criar um metastore do Dataproc configurado com Kerberos , peça ao administrador para conceder a você papéis do IAM a seguir 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 metastore.services.create permissão, que é necessário para criar um metastore do Dataproc configurado com o Kerberos .

Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

Para mais informações sobre permissões e papéis específicos do metastore do Dataproc, consulte Gerenciar 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 metastore do Dataproc que usa o endpoint gRPC.

Primeiro, crie um metastore do Dataproc que use o gRPC endpoint do Google Cloud. Depois, você cria um cluster do Dataproc configurado com Kerberos e conecte-se a ele.

Criar um serviço do metastore do Dataproc 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 Kerberos, execute o seguinte comando: gcloud dataproc clusters create.

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

Configure o Dataproc antes de enviar jobs

Para executar os jobs do Dataproc, 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 usar o SSH na sua instância principal do Dataproc cluster associado ao serviço Metastore do Dataproc e atualize 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 Nó principal do Dataproc (your-cluster-name-m).

    Uma janela do 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 Kerberos e conecte-se ao serviço Metastore do Dataproc.

    Esse comando usa o nome do keytab padrão gerado pelo 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 o arquivo de chave é listado usando o comando klist -kte. Ele contém do nó principal nele.

(Opcional) Adicionar um novo diretor

  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. Compre o ingresso 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