Cette rubrique explique comment activer le contrôle d'accès Ranger pour Hive et fournit des exemples de configuration des autorisations Hive via Ranger.
Prérequis
Vous avez créé un cluster DataLake et sélectionné le service Ranger. Pour plus d'informations, consultez la section Créer un cluster.
Notes d'utilisation
Lorsque le contrôle d'accès Ranger est activé pour Hive, le service HiveServer2 charge le plug-in Ranger Hive. Ranger vérifie les autorisations uniquement lors de la soumission de tâches SQL via HiveServer2. Les autres modes d'accès à Hive ne déclenchent pas cette vérification.
-
Modes d'accès pris en charge pour la vérification des autorisations :
Accès à HiveServer2 via un client Beeline.
Connexion à HiveServer2 via une URL JDBC.
-
Modes d'accès non pris en charge pour la vérification des autorisations :
Connexion directe au Metastore via un client Hive.
Connexion directe au Metastore via l'API Hive-Client.
Le contrôle d'accès Ranger s'applique uniquement aux métadonnées Hive et à la couche d'opérations SQL. Ranger ne gère pas le contrôle d'accès pour la couche de stockage OSS ou OSS-HDFS. Ne configurez pas de politiques d'autorisation au niveau du stockage dans Ranger, car elles n'auront aucun effet.
Procédure
-
Accédez à la page Cluster Service.
Connectez-vous à la console EMR on ECS.
Dans la barre de navigation supérieure, sélectionnez une région et un groupe de ressources selon vos besoins.
Dans la colonne Actions du cluster cible, cliquez sur Services.
-
Activez Hive dans Ranger.
Sur la page Services, localisez le service Ranger-plugin et cliquez sur son Status.
Dans la section Service Overview, activez l'interrupteur enableHive ranger.
Dans la boîte de dialogue qui s'affiche, cliquez sur OK.
-
Redémarrez HiveServer.
Sur la page Services, sélectionnez .
Dans la section Components, cliquez sur Restart dans la colonne Actions de HiveServer.
Dans la boîte de dialogue qui s'affiche, saisissez une Execution Reason et cliquez sur OK.
Dans la boîte de dialogue Confirm, cliquez sur OK.
Configuration des autorisations
Vue d'ensemble
Les autorisations Ranger se configurent dans l'interface utilisateur Ranger. Pour savoir comment accéder à l'interface utilisateur Ranger, consultez la section Vue d'ensemble de Ranger.
Pour configurer les autorisations Hive dans Ranger, cliquez sur emr-hive sous HADOOP SQL. Une fois la page Service Manager de Ranger ouverte, vous trouverez l'instance de service emr-hive créée sous la catégorie HADOOP SQL. Vous pouvez afficher, modifier ou supprimer cette instance de service.
Si le service emr-hive n'apparaît pas dans l'interface utilisateur Ranger, procédez comme suit :
Connectez-vous à la console EMR on ECS.
Sur la page des services du cluster, localisez le service Ranger-plugin et cliquez sur Status pour ouvrir la page de configuration.
Recherchez le paramètre enableImpala et définissez sa valeur sur true.
Enregistrez la configuration.
Actualisez la page de l'interface utilisateur Ranger. Le service emr-hive devrait désormais apparaître sous HADOOP SQL.
Une fois le service emr-hive ouvert, la liste de toutes les politiques d'autorisation configurées s'affiche. Par défaut, Ranger inclut plusieurs politiques. Par exemple, une politique par défaut accorde à l'utilisateur hive (l'utilisateur de démarrage du service HiveServer) un accès complet à toutes les ressources de base de données, table, colonne, UDF et URL. Une autre politique par défaut accorde à tous les utilisateurs l'autorisation de création pour les bases de données et pour les ressources au sein de la base de données default.
Ajouter une politique d'autorisation
Cliquez sur Add New Policy dans le coin supérieur droit pour ajouter une politique d'autorisation. Une politique nécessite un nom unique (Policy Name). Une politique de base se compose de trois éléments principaux : les ressources, les utilisateurs et les autorisations. Les ressources sont les actifs régis par la politique, tels qu'une base de données, une table, une colonne ou une URL. Les utilisateurs sont les comptes auxquels la politique s'applique. Les autorisations correspondent aux types d'accès accordés.
-
Ressources de la politique
Dans Ranger pour Hive, les ressources de la politique incluent database, table, column, url et udf. Vous pouvez sélectionner un type de ressource pour configurer ses autorisations. Par défaut, le formulaire de politique affiche les champs database, table et column. Vous pouvez cliquer sur le nom d'une ressource pour passer à un autre type.
Lors de la configuration d'une politique, vous devez saisir le nom de la ressource. Par exemple, vous pouvez saisir testdb pour database, test pour table, id pour column ou oss://test-bucket/test/tmp pour url. Vous pouvez également saisir un astérisque (*) pour correspondre à toutes les ressources de ce type. Chaque ligne de configuration de ressource contient un menu déroulant de type de ressource (tel que column), un champ de saisie de valeur (obligatoire) et un commutateur Include pour spécifier s'il faut inclure ou exclure la ressource.
-
Utilisateurs de la politique
Une politique doit s'appliquer à des utilisateurs spécifiques. Sélectionnez les utilisateurs dans la liste Select User. Dans la boîte de dialogue Select User, sélectionnez l'utilisateur à autoriser (par exemple,
test). -
Autorisations de la politique
Cliquez sur Add Permissions pour afficher la section add/edit permissions. Dans le panneau add/edit permissions, sélectionnez les autorisations requises (par exemple, Select et Create), puis cliquez sur Add pour confirmer.
Exemple 1 : Autorisations au niveau des colonnes
Un cas d'utilisation courant du contrôle d'accès Ranger consiste à accorder à un utilisateur spécifique l'autorisation select sur une table. Cela garantit que l'utilisateur peut exécuter des requêtes select columns from table. Configurez la politique Ranger avec les valeurs de champ suivantes :
Policy Name :
select-permission-exampledatabase :
testdb(Include)table :
test(Include)column :
id(Include)Audit Logging : Yes
Allow Conditions : Select User est
test, Permissions est select
Cette politique accorde à l'utilisateur test l'autorisation select sur la column=id dans la table=test au sein de la database=testdb. Cela permet à l'utilisateur d'exécuter la requête select id from testdb.test. Pour permettre à un utilisateur de sélectionner toutes les colonnes de testdb.test, définissez le champ column sur *.
Exemple 2 : Autorisations au niveau des tables
Dans Ranger pour Hive, l'autorisation create pour les tables peut être configurée au niveau de la table. Par exemple, si vous accordez l'autorisation create pour database=testdb, table=test et column=*, l'utilisateur ne peut créer que la table nommée test. L'utilisateur ne peut pas créer d'autres tables. Pour permettre à un utilisateur de créer n'importe quelle table dans une base de données, accordez l'autorisation create pour database=testdb, table= et column=.
Créez une politique d'accès dans Apache Ranger avec les configurations clés suivantes :
Policy Name :
create-permission-examplePolicy Type : Access
database :
testdb(Include activé)table :
*(Include activé)column :
*(Include activé)Audit Logging : Yes
Dans la section Allow Conditions, définissez Select User sur test et Permissions sur Create.
Exemple 3 : Autorisations URL
Lorsque vous exécutez une instruction SQL Hive qui inclut une clause LOCATION avec un schéma oss, Ranger vérifie les autorisations de lecture et d'écriture de l'utilisateur pour cette URL. Par exemple, l'exécution de create external table test(id int, name string) location 'oss://test-bucket/test' déclenche une vérification des autorisations pour l'accès en lecture sur oss://test-bucket/test.
Dans ce cas, vous devez configurer une politique pour l'autorisation URL. Pour basculer le type de ressource vers url, reportez-vous aux instructions de la section « Ajouter une politique d'autorisation ». Modifiez la politique pour le service emr-hive dans Ranger avec les configurations clés suivantes :
Policy Name :
url-permission-exampleType de ressource : url, valeur :
oss://test-bucket/test, avec Recursive activéAllow Conditions : L'utilisateur est
test, Permissions est Read
Si vous n'avez pas besoin de contrôler les autorisations URL, vous pouvez également modifier la politique pour all - url dans le Policy Name d'autorisation par défaut et ajouter public à Select Group. Cela accorde à tous les utilisateurs des autorisations de lecture et d'écriture pour toutes les URL.
Dans Ranger, public est un groupe spécial qui représente tous les utilisateurs. Lorsque le Select Group d'une politique est défini sur public, les autorisations de cette politique s'appliquent à tous les utilisateurs.
FAQ
Comment configurer les autorisations Ranger Hive pour un compte en lecture seule ?
Pour accorder à un compte en lecture seule uniquement l'autorisation select sur des ressources Hive spécifiques, créez une politique Ranger en suivant les étapes ci-dessous :
Dans l'interface utilisateur Ranger, cliquez sur emr-hive sous HADOOP SQL pour ouvrir la liste des politiques Hive.
Cliquez sur Add New Policy dans le coin supérieur droit.
-
Configurez les ressources de la politique :
database : Saisissez le nom de la base de données cible, ou saisissez * pour correspondre à toutes les bases de données.
table : Saisissez le nom de la table cible, ou saisissez * pour correspondre à toutes les tables.
column : Saisissez * pour correspondre à toutes les colonnes, ou spécifiez les noms de colonnes individuels.
Dans le champ Select User, sélectionnez le compte en lecture seule.
Cliquez sur Add Permissions, et sélectionnez uniquement l'autorisation select.
Cliquez sur Add pour enregistrer la politique.
Si vous ne savez pas quel compte spécifier, vous pouvez sélectionner tous les utilisateurs dans la liste déroulante Select User, ou consulter les journaux d'audit Ranger pour identifier les comptes qui se sont précédemment connectés à Hive.
EMR 4.9.0 prend-il en charge l'utilisation de Ranger pour contrôler les autorisations Impala ?
Non. EMR 4.9.0 ne prend pas en charge l'utilisation de Ranger pour contrôler les autorisations Impala. Pour utiliser Ranger pour le contrôle d'accès Impala, mettez à niveau votre cluster vers une version EMR ultérieure prenant en charge cette fonctionnalité, ou utilisez une solution alternative de gestion des autorisations.
> Hive