Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans le catalogue Unity, vous pouvez utiliser des vues dynamiques pour configurer le contrôle d’accès affiné, notamment :
- Sécurité au niveau des colonnes ou des lignes
- Masquage des données
Unity Catalog présente les fonctions suivantes, qui vous permettent de limiter dynamiquement les utilisateurs pouvant accéder à une ligne, une colonne ou un enregistrement dans une vue :
-
current_user(): retourne l’adresse e-mail de l’utilisateur actuel. -
is_account_group_member(): renvoieTRUEsi l’utilisateur actuel est membre d’un groupe de niveau compte spécifique. Recommandé pour une utilisation dans les vues dynamiques sur les données du catalogue Unity. -
is_member(): renvoieTRUEsi l’utilisateur actuel est membre d’un groupe spécifique au niveau de l’espace de travail. Cette fonction est fournie à des fins de compatibilité avec le metastore Hive existant. Évitez de l’utiliser avec des vues sur les données du catalogue Unity, car elle n’évalue pas l’appartenance au groupe au niveau du compte.
Azure Databricks vous recommande de ne pas accorder aux utilisateurs la possibilité de lire les tables et vues référencées dans la vue.
Les exemples suivants montrent comment créer des vues dynamiques dans le catalogue Unity.
Avant de commencer
Pour créer ou lire des vues dynamiques, les exigences sont identiques à celles des vues standard, à l’exception des exigences de calcul. Vous devez utiliser l’une des ressources de calcul suivantes :
- Un entrepôt SQL.
- Calcul avec le mode d’accès standard (anciennement mode d’accès partagé).
- Calcul avec mode d’accès dédié (anciennement mode d’accès utilisateur unique) sur Databricks Runtime 15.4 LTS ou version ultérieure.
Vous ne pouvez pas lire les vues dynamiques à l’aide du calcul dédié sur Databricks Runtime 15.3 ou inférieur.
Pour tirer parti du filtrage des données fourni dans Databricks Runtime 15.4 LTS et versions ultérieures, vous devez également vérifier que votre espace de travail est activé pour le calcul serverless, car la fonctionnalité de filtrage des données qui prend en charge les vues dynamiques s’exécute sur le calcul serverless. Vous pouvez donc être facturé pour les ressources de calcul sans serveur si vous utilisez des ressources de calcul dédiées pour lire des vues dynamiques. Consultez le contrôle d’accès affiné sur le calcul dédié.
Autorisations au niveau des colonnes
Avec une vue dynamique, vous pouvez limiter les colonnes qu’un utilisateur ou un groupe spécifique peut accéder. Dans l’exemple suivant, seuls les membres du auditors groupe peuvent accéder aux adresses e-mail à partir de la sales_raw table. Pendant l’analyse des requêtes, Apache Spark remplace l’instruction CASE par la chaîne REDACTED littérale ou le contenu réel de la colonne d’adresse e-mail. D’autres colonnes sont retournées normalement. Cette stratégie n’a pas d’impact négatif sur les performances des requêtes.
-- Alias the field 'email' to itself (as 'email') to prevent the
-- permission logic from showing up directly in the column name results.
CREATE VIEW sales_redacted AS
SELECT
user_id,
CASE WHEN
is_account_group_member('auditors') THEN email
ELSE 'REDACTED'
END AS email,
country,
product,
total
FROM sales_raw
Autorisations au niveau des lignes
Avec une vue dynamique, vous pouvez spécifier des autorisations jusqu’au niveau de la ligne ou du champ. Dans l’exemple suivant, seuls les membres du groupe managers peuvent afficher les montants des transactions lorsqu’ils dépassent 1 million de dollars. Les résultats correspondants sont filtrés et non visibles par les autres utilisateurs.
CREATE VIEW sales_redacted AS
SELECT
user_id,
country,
product,
total
FROM sales_raw
WHERE
CASE
WHEN is_account_group_member('managers') THEN TRUE
ELSE total <= 1000000
END;
Masquage de données
Étant donné que les vues du catalogue Unity utilisent Spark SQL, vous pouvez implémenter un masquage de données avancé à l’aide d’expressions SQL plus complexes et d’expressions régulières. Dans l’exemple suivant, tous les utilisateurs peuvent analyser les domaines de messagerie, mais seuls les membres du auditors groupe peuvent afficher l’intégralité de l’adresse e-mail d’un utilisateur.
-- The regexp_extract function takes an email address such as
-- user.x.lastname@example.com and extracts 'example', allowing
-- analysts to query the domain name.
CREATE VIEW sales_redacted AS
SELECT
user_id,
region,
CASE
WHEN is_account_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END
FROM sales_raw