Questa pagina spiega come configurare Kerberos per il servizio Dataproc Metastore che utilizza il protocollo dell'endpoint gRPC. Se il servizio Dataproc Metastore utilizza il protocollo dell'endpoint Thrift, consulta Configurare Kerberos per gli endpoint Thrift.
Prima di iniziare
Comprendi le nozioni di base di Kerberos.
In queste istruzioni, utilizzi un cluster Managed Service for Apache Spark per creare le seguenti risorse Kerberos:
- Un file keytab.
- Un file
krb5.conf. - Un'entità Kerberos.
Per saperne di più su come queste risorse Kerberos funzionano con un servizio Dataproc Metastore, consulta Informazioni su Kerberos.
Crea e ospita il tuo KDC Kerberos o scopri come utilizzare il KDC locale di un cluster Managed Service for Apache Spark.
Crea un bucket Cloud Storage o ottieni l'accesso a uno esistente. Devi archiviare il file
krb5.confin questo bucket.
Ruoli obbligatori
Per ottenere l'autorizzazione necessaria per creare un Dataproc Metastore configurato con Kerberos, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto, in base al principio del privilegio minimo:
- Concedi il controllo completo delle risorse Dataproc Metastore (
roles/metastore.editor) - Concedi l'accesso completo a tutte le risorse Dataproc Metastore, inclusa l'amministrazione dei criteri IAM (
roles/metastore.admin) - Concedi l'accesso in lettura/scrittura gRPC ai metadati Dataproc Metastore (
roles/metastore.metadataEditor)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene l'
metastore.services.create
autorizzazione,
necessaria per
creare un Dataproc Metastore configurato con Kerberos .
Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più su ruoli e autorizzazioni specifici di Dataproc Metastore, consulta Gestisci l'accesso con IAM.Per saperne di più, consulta IAM e controllo dell'accesso di Dataproc Metastore.
Configurare Kerberos per Dataproc Metastore
Le seguenti istruzioni mostrano come configurare Kerberos per un servizio Dataproc Metastore che utilizza l'endpoint gRPC.
Innanzitutto, crea un Dataproc Metastore che utilizza l'endpoint gRPC. Dopodiché, crea un cluster Managed Service for Apache Spark configurato con Kerberos e connettiti.
Creare un servizio Dataproc Metastore con l'endpoint gRPC
Per creare un Dataproc Metastore che utilizza l'endpoint gRPC, esegui
il seguente gcloud metastore services create comando:
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
Sostituisci:
SERVICE: il nome del servizio Dataproc Metastore
Creare un cluster Managed Service for Apache Spark e connettersi al servizio
Per creare un Managed Service for Apache Spark configurato con Kerberos, esegui il seguente comando gcloud dataproc clusters create.
In questo comando, l'opzione --enable-kerberos crea il file keytab Kerberos, il file krb5.conf e l'entità. Questi valori vengono creati utilizzando i nomi e le impostazioni predefiniti impostati dal cluster Managed Service for Apache Spark.
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'
Sostituisci:
CLUSTER_NAME: il nome del cluster Managed Service for Apache Spark.PROJECT_ID: l'ID del tuo progetto Google Cloud.REGION: la Google Cloud regione in cui vuoi creare il cluster Managed Service for Apache Spark.DATAPROC_METASTORE_NAME: il nome del servizio Dataproc Metastore che stai collegando al cluster, nel seguente formato:projects/<my_project>/locations/<location>/services/<service_id>.
Configurare Managed Service for Apache Spark prima di inviare i job
Per eseguire i tuoi job Managed Service for Apache Spark,
devi aggiungere l'utente hive alla proprietà allowed.system.users nel
file container-executor.cfg di Hadoop. In questo modo gli utenti possono eseguire query per accedere ai dati, ad esempio select * from.
Le seguenti istruzioni mostrano come connetterti tramite SSH al cluster Managed Service for Apache Spark principale associato al servizio Dataproc Metastore e aggiornare il file container-executor.cfg.
- Nella Google Cloud console, vai alla pagina Istanze VM.
Nell'elenco delle istanze della macchina virtuale, fai clic su SSH nella riga del nodo primario Managed Service for Apache Spark (
your-cluster-name-m).Si apre una finestra del browser nella directory home del nodo.
Nella sessione SSH, apri il file
container-executor.cfgdi Hadoop.sudo vim /etc/hadoop/conf/container-executor.cfgAggiungi la seguente riga a ogni nodo Managed Service for Apache Spark.
allowed.system.users=hive
Ottenere una richiesta di Kerberos
Le seguenti istruzioni mostrano come generare una richiesta di Kerberos.
Nella sessione SSH del cluster Managed Service for Apache Spark, genera una richiesta di Kerberos e connettiti al servizio Dataproc Metastore.
Questo comando utilizza il nome keytab predefinito generato dal cluster Managed Service for Apache Spark.
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.Il valore
_HOSTviene recuperato quando il file keytab viene elencato utilizzando il comandoklist -kte. Contiene il nome host del nodo primario.
(Facoltativo) Aggiungere una nuova entità
Per aggiungere una nuova entità, esegui il seguente comando.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"Ottieni la richiesta di Kerberos.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive