DataSunrise Obtient le Statut Compétence DevOps AWS dans AWS DevSecOps et Surveillance, Journalisation, Performance

Configuration RBAC d’Apache Hive avec SQL

Configuration RBAC d’Apache Hive avec SQL

Introduction

Ce guide aborde les problèmes courants de configuration du contrôle d’accès basé sur les rôles (RBAC) d’Apache Hive avec SQL, en se concentrant spécifiquement sur les défis rencontrés lors de la configuration des rôles administratifs et des permissions à l’aide de requêtes SQL. Nous parcourrons un exemple réel de dépannage et de résolution de ces problèmes dans un environnement Hive basé sur Docker.

Comprendre le problème

Configuration RBAC d'Apache Hive avec SQL - Erreur rencontrée lors de la commande SET ROLE dans Apache Hive en raison d'autorisations insuffisantes pour root
Erreur rencontrée lors de la tentative d’utilisation de SET ROLE dans Apache Hive en raison d’autorisations insuffisantes pour root

Messages d’erreur communs

Lors de la tentative de configuration du RBAC dans Hive avec des requêtes telles que :

SHOW ROLES;
SET ROLE admin;
CREATE ROLE test_role;
GRANT ROLE test_role TO USER tester;

Par exemple, pour la requête de création de rôle, vous pourriez rencontrer différents messages d’erreur en fonction de votre méthode de connexion :

Connexion JDBC (ex. : DBeaver)

SQL Error [1] [08S01]: org.apache.hive.service.cli.HiveSQLException: Error while processing statement: 
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
Current user : root n'est pas autorisé à ajouter des rôles. L'utilisateur doit appartenir au rôle ADMIN et l'avoir comme rôle actuel, for this action.
Configuration RBAC d'Apache Hive avec SQL - Erreur rencontrée lors de la création d'un rôle dans Apache Hive en raison d'autorisations insuffisantes pour root
Erreur rencontrée lors de la tentative de création d’un rôle dans Apache Hive en raison d’autorisations insuffisantes pour root

Interface en ligne de commande Hive (ex. : beeline ou hive -e)

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
Failed to retrieve roles for null: Required field 'principal_name' is unset! 
Struct:GetRoleGrantsForPrincipalRequest(principal_name:null, principal_type:USER)
Configuration RBAC d'Apache Hive avec SQL - Erreur rencontrée lors de l'utilisation de SET ROLE dans l'interface en ligne de commande Hive
Erreur rencontrée lors de la tentative d’utilisation de SET ROLE dans l’interface en ligne de commande Hive

Causes profondes

Les problèmes proviennent généralement de :

  1. Une configuration d’authentification incomplète
  2. Des paramètres incorrects pour le fournisseur d’autorisation
  3. Des mappages utilisateur-vers-rôle manquants
  4. Des permissions inappropriées pour le compte de service

Configuration de l’environnement pour la configuration RBAC d’Apache Hive avec SQL

Prérequis

Avant de continuer, assurez-vous de disposer de :

  • Droits administratifs sur votre environnement Hive
  • La possibilité de modifier les fichiers de configuration Hive
  • L’accès pour redémarrer les services Hive
  • Une compréhension de base des fichiers de configuration XML

Localisation des fichiers de configuration

Tout d’abord, localisez votre fichier de configuration hive-site.xml dans le répertoire. Vous pouvez exécuter ces commandes pour vérifier les emplacements courants :

ls /etc/hive/conf/hive-site.xml
ls /etc/hadoop/conf/hive-site.xml
ls /usr/lib/hive/conf/hive-site.xml
ls /opt/hive/conf/hive-site.xml
ls $HIVE_HOME/conf/hive-site.xml

Ou exécutez cette commande pour trouver l’emplacement correct :

find / -name "hive-site.xml" 2>/dev/null

Exigences concernant les permissions de fichier

Assurez-vous que les permissions de fichier sont correctes :

ls -l /opt/hive/conf/hive-site.xml
# Devrait afficher quelque chose comme :
# -rw-r--r-- 1 root root 3342 Jan 31 16:04 /opt/hive/conf/hive-site.xml

Solution étape par étape pour la configuration RBAC d’Apache Hive avec SQL

1. Sauvegarder la configuration existante

Créez toujours une sauvegarde avant d’apporter des modifications :

cp /opt/hive/conf/hive-site.xml /opt/hive/conf/hive-site.xml.backup

2. Mettre à jour hive-site.xml

Créez un nouveau fichier de configuration avec tous les paramètres nécessaires :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- Connexion au Metastore -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hive-metastore:9083</value>
    </property>

    <!-- Configuration de la base de données -->
    <property>
        <name>datanucleus.autoCreateSchema</name>
        <value>false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:postgresql://hive-metastore-postgresql/metastore</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.postgresql.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
    </property>

    <!-- Configuration de l'authentification et de l'autorisation -->
    <property>
        <name>hive.security.authorization.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.server2.enable.doAs</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.users.in.admin.role</name>
        <value>root</value>
    </property>
    <property>
        <name>hive.server2.authentication</name>
        <value>NONE</value>
    </property>
    <property>
        <name>hive.security.authorization.manager</name>
        <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
    </property>
    <property>
        <name>hive.metastore.pre.event.listeners</name>
        <value>org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener</value>
    </property>
    <property>
        <name>hive.security.metastore.authorization.manager</name>
        <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
    </property>
    <property>
        <name>hive.security.authenticator.manager</name>
        <value>org.apache.hadoop.hive.ql.security.HadoopDefaultAuthenticator</value>
    </property>
    <property>
        <name>hive.metastore.execute.setugi</name>
        <value>true</value>
    </property>
</configuration>

3. Redémarrer HiveServer2

# Trouver l'emplacement de hiveserver2
which hiveserver2
# Arrêter le service
hiveserver2 stop
# Attendre l'arrêt complet
sleep 5
# Démarrer le service
hiveserver2 start
# Attendre le démarrage
sleep 10

Test et Vérification de la configuration RBAC d’Apache Hive avec SQL

1. Vérifier l’état du service

ps aux | grep hiveserver2
netstat -tulpn | grep 10000

2. Tester la configuration RBAC

En utilisant DBeaver ou un autre client/connexion JDBC :

SHOW ROLES;
SET ROLE admin;
CREATE ROLE user_role;

GRANT ROLE test_role TO USER tester;
Configuration RBAC d'Apache Hive avec SQL - Attribution d'un rôle à un utilisateur dans Apache Hive avec la commande GRANT ROLE
Attribution d’un rôle à un utilisateur dans Apache Hive avec la commande GRANT ROLE

En utilisant hive -e/beeline :

Configuration RBAC d'Apache Hive avec SQL - Affichage des rôles mis à jour après l'attribution d'un rôle à un utilisateur
Affichage des rôles mis à jour après l’attribution d’un rôle à un utilisateur

Dépannage de la configuration RBAC d’Apache Hive avec SQL

Problèmes courants et solutions

1. Erreur de nom principal null Si vous voyez :

Required field 'principal_name' is unset!

Solution : Vérifiez que le paramètre hive.security.authenticator.manager est correct et que HiveServer2 a été redémarré.

2. Utilisateur non dans le rôle Admin Si vous voyez :

root doesn't belong to role admin

Solution : Vérifiez la propriété hive.users.in.admin.role et assurez-vous qu’elle contient votre nom d’utilisateur.

3. La configuration n’est pas prise en compte

Solution :

  • Vérifiez les permissions de fichier
  • Confirmez le redémarrage de HiveServer2
  • Consultez les journaux pour détecter d’éventuelles erreurs au démarrage

Configuration avancée pour Apache Hive RBAC

Fournisseurs d’authentification personnalisés

Pour les environnements nécessitant une authentification personnalisée :

<property>
    <name>hive.security.authenticator.manager</name>
    <value>com.your.custom.AuthenticatorManager</value>
</property>

Utilisateurs Admin multiples

Pour configurer plusieurs utilisateurs admin :

<property>
    <name>hive.users.in.admin.role</name>
    <value>root,admin1,admin2</value>
</property>

Considérations supplémentaires

  1. Bonnes pratiques de sécurité

    • Rotation régulière des mots de passe
    • Mise en place d’une journalisation d’audit appropriée
    • Utilisation de SSL/TLS pour les connexions
  2. Impact sur les performances

    • Surveiller les performances des requêtes après l’activation du RBAC
    • Ajuster les paramètres de mémoire si nécessaire
  3. Maintenance

    • Sauvegarde régulière des fichiers de configuration
    • Documentation de tous les réglages personnalisés
    • Tenir à jour la documentation des mappages utilisateur-vers-rôle

Intégration DataSunrise pour Apache Hive :
Solution avancée pour un RBAC, une sécurité et une conformité simplifiés

Tandis que la configuration RBAC native de Hive offre des capacités de contrôle d’accès de base, les environnements d’entreprise requièrent souvent des fonctionnalités de sécurité, de conformité et d’audit plus robustes. DataSunrise propose une intégration complète avec Apache Hive qui étend ces capacités :

Configuration RBAC d'Apache Hive avec SQL - Rôle défini avec succès pour un utilisateur dans Apache Hive
Rôle défini avec succès pour un utilisateur dans Apache Hive

Fonctionnalités clés

Gestion RBAC améliorée

Protection dynamique des données

Conformité et audit

Fonctionnalités de sécurité

Capacités avancées

DataSunrise offre une solution complète et riche en fonctionnalités pour les organisations nécessitant une sécurité et une conformité de niveau entreprise, qui s’appuie sur et améliore les capacités RBAC natives de Hive. Découvrez les fonctionnalités Apache Hive supportées, ou expérimentez-le par vous-même en planifiant une démonstration pour voir DataSunrise en action.

Références

  1. Documentation sur la sécurité d’Apache Hive
  2. Autorisation basée sur le stockage dans le serveur Metastore
  3. Configuration de l’autorisation dans Hive
  4. Autorisation Hive basée sur la norme SQL

Ce guide est basé sur une expérience réelle avec Apache Hive 2.3.2 dans un environnement Docker. Votre environnement spécifique pourrait nécessiter des ajustements différents à ces configurations.

Suivant

Masquage de données pour Apache Impala

Masquage de données pour Apache Impala

En savoir plus

Besoin de l'aide de notre équipe de support ?

Nos experts seront ravis de répondre à vos questions.

Informations générales :
[email protected]
Service clientèle et support technique :
support.datasunrise.com
Demandes de partenariat et d'alliance :
[email protected]