Clause de non-responsabilité : Toutes les opinions exprimées dans le blog appartiennent uniquement à l’auteur et ne reflètent pas nécessairement celles de l’employeur de l’auteur ou de tout autre groupe ou individu. Cet article n’est pas une promotion pour une plateforme de gestion de données/cloud. Toutes les images et extraits de code sont publiquement disponibles sur le site Azure/Databricks.
Dans cet article, je fournirai le script pour automatiser la gestion des autorisations au niveau du schéma du catalogue Unity.
Privilèges au niveau du schéma du catalogue Unity
Le modèle de privilèges hiérarchique dans le catalogue Unity permet aux utilisateurs d’appliquer des privilèges à n’importe quel niveau de la hiérarchie, et les objets enfants héritent automatiquement des mêmes autorisations. Ainsi, si une autorisation est appliquée au niveau du schéma, elle sera automatiquement appliquée à toutes les tables, vues, volumes et fonctions à l’intérieur du schéma.
Dans le catalogue Unity (Databricks), les autorisations au niveau du schéma sont appliquées lorsque vous souhaitez contrôler l’accès à un ensemble de tables et de vues dans un schéma spécifique. Les autorisations au niveau du schéma sont généralement appliquées dans les scénarios suivants:
- Accorder l’accès à des groupes d’objets : Si vous souhaitez gérer les autorisations pour plusieurs tables et vues de manière collective, il est plus efficace d’appliquer les autorisations au niveau du schéma plutôt que individuellement pour chaque table ou vue. Cela vous permet de contrôler l’accès à tous les objets à l’intérieur de ce schéma simultanément.
- Contrôle organisationnel: Lorsque différentes équipes ou départements au sein d’une organisation ont besoin d’accéder à des jeux de données spécifiques, qui sont stockés sous des schémas séparés. L’application des autorisations au niveau du schéma vous permet de permettre ou de restreindre l’accès à tous les objets pertinents pour une équipe dans ce schéma.
- Gestion cohérente des autorisations: Pour des environnements où de nouveaux objets (tables/vues) sont fréquemment ajoutés à un schéma, définir des autorisations au niveau du schéma garantit que les nouveaux objets héritent automatiquement des autorisations, réduisant ainsi le besoin de mises à jour manuelles des autorisations.
- Maintien de la sécurité des données: Lorsque vous souhaitez imposer des contrôles d’accès sur une catégorie de jeux de données particulière (par exemple, des données financières, des données RH) qui sont logiquement organisés sous un schéma. En définissant des autorisations au niveau du schéma, vous maintenez la sécurité des données tout en simplifiant l’administration.
Script d’automatisation
Prérequis
- Le catalogue Unity est déjà configuré.
- Le(s) principal(aux) est/sont associé(s) à l’espace de travail Databricks.
- L’utilisateur exécutant le script d’autorisation dispose des autorisations appropriées sur le schéma et le catalogue.
Étape 1: Créer un notebook et Déclarer les variables
Créer un notebook dans l’espace de travail Databricks. Pour créer un notebook dans votre espace de travail, cliquez sur le « + » Nouveau dans la barre latérale, puis choisissez Notebook.
Copiez et collez l’extrait 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
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
Copiez, collez et exécutez le bloc de code ci-dessous dans une cellule nouvelle ou existante, puis exécutez la cellule.
query = f"USE CATALOG `{catalog}`" #Sets the Catalog
spark.sql(query)
Étape 3 : Parcourir les Principaux et les Privilèges et Appliquer l’Autorisation au Catalogue et au Schéma
Copiez, collez et exécutez le bloc de code ci-dessous dans une cellule nouvelle ou existante, puis exécutez la cellule pour appliquer les autorisations.
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Apply use catalog permission at Catalog level
spark.sql(query)
query = f"USE SCHEMA `{schema}`" # Sets the schema
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Apply use schema permission at Schema level
spark.sql(query)
for privilege in privileges:
query = f"GRANT `{privilege}` ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
Validation
Vous pouvez valider les privilèges en ouvrant l’interface utilisateur de Databricks et en naviguant jusqu’au Catalogue dans l’Explorateur de Données. Une fois que le catalogue apparaît dans la section Données, cliquez sur le catalogue, puis sélectionnez le schéma où vous avez appliqué les autorisations et accédez à l’onglet Permissions. Vous pouvez maintenant voir tous les privilèges appliqués au schéma.
Vous pouvez également exécuter le script SQL ci-dessous dans un notebook pour afficher toutes les autorisations pour un schéma dans le cadre de votre validation.
SHOW GRANTS ON SCHEMA my_schema;
Conclusion
L’automatisation de la gestion des privilèges dans le Catalogue Unity de Databricks au niveau du schéma aide à garantir un contrôle d’accès cohérent et efficace pour le groupe d’objets (par exemple, tables, vues, fonctions et volumes) dans le catalogue. Le code fourni démontre une manière pratique d’attribuer des privilèges au niveau du schéma, facilitant la gestion des autorisations pour les principaux (par exemple, utilisateurs et groupes). Cette approche réduit les tâches de gestion et les risques d’erreurs manuelles en regroupant les tables et les vues à l’intérieur d’un schéma et en appliquant des autorisations cohérentes pour l’ensemble du schéma.
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-schema-level