Esta página explica como configurar o Kerberos para seu Serviço do Dataproc Metastore que usa o protocolo de endpoint Thrift. Se o serviço Metastore do Dataproc usa o protocolo de endpoint gRPC, consulte Configure o Kerberos para endpoints do gRPC.
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 do Dataproc Metastore, consulte Sobre o Kerberos.
Crie e hospede seu próprio KDC 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.
Considerações sobre a rede
Antes de configurar o Kerberos, considere o seguinte: configurações:
Configure uma conexão IP entre sua rede VPC e o KDC. É necessário fazer isso para autenticar seu arquivo KDC com o serviço Metastore do Dataproc.
Configure as regras de firewall necessárias KDC (em inglês). Essas regras são necessárias para permitir o tráfego de Metastore do Dataproc. Para mais informações, consulte Regras de firewall para sua e serviços.
Se você estiver usando o VPC Service Controls, o segredo do Secret Manager e o objeto
krb5.conf
do Cloud Storage precisam pertencer a um projeto que resida no mesmo perímetro de serviço que o serviço Metastore do Dataproc.Decida qual rede de peering da VPC você quer usar. Você precisa configurar o Cluster do Dataproc e metastore do Dataproc com a mesma rede de peering de VPC.
Papéis necessários
Para ter a permissão necessária para criar um metastore do Dataproc com o Kerberos, faça o seguinte: peça ao administrador para conceder a você papéis do IAM a seguir no projeto, com base no princípio de 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
)
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
metastore.services.create
permissão,
que é necessário para
criar um metastore do Dataproc com o 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.
Ativar o Kerberos para o metastore do Dataproc
As instruções a seguir mostram como configurar o Kerberos para um serviço do metastore do Dataproc anexado a um cluster do Dataproc.
Criar um cluster do Dataproc e ativar o Kerberos
gcloud
Para configurar um cluster do Dataproc com o Kerberos:
execute o seguinte gcloud dataproc clusters create
comando:
gcloud dataproc clusters create CLUSTER_NAME \ --image-version=2.0 \ --enable-kerberos \ --scopes 'https://www.googleapis.com/auth/cloud-platform'
Substitua:
CLUSTER_NAME
: o nome do cluster do Dataproc.
Configurar o cluster do Dataproc para Kerberos
As instruções a seguir mostram como usar o SSH para se conectar a uma instância principal do Dataproc cluster associado ao serviço Metastore do Dataproc.
Depois, modifique o arquivo hive-site.xml
e configure o Kerberos para seu serviço.
- 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ó.
Abra o arquivo
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Você vai ver uma saída semelhante a esta:
<property> <name>hive.metastore.kerberos.principal</name> <value>PRINCIPAL_NAME</value> </property> <property> <name>hive.metastore.kerberos.keytab.file</name> <value>METASTORE_PRINCPAL_KEYTAB</value> </property>
Substitua:
PRINCIPAL_NAME
: um nome principal, no seguinte no formatoprimary/instance@REALM
. Por exemplo,hive/test@C.MY-PROJECT.INTERNAL
.METASTORE_PRINCIPAL_KEYTAB
: a localização do Arquivo keytab do Hive Metastore. Use o seguinte valor/etc/security/keytab/metastore.service.keytab
.
Criar um arquivo keytab
As instruções a seguir mostram como criar um arquivo keytab.
Um arquivo keytab contém um par de principais do Kerberos e um par de chaves criptografadas. Isso é usada para autenticar um principal de serviço com um KDC do Kerberos.
Para criar um arquivo keytab
Na sessão SSH do Dataproc, crie o keytab e o principal.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL_NAME" sudo kadmin.local -q "ktadd -k /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME"
Na sessão SSH do Dataproc, crie e faça upload do arquivo keytab ao Secret Manager.
gcloud secrets create SECRET_NAME --replication-policy automatic sudo gcloud secrets versions add SECRET_NAME --data-file /etc/security/keytab/metastore.service.keytab
Substitua:
SECRET_NAME
: o nome do secret.
Atualizar o arquivo krb5.conf
Em seguida, você deve atualizar o arquivo krb5.conf
para associá-lo à sua
cluster do Dataproc.
Determine o endereço IP interno principal do Dataproc instância principal do cluster.
gcloud compute instances list
Por exemplo, a execução deste comando produz uma saída semelhante:
~$ gcloud compute instances list --project kerberos-project NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS cluster-236-m us-central1-c n2-standard-4 192.0.2.2 *.*.*.* RUNNING ...
Nesse caso, o endereço IP interno do cluster é
192.0.2.2
.Abra o arquivo
krb5.conf
.sudo vim /etc/krb5.conf
No arquivo, substitua o parâmetro
KDC
e o parâmetroadmin_server
pelo endereço IP interno do cluster do Dataproc.Por exemplo, o uso do valor do endereço IP das etapas anteriores é semelhante a esta saída.
[realms] US-CENTRAL1-A.C.MY-PROJECT.INTERNAL = { kdc = 192.0.2.2 admin_server = 192.0.2.2 }
Faça upload do arquivo
/etc/krb5.conf
do Dataproc principal VM ao bucket do Cloud Storage.gcloud storage cp /etc/krb5.conf gs://PATH_TO_KRB5
Substitua:
PATH_TO_KRB5
: o URI do Cloud Storage que contém seu arquivokrb5.conf
.
Quando o upload terminar, copie o caminho dele. Você precisa usá-lo ao criar o serviço do metastore do Dataproc.
Conceder permissões e papéis do IAM
Conceder a permissão à conta de serviço do metastore do Dataproc para acessar o arquivo keytab. Essa conta é gerenciada pelo Google e listada na página da interface de permissões do IAM selecionando Incluir concessões de papel fornecidas pelo Google.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/secretmanager.secretAccessor
Forneça à conta de serviço do metastore do Dataproc permissão para acessar o arquivo
krb5.conf
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/storage.objectViewer
Criar um serviço do metastore do Dataproc com o Kerberos
Crie um novo serviço do Metastore do Dataproc configurado com seus arquivos Kerberos.
Certifique-se de criar seu serviço na rede VPC como seu Dataproc aglomerado.
gcloud metastore services create SERVICE \ --location=LOCATION \ --instance-size=medium \ --network=VPC_NETWORK \ --kerberos-principal=KERBEROS_PRINCIPAL \ --krb5-config=KRB5_CONFIG \ --keytab=CLOUD_SECRET
Substitua:
SERVICE
: o nome do serviço do metastore do Dataproc.LOCATION
: o local do serviço do metastore do Dataproc.VPC_NETWORK
: o nome da sua rede VPC. Use a mesma rede configurada no cluster do Dataproc.KERBEROS_PRINCIPAL
: o nome do principal do Kerberos que você criou anteriormente.KRB5_CONFIG
: o local do arquivokrb5.config
. Use o URI de objeto do Cloud Storage que aponta para seu arquivo.CLOUD_SECRET
: o nome do recurso relativo de uma versão do secret do Secret Manager.
Depois de criar o cluster, o metastore do Dataproc tenta se conectar
com suas credenciais do Kerberos usando o principal, o keytab e o krb5.conf
. Se a conexão falhar, a criação do Metastore do Dataproc também falhará.
Vincular o cluster do Dataproc ao metastore do Dataproc
Após a criação do serviço Metastore do Dataproc, encontre o URI de endpoint do Thrift e o diretório de armazenamento.
Conecte-se por SSH à instância principal do cluster do Dataproc.
Na sessão SSH, abra o arquivo
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Modifique
/etc/hive/conf/hive-site.xml
no cluster do Dataproc.<property> <name>hive.metastore.uris</name> <!-- Update this value. --> <value>ENDPOINT_URI</value> </property> <!-- Add this property entry. --> <property> <name>hive.metastore.warehouse.dir</name> <value>WAREHOUSE_DIR</value> </property>
Reinicie o HiveServer2:
sudo systemctl restart hive-server2.service
Configure 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
.
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
Consiga o tíquete kerberos antes de se conectar à instância do metastore do Dataproc.
sudo klist -kte /etc/security/keytab/metastore.service.keytab sudo kinit -kt /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME sudo klist # gets the ticket information. sudo hive
Substitua:
PRINCIPAL_NAME
: o nome do diretor.