Configurar o Kerberos para endpoints gRPC do Dataproc Metastore

Nesta página, explicamos como configurar o Kerberos para seu serviço Metastore do Dataproc que usa o protocolo de endpoint gRPC. Se o serviço do Dataproc Metastore usar o protocolo de endpoint do Thrift, consulte Configurar o Kerberos para endpoints do Thrift.

Antes de começar

  • Entenda os princípios básicos do Kerberos.

    Nestas instruções, você usará um cluster do Dataproc para criar os seguintes recursos do Kerberos:

    • Um arquivo Keytab.
    • Um arquivo krb5.conf.
    • Um principal do Kerberos.

    Para saber mais sobre como esses recursos do Kerberos funcionam com um serviço do 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 atual. Você precisa 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 seu projeto, com base no princípio de privilégio mínimo:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém a permissão metastore.services.create, que é necessária para criar um metastore do Dataproc configurado com o Kerberos .

Talvez você também consiga essa permissão com papéis personalizados ou outros papéis predefinidos.

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

Primeiro, crie um metastore do Dataproc que usa o endpoint gRPC. Depois, crie um cluster do Dataproc 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 comando gcloud metastore services create:

gcloud

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

Substitua:

  • SERVICE: o nome do serviço do Metastore do Dataproc

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

Para criar um Dataproc 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. Esses valores são todos criados usando 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 do Google Cloud.
  • REGION: a região do Google Cloud em que você quer criar o cluster do Dataproc.
  • 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>.

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 inserir o SSH no cluster principal do Dataproc associado ao serviço Metastore do Dataproc e atualizar o arquivo container-executor.cfg.

  1. No console do Google Cloud, acesse a página Instâncias de VM.
  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 a cada nó do Dataproc.

    allowed.system.users=hive
    

Comprar um ingresso 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 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 keytab é listado usando o comando klist -kte. Ele contém o nome do host do nó principal.

(Opcional) Adicionar uma nova 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. Compre 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