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 Configurez Kerberos pour les points de terminaison Thrift.
Avant de commencer
Comprendre les bases de Kerberos :
Dans ces instructions, vous allez utiliser un cluster Dataproc pour créer les composants Kerberos suivants :
- Fichier Keytab.
- Un fichier
krb5.conf
. - Un principal Kerberos.
Pour en savoir plus sur le fonctionnement de ces éléments Kerberos Pour le service Dataproc Metastore, consultez la page À propos de Kerberos.
Créez et hébergez votre propre KDC Kerberos ou apprenez à 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 dont vous avez besoin pour créer un métastore Dataproc configuré 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
) -
Accordez 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 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 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 les autorisations spécifiques du métastore Dataproc, consultez Gérer les 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 métastore Dataproc qui utilise le point de terminaison gRPC. Vous créerez ensuite un cluster Dataproc configuré avec Kerberos et de s'y connecter.
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 Dataproc et vous connecter à votre service
Pour créer une instance Dataproc configurée avec Kerberos, exécutez la commande suivante :
gcloud dataproc clusters create
.
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 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 un 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
Fichier Hadoop container-executor.cfg
. Cela permet aux utilisateurs d'exécuter
des requêtes pour accéder aux données,
comme select * from
.
Les instructions suivantes vous expliquent comment vous connecter en SSH à votre instance Dataproc principale
associé à votre service Dataproc Metastore.
modifiez le fichier container-executor.cfg
.
- Dans la console Google Cloud, accédez à la page VM Instances.
Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de la 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.
Dans la session SSH, ouvrez le fichier
container-executor.cfg
Hadoop.sudo vim /etc/hadoop/conf/container-executor.cfg
Ajoutez la ligne suivante à chaque nœud Dataproc.
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 Dataproc, générez un ticket Kerberos et connectez-vous à votre service Dataproc Metastore.
Cette commande utilise le nom de 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 keytab est répertorié à l'aide de la commandeklist -kte
. Il contient le nom d'hôte du nœud principal.
(Facultatif) Ajouter une entité principale
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"
Prenez un ticket pour les Kerbero.
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive