Nesta página, explicamos como configurar o Kerberos para seu serviço Metastore do Dataproc que usa o protocolo de endpoint gRPC. Se o serviço do Dataproc Metastore usar o protocolo de endpoint do Thrift, consulte Configurar o Kerberos para endpoints do Thrift.
Antes de começar
Entenda os princípios básicos do Kerberos.
Nestas instruções, você usará um cluster do Dataproc para criar os seguintes recursos do Kerberos:
- Um arquivo Keytab.
- Um arquivo
krb5.conf
. - Um principal do Kerberos.
Para saber mais sobre como esses recursos do Kerberos funcionam com um serviço do 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 atual. Você precisa armazenar o arquivo
krb5.conf
nesse bucket.
Papéis necessários
Para receber a permissão necessária para criar um metastore do Dataproc configurado com o Kerberos, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto, com base no princípio de privilégio mínimo:
-
Conceder controle total dos recursos do metastore do Dataproc (
roles/metastore.editor
) -
Conceda 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 como conceder papéis, consulte Gerenciar acesso.
Esse papel predefinido contém a permissão
metastore.services.create
, que é
necessária para criar um metastore do Dataproc configurado com o Kerberos .
Talvez você também consiga essa permissão com papéis personalizados ou outros papéis predefinidos.
Para saber mais sobre papéis e permissões específicos do Dataproc Metastore, consulte Gerenciar 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 Metastore do Dataproc que usa o endpoint gRPC.
Primeiro, crie um metastore do Dataproc que usa o endpoint gRPC. Depois, crie um cluster do Dataproc configurado com o Kerberos e conecte-se a ele.
Criar um serviço Metastore do Dataproc 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 do Metastore do Dataproc
Criar um cluster do Dataproc e se conectar ao serviço
Para criar um Dataproc configurado com o Kerberos, execute o seguinte comando gcloud dataproc clusters create
.
Nesse comando, a opção --enable-kerberos
cria o arquivo Keytab do Kerberos, o arquivo krb5.conf
e o principal. Esses valores são todos criados usando 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 do Google Cloud.REGION
: a região do Google Cloud em que você quer criar o cluster do Dataproc.DATAPROC_METASTORE_NAME
: o nome do serviço Metastore do Dataproc que você está anexando ao cluster, no seguinte formato:projects/<my_project>/locations/<location>/services/<service_id>
.
Configure o Dataproc antes de enviar jobs
Para executar os jobs do Dataproc,
adicione 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 inserir o SSH no cluster principal do Dataproc
associado ao serviço Metastore do Dataproc e
atualizar o arquivo container-executor.cfg
.
- No console do Google Cloud, acesse a página Instâncias de VM.
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 a cada nó do Dataproc.
allowed.system.users=hive
Comprar um ingresso 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 keytab padrão gerado pelo 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 o arquivo keytab é listado usando o comandoklist -kte
. Ele contém o nome do host do nó principal.
(Opcional) Adicionar uma nova 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"
Compre 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