Tous les produits
Search
Centre de documentation

E-MapReduce:Use Kerberos with Kyuubi Gateway

Dernière mise à jour :Aug 26, 2026

Activez Kerberos pour la passerelle Kyuubi dans Serverless Spark afin d'appliquer une authentification sécurisée et un contrôle d'accès. Une fois configuré, les clients doivent s'authentifier via Kerberos lors de la soumission de tâches à la passerelle, ce qui renforce la sécurité de l'exécution des tâches.

Limites

  • Le cluster EMR on ECS et l'espace de travail Serverless Spark doivent se trouver dans la même région.

Prérequis

  • Vous avez créé un cluster EMR on ECS avec l'authentification Kerberos activée. Pour plus d'informations, consultez la rubrique Créer un cluster.

  • Vous avez créé un espace de travail Serverless Spark avec l'authentification Kerberos activée. Pour plus d'informations, consultez la rubrique Activer l'authentification Kerberos.

  • Vous avez créé une passerelle Kyuubi dans l'espace de travail Serverless Spark. La passerelle n'a pas besoin d'être en cours d'exécution.

Établir la connectivité réseau

Pour utiliser Kerberos avec la passerelle Kyuubi, configurez PrivateLink afin d'établir une connectivité réseau entre Serverless Spark et le cluster Kerberos. Cette configuration ne peut pas être effectuée en libre-service. Pour finaliser la configuration, soumettez un ticket contenant les informations requises ; notre équipe d'assistance technique vous accompagnera dans cette démarche.

Créer un endpoint

Le consommateur de service crée et gère l'endpoint. Associez-le à un service d'endpoint pour établir une connexion réseau privée permettant d'accéder à des services externes via PrivateLink. Pour plus d'informations, consultez la rubrique Endpoints.

  1. Connectez-vous à la console Endpoint.

  2. Sur la page Create Endpoint, configurez l'endpoint avec les paramètres suivants, puis cliquez sur Create.

    Parameter

    Description

    Region

    Sélectionnez la région de l'endpoint. Assurez-vous qu'elle correspond à celle du cluster Kerberos et de l'espace de travail Serverless Spark.

    Endpoint Name

    Saisissez un nom personnalisé pour l'endpoint.

    Endpoint Type

    Sélectionnez Interface Endpoint.

    Endpoint Service

    Cliquez sur Select Service, puis sélectionnez ou saisissez l'ID du service d'endpoint cible.

    Remarque

    Pour obtenir l'ID du service d'endpoint, soumettez un ticket avec les informations suivantes :

    • L'ID de l'espace de travail Serverless Spark, par exemple w-f8cfXXXXXX.

    • L'ID VPC du cluster Kerberos qui accède à la passerelle Kyuubi. Ce VPC doit disposer de vSwitches disponibles dans deux zones. Exemple : vpc-bp1tXXXXXX.

    • Les deux zones sélectionnées, par exemple I,J. Pour connaître les zones prises en charge par votre région, contactez notre équipe d'assistance via le ticket.

    • L'ID de la passerelle Kyuubi, par exemple kb-564e****266f.

    VPC

    Sélectionnez le VPC du cluster Kerberos qui accède à la passerelle Kyuubi.

    Security Group

    Sélectionnez le groupe de sécurité à associer à l'interface réseau élastique (ENI) de l'endpoint.

    Remarque

    Vous pouvez associer jusqu'à neuf groupes de sécurité à un endpoint.

    Zone and vSwitch

    Sélectionnez les zones et leurs vSwitches correspondants spécifiés précédemment.

    IP Version

    Les types de réseau suivants sont pris en charge :

    • IPv4 : Permet aux clients d'utiliser des adresses IPv4 pour l'accès.

    • Dual-stack : Permet aux clients d'utiliser à la fois des adresses IPv4 et IPv6 pour l'accès.

    Remarque

    Vous ne pouvez sélectionner l'option dual-stack qu'une fois que le fournisseur de service a terminé la configuration dual-stack.

    Resource Group

    Sélectionnez le groupe de ressources auquel appartient l'endpoint.

    Tags

    Sélectionnez ou saisissez une Tag Key et une Tag Value.

  3. Sur la page Basic Information, si le Status est Status, l'endpoint est prêt à l'emploi. Le nom de domaine du service d'endpoint est ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com.

  4. Connectez-vous au cluster Kerberos et testez la connexion réseau.

    Vérifiez la connectivité du réseau privé de l'endpoint depuis un nœud du cluster Kerberos en exécutant la commande ping :

    [root@master-1-1(xxx) ~]# ping ep-bp1ixxx.cn-hangzhou.privatelink.aliyuncs.com
    PING ep-bp1xxx              xxx.cn-hangzhou.privatelink.aliyuncs.com (xxx) 56(84) bytes of data.
    64 bytes from xxx (xxx): icmp_seq=1 ttl=102 time=0.989 ms

Configurer la résolution DNS (facultatif)

Le nom de domaine par défaut du service d'endpoint est long. Pour le simplifier, configurez un nom de domaine interne faisant autorité personnalisé. Pour plus d'informations, consultez la rubrique Internal authoritative domain names.

  1. Connectez-vous à . Sur la page Authoritative Zone, cliquez sur l'onglet User-defined Zones, puis cliquez sur Add Zone.

  2. Saisissez une Authoritative Zone, sélectionnez le VPC où le nom de domaine sera appliqué, puis cliquez sur OK. Dans cet exemple, kyuubi-kerberos.abc est utilisé.

    Remarque

    Si l'option Domain Type est disponible, sélectionnez Acceleration Zone. Si l'option Domain Type n'est pas disponible, aucune sélection n'est nécessaire et un domaine Acceleration Zone est créé par défaut.

  3. Sur l'onglet User-defined Zones, recherchez le nom de domaine cible et cliquez sur Settings dans la colonne Actions. Ensuite, cliquez sur Add Record et sélectionnez Form Editor Mode dans la boîte de dialogue.

  4. Définissez Record Type sur CNAME. Pour Hostname, saisissez un préfixe. Dans cet exemple, test est utilisé. Pour Record Value, saisissez le nom de domaine du service d'endpoint ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com. En cliquant sur OK, le nom de domaine du service d'endpoint est mappé à test.kyuubi-kerberos.abc.

  5. Connectez-vous au cluster Kerberos et testez la connexion réseau.

    ping test.kyuubi-kerberos.abc

Créer un fichier keytab

  1. Connectez-vous au cluster Kerberos.

  2. Exécutez la commande suivante pour démarrer l'outil kadmin.local pour Kerberos :

    kadmin.local
  3. Créez un principal au format kyuubi/<fqdn>@<REALM>. Nous vous recommandons d'utiliser le nom de domaine de l'endpoint ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com pour la partie fqdn. Si vous avez configuré un enregistrement CNAME pour résoudre un nom de domaine personnalisé, utilisez le nom de domaine personnalisé, par exemple test.kyuubi-kerberos.abc.

    addprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
  4. Exportez le fichier keytab et quittez l'outil kadmin.local.

    xst -kt /root/kyuubi.keytab kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
    quit
  5. Téléchargez le fichier keytab généré dans un compartiment Object Storage Service (OSS).

    hadoop fs -put /root/kyuubi.keytab oss://<YOUR_BUCKET>.<region>.oss-dls.aliyuncs.com/

Configurer la passerelle Kyuubi

Pour utiliser Kerberos avec la passerelle Kyuubi, ajoutez les Kyuubi Configuration suivantes.

kyuubi.authentication              KERBEROS
kyuubi.kinit.principal             kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD43******7C204.COM
kyuubi.kinit.keytab                /opt/kyuubi/work-dir/kyuubi.keytab
kyuubi.files                       oss://bucket/path/to/kyuubi.keytab

Parameter

Description

kyuubi.authentication

Spécifie le mode d'authentification utilisé par la passerelle Kyuubi. Définissez ce paramètre sur KERBEROS.

kyuubi.kinit.principal

Spécifie le principal que la passerelle Kyuubi utilise pour l'authentification Kerberos. Le format est <user>/<host>@<realm>.

kyuubi.kinit.keytab

Spécifie le fichier keytab utilisé par la passerelle Kyuubi. Remarque : le chemin est fixe. Vous devez uniquement remplacer le nom du fichier keytab.

kyuubi.files

Le chemin OSS vers le fichier keytab que vous avez téléchargé dans la section « Créer un fichier keytab ».

Si vous devez vous connecter à un Hive Metastore (HMS) activé pour Kerberos, ajoutez les Spark Configuration suivantes.

spark.hadoop.hive.metastore.uris                    thrift://master-1-1.c-1d36*****e840c.cn-hangzhou.emr.aliyuncs.com:9083
spark.hadoop.hive.imetastoreclient.factory.class    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory
spark.hive.metastore.kerberos.principal             hive/_HOST@EMR.C-DFD4*****C204.COM
spark.hive.metastore.sasl.enabled                   true
spark.emr.serverless.network.service.name           <network_name>

Parameter

Description

spark.hadoop.hive.metastore.uris

L'adresse du Hive Metastore (HMS).

spark.hadoop.hive.imetastoreclient.factory.class

Spécifie la classe factory pour créer un client HMS.

spark.hive.metastore.kerberos.principal

Le principal pour le HMS dans un environnement Kerberos.

spark.hive.metastore.sasl.enabled

Spécifie s'il faut activer l'authentification Kerberos.

spark.emr.serverless.network.service.name

Le nom de la connexion réseau.

Remarque
  • Dans un cluster à haute disponibilité (HA), vous pouvez configurer plusieurs adresses Thrift pour metastore.uris. Les adresses doivent être séparées par des virgules et vous devez utiliser des noms d'hôte, et non des adresses IP.

  • Si vous spécifiez une seule adresse Thrift pour metastore.uris, vous pouvez utiliser une adresse IP. Toutefois, metastore.kerberos.principal doit être au format hive/<hostname of HMS>@<REALM>.

  • Vous pouvez simplifier metastore.kerberos.principal au format hive/_HOST@<REALM> uniquement lorsque metastore.uris utilise un nom d'hôte.

Enregistrez les configurations et démarrez la passerelle Kyuubi.

Soumettre une tâche

Exécutez la commande show databases pour vérifier que le cluster Kerberos peut se connecter à la passerelle Kyuubi et démarrer une tâche Spark.

  1. Préparez un utilisateur Kerberos disposant des autorisations requises et exportez son fichier keytab.

    1. Connectez-vous au cluster Kerberos.

    2. Exécutez les commandes suivantes pour exporter le fichier keytab.

      kadmin.local
      addprinc -randkey hadoop
      xst -kt /root/hadoop.keytab hadoop
      quit
  2. Authentifiez-vous avec Kerberos en utilisant le fichier keytab.

    kinit -kt hadoop.keytab hadoop
  3. Exécutez la commande suivante pour vous connecter à la passerelle Kyuubi et démarrer une tâche Spark.

    /opt/apps/KYUUBI/kyuubi-1.9.2-1.0.0/bin/kyuubi-beeline -u 'jdbc:hive2://ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com:10009/;principal=kyuubi/_HOST@EMR.C-DFD43*****7C204.COM'
  4. Une fois connecté, exécutez show databases.

    2025-08-21 14:55:18.392 INFO KyuubiSessionManager-exec-pool: Thread-83 org.apache.kyuubi.operation.ExecuteState STATE -> FINISHED_STATE, time taken: 0.301 seconds
    2025-08-21 14:55:18.393 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.MessageSender: [KyuubiSqlStateme success!
    2025-08-21 14:55:18.418 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.MessageSender: channel listener
    2025-08-21 14:55:18.420 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.WebSocketClientHandler: channel: !
    +------------+
    | namespace  |
    +------------+
    | default    |
    +------------+
    1 row selected (0.539 seconds)

Si votre tâche Spark doit se connecter à un service Hive Metastore (HMS) ou Hadoop Distributed File System (HDFS) activé pour Kerberos, modifiez le fichier de configuration core-site.xml sur le cluster HMS ou HDFS. Ajoutez les propriétés suivantes à ce fichier pour permettre à l'utilisateur kyuubi d'usurper l'identité d'autres utilisateurs lors de l'accès au service. Sinon, la connexion peut échouer.

hadoop.proxyuser.kyuubi.hosts = *
hadoop.proxyuser.kyuubi.groups = *

Les versions plus récentes des clusters EMR DataLake incluent ces propriétés par défaut. Après avoir ajouté ces propriétés, redémarrez le service HDFS ou HMS.