Configurer Kerberos pour les points de terminaison gRPC de Dataproc Metastore

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 la page Configurer Kerberos pour les points de terminaison Thrift.

Avant de commencer

  • Comprendre les principes de base de Kerberos

    Dans ces instructions, vous allez utiliser un cluster Dataproc pour créer les éléments Kerberos suivants:

    • Un fichier Keytab.
    • Un fichier krb5.conf
    • Un compte principal Kerberos.

    Pour en savoir plus sur le fonctionnement de ces éléments Kerberos avec un service Dataproc Metastore, consultez la page À propos de Kerberos.

  • Créez et hébergez votre propre KDC Kerberos, ou découvrez comment utiliser le KDC local d'un cluster Dataproc.

  • Créez un bucket Cloud Storage ou accédez à un bucket existant. Vous devez stocker votre fichier krb5.conf dans 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 attribuer les rôles IAM suivants pour votre projet, selon le principe du moindre privilège:

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient l'autorisation metastore.services.create, 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 la page 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.

Commencez par créer un service Dataproc Metastore qui utilise le point de terminaison gRPC. Vous créerez ensuite un cluster Dataproc configuré avec Kerberos et vous vous y connecterez.

Créer un service Dataproc Metastore avec le point de terminaison gRPC

Pour créer un service 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 Dataproc et vous connecter à votre service

Pour créer un Dataproc 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 compte principal. Ces valeurs sont toutes créées à l'aide des noms et des paramètres par défaut définis par le cluster 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'

Remplacez :

  • CLUSTER_NAME: nom de votre cluster Dataproc.
  • PROJECT_ID : ID de votre projet Google Cloud.
  • REGION: région Google Cloud dans laquelle vous souhaitez créer votre cluster Dataproc.
  • DATAPROC_METASTORE_NAME: nom du service Dataproc Metastore que vous associez au cluster, au format suivant: projects/<my_project>/locations/<location>/services/<service_id>.

Configurer Dataproc avant d'envoyer des jobs

Pour exécuter vos tâches Dataproc, vous devez ajouter l'utilisateur hive à la propriété allowed.system.users dans le fichier container-executor.cfg Hadoop. Cela permet aux utilisateurs d'exécuter des requêtes pour accéder à des données telles que select * from.

Les instructions suivantes vous expliquent comment vous connecter en SSH au cluster Dataproc principal associé à votre service Dataproc Metastore et comment mettre à jour le fichier container-executor.cfg.

  1. Dans la console Google Cloud, accédez à la page Instances de VM.
  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne du nœud principal Dataproc (your-cluster-name-m).

    Une fenêtre de navigateur s'ouvre dans votre répertoire d'accueil sur le nœud.

  3. Dans la session SSH, ouvrez le fichier Hadoop container-executor.cfg.

    sudo vim /etc/hadoop/conf/container-executor.cfg
    

    Ajoutez la ligne suivante sur chaque nœud Dataproc.

    allowed.system.users=hive
    

Obtenir un ticket kerberos

Les instructions suivantes vous expliquent comment générer un ticket Kerberos.

  1. Dans la session SSH du cluster Dataproc, générez un ticket kerberos et connectez-vous au service Dataproc Metastore.

    Cette commande utilise le nom du keytab par défaut généré par votre cluster 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.
    

    La valeur _HOST est récupérée lorsque le fichier keytab est répertorié à l'aide de la commande klist -kte. Il contient le nom d'hôte du nœud principal.

(Facultatif) Ajouter un compte principal

  1. Pour ajouter un compte 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"
    
  2. 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
    

Étapes suivantes