Esta página explica como conceder a uma conta de Google Cloud usuário ou a uma conta de serviço acesso a um serviço do metastore do Dataproc que usa o protocolo de endpoint gRPC.
Sobre a concessão de papéis de metadados gRPC
Ao conceder acesso a uma conta aos seus metadados, considere os seguintes conceitos:
- O nível de acesso a ser fornecido. O nível de acesso concedido controla a quantidade de metadados que uma conta pode acessar. Por exemplo, você pode fornecer acesso a metadados armazenados em um banco de dados ou tabela específicos ou a todo o projeto.
O principal que exige acesso. Você usa principais do IAM (identidades) para executar seus jobs. Por exemplo, é possível executar jobs de cluster do Serviço Gerenciado para Apache Spark com contas de usuário ou de serviço (normalmente a conta de serviço da VM do Dataproc account).
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:
- Para conceder acesso total aos recursos de metadados. Papel de proprietário de metadados (
roles/metastore.metadataOwner) - Para conceder acesso de leitura e gravação a metadados: papel de 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 projeto.
- Crie um serviço de metastore que use o protocolo gRPC.
Entenda 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 será necessário configurar uma VPC compartilhada nem definir outras configurações de rede. 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 gRPC só poderão ser acessados de uma VPC pertencente a projetos no perímetro. Para mais informações, consulte VPC Service Controls with Dataproc Metastore.
Papéis necessários
Para receber as permissões necessárias para conceder a um principal acesso aos metadados do metastore do Dataproc, 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 conceder controle total dos recursos do metastore do Dataproc (
roles/metastore.editor) - Para conceder controle total dos recursos do Dataproc Metastore, incluindo a atualização das permissões do IAM (
roles/metastore.admin)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para conceder a um principal acesso aos metadados do metastore do Dataproc. Para acessar 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 a um principal acesso aos metadados do metastore do Dataproc:
-
resourcemanager.projects.get -
resourcemanager.projects.getIamPolicy -
resourcemanager.projects.setIamPolicy
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Para mais informações sobre papéis e permissões específicos do metastore do Dataproc, consulte Visão geral do IAM do metastore do Dataproc.Conceder acesso de uma conta principal aos metadados
É possível conceder acesso de uma conta principal aos 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 metastore do Dataproc no nível do projeto, é necessário conceder um papel de metadados à conta principal.
CLI gcloud
Para conceder papéis de metadados a todos os serviços do metastore do Dataproc em
um projeto especificado, execute o seguinte gcloud projects
add-iam-policy-binding
comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=PRINCIPAL \
--role=METASTORE_ROLESubstitua:
PROJECT_ID: o ID do projeto ao qual você quer conceder acesso aos metadados. Google CloudPRINCIPAL: 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 Grupos do Google: group:EMAIL_ID
- Para outros tipos principais: Identificadores principais
METASTORE_ROLE\`: One of the following roles, depending on the scope of access that you want to grant the principal:roles/metastore.metadataViewer,roles/metastore.metadataEditor, orroles/metastore.metadataOwner`.
Conceder acesso no nível de serviço
Para conceder acesso a todos os metadados do metastore do Dataproc no nível do serviço, é necessário conceder um papel de metadados à conta principal.
CLI gcloud
Para conceder papéis de metadados na granularidade de um único serviço de metastore do Dataproc, execute o seguinte gcloud metastore services
add-iam-policy-binding comando:
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 do 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 Grupos do Google: group:EMAIL_ID
- Para outros tipos principais: Identificadores principais
METASTORE_ROLE: um dos seguintes papéis, dependendo do escopo de acesso que você quer conceder ao principal:roles/metastore.metadataViewer,roles/metastore.metadataEditorouroles/metastore.metadataOwner.
Conceder acesso no nível do banco de dados
Para conceder acesso a todos os metadados do metastore do Dataproc em um banco de dados específico, é necessário adicionar um papel de metadados à conta principal.
CLI gcloud
Para conceder papéis de metadados na granularidade de um banco de dados específico, execute o
seguinte gcloud metastore services databases
add-iam-policy-binding
comando:
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 ao qual você está concedendo acesso aos metadados. Você recebe esse ID do esquema do banco de dados.PROJECT: o ID do projeto que contém o serviço do metastore do Dataproc ao qual você está concedendo acesso aos metadados. Google CloudLOCATION: a região do serviço do metastore do Dataproc ao qual você está concedendo acesso aos metadados.SERVICE_ID: o ID ou identificador totalmente qualificado do serviço do 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 Grupos do Google: group:EMAIL_ID
- Para outros tipos principais: Identificadores principais
METASTORE_ROLE: um dos seguintes papéis, dependendo do escopo de acesso que você quer conceder ao principal:roles/metastore.metadataViewer,roles/metastore.metadataEditorouroles/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, é necessário conceder um papel de metadados à conta principal.
CLI gcloud
Para conceder papéis de metadados na granularidade de uma tabela, execute o seguinte gcloud metastore services databases tables add-iam-policy-binding comando:
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ê recebe 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ê recebe esse ID do esquema do banco de dados.PROJECT: o ID do projeto que contém o serviço do metastore do Dataproc ao qual você está concedendo acesso aos metadados. Google CloudLOCATION: a região do serviço do metastore do Dataproc ao qual você está concedendo acesso aos metadados.SERVICE_ID: o ID ou identificador totalmente qualificado do serviço do 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 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.metadataEditorouroles/metastore.metadataOwner.
Depois de conceder acesso aos metadados
Depois de conceder os papéis necessários às contas de serviço, é possível conectar o metastore do Dataproc a um cluster do Serviço Gerenciado para Apache Spark. O cluster usa o serviço do metastore do Dataproc como metastore Hive.
A seguir
- Anexar um cluster do Serviço Gerenciado para Apache Spark
- Atualizar e excluir o metastore do Dataproc
- Importar metadados para o metastore do Dataproc