Acessar endpoints gRPC para o metastore do Dataproc

Nesta página, explicamos como conceder acesso a uma conta de usuário ou conta de serviço do Google Cloud a um serviço Metastore do Dataproc que usa o protocolo de endpoint gRPC.

Sobre a concessão de papéis de metadados gRPC

Ao conceder a uma conta acesso aos seus metadados, considere os seguintes conceitos:

  • O nível de acesso a ser fornecido. O nível de acesso que você concede controla a quantidade de metadados que uma conta pode acessar. Por exemplo, é possível fornecer acesso aos metadados armazenados em um banco de dados específico, uma tabela específica ou fornecer acesso a todo o projeto.
  • O principal que requer acesso. Use principais (identidades) do IAM para executar os jobs. Por exemplo, é possível executar jobs de cluster do Dataproc com contas de usuário ou de serviço (geralmente a conta de serviço da VM do Dataproc).

    Para mais informações sobre as contas que podem ser usadas com o Metastore do Dataproc, consulte Contas de serviço do Dataproc.

Dependendo do escopo de controle necessário, conceda ao principal um dos seguintes papéis predefinidos do IAM:

  • Conceder acesso total aos recursos de metadados. Papel de proprietário de metadados (roles/metastore.metadataOwner)
  • Para conceder acesso de leitura e gravação aos metadados: papel Editor de metadados roles/metastore.metadataEditor)
  • Para conceder acesso de leitura aos metadados: papel de Leitor de metadados (roles/metastore.metadataViewer)

Antes de começar

  • Ative o Metastore do Dataproc no seu projeto.
  • Crie um serviço metastore que use o protocolo gRPC.
  • Entenda os requisitos de rede específicos do seu projeto.

    • Requisitos do gRPC e da nuvem privada virtual (VPC). Se você estiver usando o gRPC, não precisará configurar uma VPC compartilhada ou definir configurações de rede extras. Por padrão, os endpoints gRPC podem ser acessados de qualquer VPC.

    No entanto, há uma exceção. Se o projeto estiver usando um perímetro de serviço do VPC-SC, os endpoints do gRPC só poderão ser acessados por uma VPC pertencente a projetos no perímetro. Para mais informações, consulte VPC Service Controls com o metastore do Dataproc.

Papéis necessários

Para receber as permissões necessárias para conceder um acesso principal aos metadados do Dataproc Metastore, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, seguindo o princípio de privilégio mínimo:

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

Esses papéis predefinidos contêm as permissões necessárias para conceder um acesso principal aos metadados do Dataproc Metastore. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para conceder acesso principal aos metadados do Dataproc Metastore:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

Talvez você também consiga receber essas permissões 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 Visão geral do IAM do metastore do Dataproc.

Conceder a uma conta principal acesso aos metadados

A uma conta principal pode acessar os metadados no nível do projeto, do serviço, do banco de dados ou da tabela.

Conceder acesso no nível do projeto

Para conceder acesso a todos os metadados do Dataproc Metastore no nível do projeto, conceda um papel de metadados à conta principal.

CLI da gcloud

Para conceder papéis de metadados a todos os serviços do Dataproc Metastore em um projeto especificado, execute o seguinte comando gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role=METASTORE_ROLE

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud a que você quer conceder acesso aos metadados.
  • PRINCIPAL: o tipo e o ID de e-mail (endereço de e-mail) do principal.
    • Para contas de usuário: user:EMAIL_ID
    • Para contas de serviço: serviceAccount:EMAIL_ID
    • Para os Grupos do Google: group:EMAIL_ID
    • Para outros tipos de principais: Conceitos relacionados à identidade
  • METASTORE_ROLE: um dos seguintes papéis, dependendo do escopo de acesso que você quer conceder ao principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor ou roles/metastore.metadataOwner.

Conceder acesso no nível de serviço

Para conceder acesso a todos os metadados do Dataproc Metastore no nível de serviço, conceda um papel de metadados à conta principal.

CLI da gcloud

Para conceder papéis de metadados na granularidade de um único serviço de metastore do Dataproc, execute o seguinte comando gcloud metastore services add-iam-policy-binding:

gcloud metastore services add-iam-policy-binding SERVICE_ID \
  --location=LOCATION \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

Substitua:

  • SERVICE_ID: o ID ou identificador totalmente qualificado do serviço Metastore do Dataproc.
  • LOCATION: a região do Metastore do Dataproc a que você está concedendo acesso.
  • PRINCIPAL: o tipo e o ID de e-mail (endereço de e-mail) da conta principal:
    • Para contas de usuário: user:EMAIL_ID
    • Para contas de serviço: serviceAccount:EMAIL_ID
    • Para os Grupos do Google: group:EMAIL_ID
    • Para outros tipos de principais: Conceitos relacionados à identidade
  • METASTORE_ROLE: um dos seguintes papéis, dependendo do escopo de acesso que você quer conceder ao principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor ou roles/metastore.metadataOwner.

Conceder acesso no nível do banco de dados

Para conceder acesso a todos os metadados do Dataproc Metastore em um banco de dados específico, adicione um papel de metadados à conta principal.

CLI da gcloud

Para conceder papéis de metadados na granularidade de um banco de dados específico, execute o seguinte comando gcloud metastore services databases add-iam-policy-binding:

gcloud metastore services databases add-iam-policy-binding DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

Substitua:

  • DATABASE_ID: o ID do banco de dados a que você está concedendo acesso aos metadados. Você consegue esse ID do esquema do banco de dados.
  • PROJECT: o ID do projeto do Google Cloud que contém o serviço Metastore do Dataproc a que você está concedendo acesso a metadados.
  • LOCATION: a região do serviço Metastore do Dataproc a que você está concedendo acesso.
  • SERVICE_ID: o ID ou identificador totalmente qualificado do serviço Metastore do Dataproc.
  • PRINCIPAL: o tipo e o ID de e-mail (endereço de e-mail) da conta principal:
    • Para contas de usuário: user:EMAIL_ID
    • Para contas de serviço: serviceAccount:EMAIL_ID
    • Para os Grupos do Google: group:EMAIL_ID
    • Para outros tipos de principais: Conceitos relacionados à identidade
  • METASTORE_ROLE: um dos seguintes papéis, dependendo do escopo de acesso que você quer conceder ao principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor ou roles/metastore.metadataOwner.

Conceder acesso no nível da tabela

Para conceder acesso a todos os metadados do metastore do Dataproc em uma tabela específica, conceda um papel de metadados à conta principal.

CLI da gcloud

Para conceder papéis de metadados na granularidade de uma tabela, execute o seguinte comando gcloud metastore services databases tables add-iam-policy-binding:

gcloud metastore services databases tables add-iam-policy-binding TABLE_ID \
  --database=DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

Substitua:

  • TABLE_ID: o ID da tabela a que você está concedendo acesso. Você consegue esse ID do esquema do banco de dados.
  • DATABASE_ID: o ID do banco de dados que contém a tabela a que você está concedendo acesso aos metadados. Você consegue esse ID do esquema do banco de dados.
  • PROJECT: o ID do projeto do Google Cloud que contém o serviço Metastore do Dataproc a que você está concedendo acesso a metadados.
  • LOCATION: a região do serviço Metastore do Dataproc a que você está concedendo acesso aos metadados.
  • SERVICE_ID: o ID ou identificador totalmente qualificado do serviço Metastore do Dataproc.
  • PRINCIPAL: o tipo e o ID de e-mail (endereço de e-mail) da conta principal:
    • Para contas de usuário: user:EMAIL_ID
    • Para contas de serviço: serviceAccount:EMAIL_ID
    • Para os Grupos do Google: group:EMAIL_ID
  • METASTORE_ROLE: um dos seguintes papéis, dependendo do escopo de acesso que você quer conceder ao principal: roles/metastore.metadataViewer, roles/metastore.metadataEditor ou roles/metastore.metadataOwner.

Depois de conceder acesso aos seus metadados

Depois de conceder os papéis necessários às contas de serviço, conecte seu metastore do Dataproc a um cluster do Dataproc. Em seguida, o cluster usa o serviço Dataproc Metastore como seu Metastore Hive.

A seguir