Esta página explica como configurar o Kerberos para seu serviço do metastore do Dataproc que usa o protocolo de endpoint gRPC. Se o serviço Metastore do Dataproc usar o protocolo de endpoint Thrift, consulte Configure o Kerberos para endpoints do Thrift.
Antes de começar
Entenda o básico sobre Kerberos
Nestas instruções, você vai usar um cluster do Dataproc para criar os seguintes recursos do Kerberos:
- Um arquivo Keytab.
- Um arquivo
krb5.conf
- Um principal do Kerberos.
Para mais informações sobre como esses recursos do Kerberos funcionam com um serviço de metastore do Dataproc, consulte Sobre o Kerberos.
Crie e hospede seu próprio KDC do Kerberos ou aprenda a usar o KDC local de um cluster do Dataproc.
Crie um bucket do Cloud Storage ou acesse um bucket existente. Você precisa armazenar o arquivo
krb5.conf
nesse bucket.
Papéis necessários
Para receber a permissão necessária para criar uma Metastore do Dataproc configurada com Kerberos, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto, com base no princípio do privilégio mínimo:
-
Conceder controle total dos recursos do metastore do Dataproc (
roles/metastore.editor
) -
Conceder acesso total a todos os recursos do metastore do Dataproc, incluindo a administração de políticas do IAM (
roles/metastore.admin
) -
Conceder acesso de leitura e gravação do gRPC aos metadados do metastore do Dataproc (
roles/metastore.metadataEditor
)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém a
permissão
metastore.services.create
,
que é necessária para
criar uma Metastore do Dataproc configurada com Kerberos.
Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.
Para mais informações sobre papéis e permissões específicos do Dataproc Metastore, consulte Gerenciar o acesso com o IAM.Para mais informações, consulte IAM e Dataproc de controle de acesso.
Configurar o Kerberos para o metastore do Dataproc
As instruções a seguir mostram como configurar o Kerberos para um Serviço do Dataproc Metastore que usa o endpoint do gRPC.
Primeiro, crie uma metastore do Dataproc que use o endpoint gRPC. Em seguida, você cria um cluster do Dataproc configurado com o Kerberos e se conecta a ele.
Criar um serviço do Dataproc Metastore com o endpoint gRPC
Para criar um metastore do Dataproc que use o endpoint gRPC, execute
o seguinte comando gcloud metastore services create
:
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
Substitua:
SERVICE
: o nome do Serviço Dataproc Metastore
Criar um cluster do Dataproc e se conectar ao serviço
Para criar um Dataproc configurado com o Kerberos, execute o comando gcloud dataproc clusters create
abaixo.
Nesse comando, a opção --enable-kerberos
cria o arquivo Kerberos
Arquivo keytab, krb5.conf
e principal. Todos esses valores são criados usando
e os nomes e configurações padrão 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'
Substitua:
CLUSTER_NAME
: o nome do cluster do Dataproc.PROJECT_ID
pelo ID do projeto no Google Cloud.REGION
: a região do Google Cloud em que você quer criar o cluster do Dataproc.DATAPROC_METASTORE_NAME
: o nome do o serviço Metastore do Dataproc que você está anexando ao cluster; neste formato:projects/<my_project>/locations/<location>/services/<service_id>
.
Configurar o Dataproc antes de enviar jobs
Para executar jobs do Dataproc:
você precisa adicionar o usuário hive
à propriedade allowed.system.users
no
Arquivo container-executor.cfg
do Hadoop. Isso permite que os usuários executem consultas para acessar dados,
como select * from
.
As instruções a seguir mostram como fazer SSH no cluster principal do Dataproc
associado ao serviço do Metastore do Dataproc e
atualizar o arquivo container-executor.cfg
.
- No console do Google Cloud, acesse VM instâncias.
Na lista de instâncias de máquina virtual, clique em SSH na linha do nó principal do Dataproc (
your-cluster-name-m
).Uma janela de navegador é aberta no diretório principal do nó.
Na sessão SSH, abra o arquivo
container-executor.cfg
do Hadoop.sudo vim /etc/hadoop/conf/container-executor.cfg
Adicione a linha a seguir em cada nó do Dataproc.
allowed.system.users=hive
Receber um tíquete do Kerberos
As instruções a seguir mostram como gerar um tíquete do Kerberos.
Na sessão ssh do cluster do Dataproc, gere um tíquete do Kerberos e conecte-se ao serviço Metastore do Dataproc.
Esse comando usa o nome de keytab padrão 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
é recuperado quando a keytab é listado usando o comandoklist -kte
. Ele contém do nó principal nele.
(Opcional) Adicionar um novo principal
Para adicionar um novo principal, execute o comando a seguir.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
Receber o tíquete do Kerberos.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive