Configure o Kerberos para pontos finais gRPC do Dataproc Metastore

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

Antes de começar

  • Compreenda as noções básicas do Kerberos.

    Nestas instruções, usa um cluster do Dataproc para criar os seguintes recursos do Kerberos:

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

    Para mais informações sobre como estes recursos do Kerberos funcionam com um serviço do Dataproc Metastore, consulte o artigo Acerca do Kerberos.

  • Crie e aloje o seu próprio KDC Kerberos ou saiba como usar o KDC local de um cluster do Dataproc.

  • Crie um contentor do Cloud Storage ou aceda a um existente. Tem de armazenar o ficheiro krb5.conf neste contentor.

Funções necessárias

Para receber a autorização de que precisa para criar um Dataproc Metastore configurado com o Kerberos, peça ao seu administrador que lhe conceda as seguintes funções de IAM no seu projeto, com base no princípio do menor privilégio:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém a autorização metastore.services.create , que é necessária para criar um Dataproc Metastore configurado com o Kerberos .

Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.

Para mais informações sobre as funções e as autorizações específicas do Dataproc Metastore, consulte o artigo Faça a gestão do acesso com o IAM.

Para mais informações, consulte o artigo IAM e controlo de acesso do Dataproc Metastore.

Configure o Kerberos para o Dataproc Metastore

As instruções seguintes mostram como configurar o Kerberos para um serviço Dataproc Metastore que usa o ponto final gRPC.

Primeiro, crie um Dataproc Metastore que use o ponto final gRPC. Depois, crie um cluster do Dataproc configurado com o Kerberos e ligue-se a ele.

Crie um serviço de Metastore do Dataproc com o endpoint gRPC

Para criar um Dataproc Metastore que use o ponto final gRPC, execute o seguinte comando gcloud metastore services create:

gcloud

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

Substituição:

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

Crie um cluster do Dataproc e estabeleça ligação ao seu serviço

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

Neste comando, a opção --enable-kerberos cria o ficheiro Kerberos Keytab, o ficheiro krb5.conf e o principal. Estes valores são todos criados com nomes e definições predefinidos 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'

Substituição:

  • CLUSTER_NAME: o nome do seu cluster do Dataproc.
  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • REGION: a Google Cloud região na qual quer criar o cluster do Dataproc.
  • DATAPROC_METASTORE_NAME: o nome do serviço Dataproc Metastore que está a anexar ao cluster, no seguinte formato: projects/<my_project>/locations/<location>/services/<service_id>.

Configure o Dataproc antes de enviar tarefas

Para executar as suas tarefas do Dataproc, tem de adicionar o utilizador hive à propriedade allowed.system.users no ficheiro container-executor.cfg do Hadoop. Isto permite que os utilizadores executem consultas para aceder a dados, como select * from.

As instruções seguintes mostram como usar o SSH para aceder ao cluster principal do Dataproc associado ao serviço Dataproc Metastore e atualizar o ficheiro container-executor.cfg.

  1. Na Google Cloud consola, aceda à página Instâncias de VM.
  2. Na lista de instâncias de máquinas virtuais, clique em SSH na linha do nó principal do Dataproc (your-cluster-name-m).

    É aberta uma janela do navegador no seu diretório base no nó.

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

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

    Adicione a seguinte linha em todos os nós do Dataproc.

    allowed.system.users=hive
    

Obtenha uma permissão Kerberos

As instruções seguintes mostram como gerar um pedido de autorização Kerberos.

  1. Na sessão SSH do cluster do Dataproc, gere um pedido Kerberos e ligue-se ao seu serviço Dataproc Metastore.

    Este comando usa o nome do keytab predefinido 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 é obtido quando o ficheiro keytab é apresentado através do comando klist -kte. Contém o nome de anfitrião do nó principal.

(Opcional) Adicione 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. Obtenha a permissão Kerberos.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL
    sudo klist
    sudo hive
    

O que se segue?