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:
-
Conceda controlo total dos recursos do Dataproc Metastore (
roles/metastore.editor
) -
Conceda acesso total a todos os recursos de Metastore do Dataproc, incluindo a administração de políticas de IAM (
roles/metastore.admin
) -
Conceda acesso de leitura/escrita gRPC aos metadados do Dataproc Metastore (
roles/metastore.metadataEditor
)
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
.
- Na Google Cloud consola, aceda à página Instâncias de VM.
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ó.
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.
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 comandoklist -kte
. Contém o nome de anfitrião do nó principal.
(Opcional) Adicione um novo principal
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"
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