Cette page explique comment configurer Kerberos pour votre service Dataproc Metastore qui utilise le protocole de point de terminaison Thrift. Si votre service Dataproc Metastore utilise le protocole de point de terminaison gRPC, consultez la section Configurer Kerberos pour les points de terminaison gRPC.
Avant de commencer
Comprendre les principes de base de Kerberos
Dans ces instructions, vous allez utiliser un cluster Dataproc pour créer les composants 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 Dataproc.
Créez un bucket Cloud Storage ou accédez à un bucket existant. Vous devez stocker votre fichier
krb5.conf
dans ce bucket.
Remarques concernant le réseau
Avant de configurer Kerberos, tenez compte des paramètres réseau suivants:
Configurez une connexion IP entre votre réseau VPC et le KDC. Vous devez le faire pour authentifier votre fichier KDC avec le service Dataproc Metastore.
Configurez les règles de pare-feu nécessaires sur votre KDC. Ces règles sont nécessaires pour autoriser le trafic provenant de Dataproc Metastore. Pour en savoir plus, consultez la section Règles de pare-feu pour vos services.
Si vous utilisez VPC Service Controls, le secret fourni par Secret Manager et l'objet Cloud Storage
krb5.conf
doivent appartenir à un projet qui réside dans le même périmètre de service que le service Dataproc Metastore.Choisissez le réseau de peering VPC que vous souhaitez utiliser. Vous devez configurer votre cluster Dataproc et votre service Dataproc Metastore avec le même réseau d'appairage VPC.
Rôles requis
Pour obtenir l'autorisation dont vous avez besoin pour créer un métastore Dataproc avec Kerberos, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet, conformément au principe du moindre privilège:
-
Accorder un contrôle total sur les 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
)
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient l'autorisation metastore.services.create
, qui est requise pour créer un métastore Dataproc 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 les autorisations spécifiques de Dataproc Metastore, consultez Gérer les accès avec IAM.Pour en savoir plus, consultez la page IAM et contrôle des accès Dataproc Metastore.
Activer Kerberos pour Dataproc Metastore
Les instructions suivantes vous expliquent comment configurer Kerberos pour un service Dataproc Metastore associé à un cluster Dataproc.
Créer un cluster Dataproc et activer Kerberos
gcloud
Pour configurer un cluster Dataproc avec Kerberos, exécutez la commande gcloud dataproc clusters create
suivante:
gcloud dataproc clusters create CLUSTER_NAME \ --image-version=2.0 \ --enable-kerberos \ --scopes 'https://www.googleapis.com/auth/cloud-platform'
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster Dataproc.
Configurer le cluster Dataproc pour Kerberos
Les instructions suivantes vous expliquent comment utiliser SSH pour vous connecter à un cluster Dataproc principal associé à votre service Dataproc Metastore.
Modifiez ensuite le fichier hive-site.xml
et configurez Kerberos pour votre service.
- Dans la console Google Cloud, 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 Dataproc (
your-cluster-name-m
).Une fenêtre de navigateur s'ouvre dans votre répertoire de base sur le nœud.
Ouvrez le fichier
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Un résultat semblable aux lignes suivantes s'affiche:
<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>
Remplacez :
PRINCIPAL_NAME
: nom principal, au formatprimary/instance@REALM
suivant. Exemple :hive/test@C.MY-PROJECT.INTERNAL
.METASTORE_PRINCIPAL_KEYTAB
: emplacement de votre fichier keytab Hive Metastore. Utilisez la valeur/etc/security/keytab/metastore.service.keytab
suivante.
Créer un fichier keytab
Les instructions suivantes vous expliquent comment créer un fichier keytab.
Un fichier keytab contient une paire de comptes principaux Kerberos et une paire de clés chiffrées. Il permet d'authentifier un compte principal de service à l'aide d'un KDC Kerberos.
Pour créer un fichier keytab
Dans la session SSH Dataproc, créez le keytab et le principal.
sudo kadmin.local -q "addprinc -randkey PRINCIPAL_NAME" sudo kadmin.local -q "ktadd -k /etc/security/keytab/metastore.service.keytab PRINCIPAL_NAME"
Dans la session SSH Dataproc, créez et importez le fichier keytab dans 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
Remplacez les éléments suivants :
SECRET_NAME
: nom de votre secret.
Mettre à jour le fichier krb5.conf
Ensuite, vous devez mettre à jour le fichier krb5.conf
pour l'associer à votre cluster Dataproc.
Déterminez l'adresse IP interne principale de l'instance principale du cluster Dataproc.
gcloud compute instances list
Par exemple, l'exécution de cette commande produit un résultat semblable:
~$ 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 ...
Dans ce cas, l'adresse IP interne du cluster est
192.0.2.2
.Ouvrez le fichier
krb5.conf
.sudo vim /etc/krb5.conf
Dans le fichier, remplacez le paramètre
KDC
et le paramètreadmin_server
existants par l'adresse IP interne de votre cluster Dataproc.Par exemple, l'utilisation de la valeur d'adresse IP des étapes précédentes se présente comme suit.
[realms] US-CENTRAL1-A.C.MY-PROJECT.INTERNAL = { kdc = 192.0.2.2 admin_server = 192.0.2.2 }
Importez le fichier
/etc/krb5.conf
depuis votre VM principale Dataproc vers votre bucket Cloud Storage.gcloud storage cp /etc/krb5.conf gs://PATH_TO_KRB5
Remplacez :
PATH_TO_KRB5
: URI Cloud Storage contenant votre fichierkrb5.conf
.
Une fois l'importation terminée, copiez le chemin d'accès. Vous devez l'utiliser lorsque vous créez votre service Dataproc Metastore.
Attribuer des rôles et des autorisations IAM
Attribuez au compte de service Dataproc Metastore l'autorisation d'accéder au fichier keytab. Ce compte est géré par Google et répertorié sur la page de l'interface utilisateur des autorisations IAM en sélectionnant Inclure les attributions de rôles fournies par Google.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com \ --role roles/secretmanager.secretAccessor
Attribuez au compte de service Dataproc Metastore l'autorisation d'accéder au fichier
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
Créer un service Dataproc Metastore avec Kerberos
Créez un service Dataproc Metastore configuré avec vos fichiers Kerberos.
Assurez-vous de créer votre service dans le réseau VPC en tant que cluster Dataproc.
gcloud metastore services create SERVICE \ --location=LOCATION \ --instance-size=medium \ --network=VPC_NETWORK \ --kerberos-principal=KERBEROS_PRINCIPAL \ --krb5-config=KRB5_CONFIG \ --keytab=CLOUD_SECRET
Remplacez les éléments suivants :
SERVICE
: nom de votre service Dataproc Metastore.LOCATION
: emplacement de votre service Dataproc Metastore.VPC_NETWORK
:nom de votre réseau VPC. Utilisez le même réseau que celui configuré dans votre cluster Dataproc.KERBEROS_PRINCIPAL
: nom de l'entité principale Kerberos que vous avez créée précédemment.KRB5_CONFIG
: emplacement du fichierkrb5.config
. Utilisez l'URI de l'objet Cloud Storage qui pointe vers votre fichier.CLOUD_SECRET
: nom de ressource relatif d'une version de secret Secret Manager.
Une fois que vous avez créé votre cluster, Dataproc Metastore tente de se connecter avec vos identifiants Kerberos à l'aide du principal, du fichier keytab et du fichier krb5.conf
fournis. Si la connexion échoue, la création de Dataproc Metastore échoue également.
Associer le cluster Dataproc à Dataproc Metastore
Une fois le service Dataproc Metastore créé, recherchez votre URI du point de terminaison Thrift et votre répertoire d'entrepôt.
Connectez-vous en SSH à l'instance principale de votre cluster Dataproc.
Dans la session SSH, ouvrez le fichier
/etc/hive/conf/hive-site.xml
.sudo vim /etc/hive/conf/hive-site.xml
Modifiez le fichier
/etc/hive/conf/hive-site.xml
sur le cluster 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>
Redémarrez HiveServer2.
sudo systemctl restart hive-server2.service
Configurer Dataproc avant d'envoyer des tâches
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 aux données, comme select * from
.
Dans la session SSH, ouvrez le fichier
container-executor.cfg
Hadoop.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
Obtenez le ticket kerberos avant de vous connecter à l'instance Dataproc Metastore.
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
Remplacez les éléments suivants :
PRINCIPAL_NAME
: nom de votre principal.