Avertissement : Toutes les opinions et points de vue exprimés dans le blog appartiennent uniquement à l’auteur et pas nécessairement à l’employeur de l’auteur ou à tout autre groupe ou individu. Cet article n’est pas une promotion pour une plateforme de gestion de cloud/données. Toutes les images et extraits de code sont disponibles publiquement sur le site web Azure/Databricks.
Dans mes autres articles DZone, j’ai discuté de ce qu’est le Catalog Unity de Databricks, comment le modèle de privilèges fonctionne dans le Catalog Unity, niveau de schéma, et script pour automatiser la gestion des permissions à la fois au niveau du catalog et du schéma.
Dans cet article, je vise à fournir le script qui automatisera la gestion des permissions au niveau des tables du Catalog Unity.
Privilèges au Niveau des Tables du Catalog Unity
Dans le Catalog Unity (Databricks), appliquer des permissions au niveau des tables est nécessaire lorsque vous souhaitez contrôler l’accès à des tables ou vues spécifiques, plutôt que d’appliquer des permissions à tous les objets d’un schéma. Les permissions au niveau des tables sont utiles dans les scénarios suivants :
1. Contrôle d’Accès Granulaire
Lorsque vous devez accorder ou restreindre l’accès à des tables ou vues spécifiques sans affecter l’ensemble du schéma.
C’est particulièrement important lorsqu’un schéma contient des données sensibles et que vous souhaitez autoriser l’accès à certaines tables tout en limitant l’accès à d’autres.
2. Protection des données sensibles
Si certaines tables d’un schéma contiennent des données confidentielles ou restreintes (par exemple, des informations personnelles identifiables, des données financières), vous pouvez appliquer des autorisations au niveau des tables pour garantir que seuls les utilisateurs autorisés peuvent consulter ou interroger ces tables.
Par exemple, vous pourriez autoriser l’accès à certaines tables de données récapitulatives ou agrégées tout en restreignant l’accès aux tables brutes et détaillées contenant des informations sensibles.
3. Délégation de l’accès à des équipes/utilisateurs spécifiques si le schéma contient des tables destinées à plusieurs équipes
Lorsque différents utilisateurs ou équipes ont besoin d’accéder à différentes tables au sein du même schéma. Par exemple, l’équipe des ventes pourrait avoir besoin d’accéder à des tables liées aux clients, tandis que l’équipe des finances a besoin d’accéder aux tables de revenus.
L’application des autorisations au niveau des tables garantit que chaque équipe ne peut accéder qu’aux tables pertinentes pour son travail.
4. Conformité avec la gouvernance des données
Lors de l’application de politiques strictes de gouvernance des données, vous pourriez avoir besoin de contrôler l’accès à un niveau plus granulaire (jusqu’aux tables individuelles). Les autorisations au niveau des tables aident à garantir la conformité en accordant l’accès uniquement aux données avec lesquelles un utilisateur ou un rôle est autorisé à travailler.
5. Gestion des besoins d’accès mixtes au sein d’un schéma
Dans les cas où un schéma contient des tables avec des niveaux de sensibilité ou de confidentialité variés, appliquer des autorisations au niveau du schéma peut être trop large. Les autorisations au niveau des tables vous permettent de gérer l’accès pour chaque table individuellement en fonction des besoins spécifiques.
Autorisations pouvant être appliquées au niveau de la table
- SÉLECTIONNER : Accorde un accès en lecture à la table, permettant aux utilisateurs de l’interroger.
- MODIFIER : Donne la capacité d’ajouter, de supprimer et de modifier des données vers ou à partir d’un objet.
- APPLIQUER UN TAG : Donne la capacité d’appliquer des tags à un objet.
- TOUTES LES PREROGATIVES : Accorde toutes les prérogatives.
Script d’automatisation
Conditions préalables
- Le catalogue Unity est déjà configuré.
- Le(s) principal(aux) est/sont associé(e)(s) à l’espace de travail Databricks.
- L’utilisateur exécutant le script d’autorisation dispose des autorisations appropriées sur la(les) table(s), le schéma et le catalogue.
Étape 1 : Créer un carnet de notes et déclarer les variables
Créez un carnet de notes dans l’espace de travail Databricks. Pour créer un carnet de notes dans votre espace de travail, cliquez sur le « + » Nouveau dans la barre latérale, puis choisissez Carnet de notes.
Un carnet de notes vierge s’ouvre dans l’espace de travail. Assurez-vous que Python est sélectionné comme langage du carnet de notes.
Copiez et collez le snippet de code ci-dessous dans la cellule du notebook et exécutez la cellule.
catalog = 'main' # Specify your catalog name
schema = 'default' # Specify your schema name
tables_arr= 'test1,test2' # Specify the Comma(,) seperated values of table name
tables = tables_arr.split(',')
principals_arr = '' # Specify the Comma(,) seperated values for principals in the blank text section (e.g. groups, username)
principals = principals_arr.split(',')
privileges_arr = 'SELECT,APPLY TAG' # Specify the Comma(,) seperated values for priviledges in the blank text section (e.g. SELECT,APPLY TAG)
privileges = privileges_arr.split(',')
Étape 2 : Définir le Catalogue et le Schéma
Copie, collez et exécutez le bloc de code ci-dessous dans une nouvelle cellule ou dans une cellule existante, puis exécutez la cellule.
query = f"USE CATALOG `{catalog}`" #Sets the Catalog
spark.sql(query)
query = f"USE SCHEMA `{schema}`" #Sets the Schema
spark.sql(query)
Étape 3 : Boucle à travers les Principaux et les Privilèges et Appliquer le Grant au Catalogue, Schéma et Tables
Copie, collez et exécutez le bloc de code ci-dessous dans une nouvelle cellule ou une cellule existante, puis exécutez la cellule pour appliquer les permissions.
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Use catalog permission at Catalog level
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
for table in tables:
for privilege in privileges:
query = f"GRANT `{privilege}` ON `{table}` TO `{principal}`" # Grant priviledges on the tables to the pricipal
print(query)
spark.sql(query)
Validation
Vous pouvez valider les privilèges en ouvrant l’interface utilisateur de Databricks et en naviguant vers « Catalogue » dans l’Explorateur de Données. Une fois le catalogue affiché dans la section Données, cliquez sur le catalogue, puis développez le schéma et sélectionnez la table à l’intérieur du schéma où vous avez appliqué les permissions, et allez à l’onglet « permissions ». Vous pouvez maintenant voir tous les privilèges appliqués à la table. Ci-dessous se trouve la capture d’écran des permissions appliquées dans la table de catalogue prête à l’emploi à l’intérieur du catalogue principal et du schéma information_schema
.
Vous pouvez également exécuter le script SQL ci-dessous dans un notebook pour afficher toutes les permissions pour une table dans le cadre de votre validation.
SHOW GRANTS ON TABLE table_name;
Conclusion
L’automatisation de la gestion des privilèges dans Databricks Unity Catalog au niveau des tables aide à garantir une approche cohérente et efficace de l’application des autorisations au niveau le plus bas dans le Unity Catalog. Le code fourni démontre une manière pratique d’attribuer plusieurs privilèges au niveau des tables pour plusieurs principaux et tables dans un seul catalogue et schéma. Dans un catalogue où des centaines de tables sont présentes et où différentes autorisations doivent être fournies pour différents principaux, l’automatisation ci-dessus réduit considérablement les erreurs manuelles et les efforts.
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-table-level