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.
Connectez-vous à la console Endpoint.
-
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.
RemarquePour 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.
RemarqueVous 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.
RemarqueVous 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.
-
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.-
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.
Connectez-vous à . Sur la page Authoritative Zone, cliquez sur l'onglet User-defined Zones, puis cliquez sur Add Zone.
-
Saisissez une Authoritative Zone, sélectionnez le VPC où le nom de domaine sera appliqué, puis cliquez sur OK. Dans cet exemple,
kyuubi-kerberos.abcest utilisé.RemarqueSi 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.
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.
Définissez Record Type sur CNAME. Pour Hostname, saisissez un préfixe. Dans cet exemple,
testest utilisé. Pour Record Value, saisissez le nom de domaine du service d'endpointep-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.-
Connectez-vous au cluster Kerberos et testez la connexion réseau.
ping test.kyuubi-kerberos.abc
Créer un fichier keytab
-
Exécutez la commande suivante pour démarrer l'outil kadmin.local pour Kerberos :
kadmin.local -
Créez un principal au format
kyuubi/<fqdn>@<REALM>. Nous vous recommandons d'utiliser le nom de domaine de l'endpointep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.compour la partiefqdn. Si vous avez configuré un enregistrement CNAME pour résoudre un nom de domaine personnalisé, utilisez le nom de domaine personnalisé, par exempletest.kyuubi-kerberos.abc.addprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM -
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 -
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 |
|
kyuubi.kinit.principal |
Spécifie le principal que la passerelle Kyuubi utilise pour l'authentification Kerberos. Le format est |
|
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. |
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.principaldoit être au formathive/<hostname of HMS>@<REALM>.Vous pouvez simplifier
metastore.kerberos.principalau formathive/_HOST@<REALM>uniquement lorsquemetastore.urisutilise 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.
-
Préparez un utilisateur Kerberos disposant des autorisations requises et exportez son fichier keytab.
-
Exécutez les commandes suivantes pour exporter le fichier keytab.
kadmin.local addprinc -randkey hadoop xst -kt /root/hadoop.keytab hadoop quit
-
Authentifiez-vous avec Kerberos en utilisant le fichier keytab.
kinit -kt hadoop.keytab hadoop -
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' -
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.