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 de autorização do Kerberos e ligue-se ao seu serviço de Metastore do Dataproc.

    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?