Cette page explique comment configurer Kerberos pour votre service Dataproc Metastore qui utilise le protocole de point de terminaison gRPC. Si votre service Dataproc Metastore utilise le protocole de point de terminaison Thrift, consultez Configurer Kerberos pour les points de terminaison Thrift.
Avant de commencer
Comprendre les bases de Kerberos.
Dans ces instructions, vous utilisez un cluster Managed Service pour Apache Spark afin de créer les éléments Kerberos suivants :
- Un fichier Keytab
- Un fichier
krb5.conf - Un principal Kerberos
Pour en savoir plus sur le fonctionnement de ces éléments Kerberos avec un service Dataproc Metastore, consultez À propos de Kerberos.
Créez et hébergez votre propre KDC Kerberos ou découvrez comment utiliser le KDC local d'un cluster Managed Service pour Apache Spark.
Créez un bucket Cloud Storage ou accédez-en à un existant. Vous devez stocker votre fichier
krb5.confdans ce bucket.
Rôles requis
Pour obtenir l'autorisation nécessaire pour créer un Dataproc Metastore configuré avec Kerberos , demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet, en fonction du principe du moindre privilège :
- Accorder le contrôle total des ressources Dataproc Metastore (
roles/metastore.editor) - Accorder un accès complet à toutes les ressources Dataproc Metastore, y compris l'administration des stratégies IAM (
roles/metastore.admin) - Accorder un accès en lecture/écriture gRPC aux métadonnées Dataproc Metastore (
roles/metastore.metadataEditor)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient l'
metastore.services.create
autorisation,
qui est requise pour
créer un Dataproc Metastore configuré avec Kerberos .
Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les rôles et autorisations spécifiques de Dataproc Metastore, consultez Gérer l'accès avec IAM.Pour en savoir plus, consultez la page IAM et contrôle des accès Dataproc Metastore.
Configurer Kerberos pour Dataproc Metastore
Les instructions suivantes vous expliquent comment configurer Kerberos pour un service Dataproc Metastore qui utilise le point de terminaison gRPC.
Tout d'abord, créez un Dataproc Metastore qui utilise le point de terminaison gRPC. Ensuite, créez un cluster Managed Service pour Apache Spark configuré avec Kerberos et connectez-vous à celui-ci.
Créer un service Dataproc Metastore avec le point de terminaison gRPC
Pour créer un Dataproc Metastore qui utilise le point de terminaison gRPC, exécutez
la commande gcloud metastore services create suivante :
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
Remplacez :
SERVICE: nom de votre service Dataproc Metastore
Créer un cluster Managed Service pour Apache Spark et se connecter à votre service
Pour créer un Managed Service pour Apache Spark configuré avec Kerberos, exécutez la commande gcloud dataproc clusters create suivante.
Dans cette commande, l'option --enable-kerberos crée le fichier Keytab Kerberos, le fichier krb5.conf et le principal. Ces valeurs sont toutes créées à l'aide des noms et paramètres par défaut définis par le cluster Managed Service pour 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'
Remplacez :
CLUSTER_NAME: nom de votre cluster Managed Service pour Apache SparkPROJECT_ID: ID de votre projet Google CloudREGION: région dans laquelle vous souhaitez créer votre cluster Managed Service pour Apache Spark Google CloudDATAPROC_METASTORE_NAME: nom du service Dataproc Metastore que vous associez au cluster, au format suivant :projects/<my_project>/locations/<location>/services/<service_id>
Configurer Managed Service pour Apache Spark avant d'envoyer des jobs
Pour exécuter vos jobs Managed Service pour Apache Spark,
vous devez ajouter l'utilisateur hive à la propriété allowed.system.users dans le
fichier Hadoop container-executor.cfg. Cela permet aux utilisateurs d'exécuter des requêtes pour accéder aux données, telles que select * from.
Les instructions suivantes vous expliquent comment vous connecter en SSH à votre cluster Managed Service pour Apache Spark principal associé à votre service Dataproc Metastore et comment mettre à jour le fichier container-executor.cfg.
- Dans la Google Cloud console, accédez à la page "Instances de VM".
Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne du nœud principal Managed Service pour Apache Spark (
your-cluster-name-m).Une fenêtre de navigateur s'ouvre dans votre répertoire personnel sur le nœud.
Dans la session SSH, ouvrez le fichier Hadoop
container-executor.cfg.sudo vim /etc/hadoop/conf/container-executor.cfgAjoutez la ligne suivante sur chaque nœud Managed Service pour Apache Spark.
allowed.system.users=hive
Obtenir un ticket Kerberos
Les instructions suivantes vous expliquent comment générer un ticket Kerberos.
Dans la session SSH du cluster Managed Service pour Apache Spark, générez un ticket Kerberos et connectez-vous à votre service Dataproc Metastore.
Cette commande utilise le nom de fichier Keytab par défaut généré par votre cluster Managed Service pour 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.La valeur
_HOSTest récupérée lorsque le fichier Keytab est listé à l'aide de la commandeklist -kte. Elle contient le nom d'hôte du nœud principal.
(Facultatif) Ajouter un principal
Pour ajouter un principal, exécutez la commande suivante.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"Obtenez le ticket Kerberos.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive