Esta página explica como configurar o Kerberos para seu serviço do metastore do Dataproc 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 do Kerberos ou aprenda a usar o KDC local de um cluster do Dataproc.
Crie um bucket do Cloud Storage ou receba acesso a um atual. 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. Você deve 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 de 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 permissões e papéis específicos do metastore do Dataproc, consulte Gerenciar 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 metastore do Dataproc ou serviço 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 comando gcloud dataproc clusters create
:
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.
Em seguida, 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 Nó principal do Dataproc (
your-cluster-name-m
).Uma janela do 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ê verá uma resposta 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, executar este 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 os parâmetros
KDC
eadmin_server
atuais. pelo endereço IP interno do seu cluster do Dataproc.Por exemplo, o uso do valor do endereço IP das etapas anteriores é semelhante para 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
da VM principal do Dataproc para o 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
.
Depois que o upload terminar, copie o caminho dele. Você precisa usá-lo ao criar o serviço do metastore do Dataproc.
Conceder papéis e permissões 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 UI de permissões do IAM selecionando Incluir concessões de papéis fornecidos 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 configurada no cluster do Dataproc.KERBEROS_PRINCIPAL
: o nome do principal do Keras 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 Dataproc Metastore tenta se conectar
às credenciais do kerberos usando o principal, o keytab e o arquivo krb5.conf
fornecidos. Se a conexão falhar, a criação do metastore do Dataproc também falhará.
Vincular o cluster do Dataproc ao metastore do Dataproc
Depois que o serviço Metastore do Dataproc for criado, encontre o URI do endpoint do Thrift e o diretório do armazém.
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
Compre um ingresso 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 principal.