Concepts du modèle d'autorisations Unity Catalog
Cette page explique les concepts de base du modèle d'autorisations d'Unity Catalog, y compris le modèle d'objet, les privilèges, la propriété et l'héritage.
Pour une référence générale de tous les privilèges Unity Catalog, consultez la référence des privilèges Unity Catalog. Pour les instructions sur l'octroi et la révocation de privilèges, consultez Afficher, octroyer et révoquer les privilèges.
Objets sécurisables
Dans Unity Catalog, les données et les métadonnées résident dans un conteneur de niveau supérieur appelé métastore. Dans ce metastore, les données sont représentées sous forme d’objets dans un espace de noms à trois niveaux : catalog.schema.table. Cette structure hiérarchique constitue également la base du contrôle d'accès dans Unity Catalog.

Chaque objet de cette hiérarchie est un objet sécurisable . Le contrôle d’accès dans Unity Catalog fonctionne en accordant des privilèges, tels que SELECT, MODIFY ou USE SCHEMA, sur ces objets sécurisables. Ce modèle offre un contrôle précis sur les personnes qui peuvent accéder aux données et les gérer au sein de votre organisation.
Pour obtenir une liste complète des objets sécurisables et des privilèges qui s'appliquent à chacun d'eux, consultez la référence des privilèges Unity Catalog.
Objets conteneurs
Certains objets sécurisables dans Unity Catalog sont des **objets conteneurs**, ce qui signifie qu'ils contiennent des objets enfants au sein de la hiérarchie. Les objets conteneurs ont un rôle particulier dans le modèle d'autorisations, car les privilèges qui leur sont accordés peuvent affecter leurs enfants par héritage.
Voici les objets conteneurs dans Unity Catalog :
- Catalogues : le niveau supérieur de l'espace de noms à trois niveaux. Les catalogues contiennent des schémas comme enfants directs.
- Schémas : Le niveau intermédiaire de l'espace de noms à trois niveaux. Les schémas contiennent des tables, des vues, des volumes et des fonctions en tant qu'enfants directs.
Les objets conteneurs ont plusieurs caractéristiques importantes :
Caractéristique | Description |
|---|---|
Héritage des privilèges | Lorsque vous accordez un privilège sur un objet conteneur, ce privilège s'applique automatiquement à tous les objets enfants actuels et futurs. Par exemple, l'octroi de |
Privilèges d'utilisation | L'accès aux objets enfants requiert le privilège |
Capacité à gérer les objets enfants | Lorsque vous possédez un objet conteneur, vous obtenez automatiquement la capacité de gérer tous les objets enfants, même si vous ne possédez pas ces enfants directement. Consultez la Propriété. |
Privilèges de création | Les objets conteneurs prennent en charge les privilèges qui permettent aux utilisateurs de créer des objets enfants à l'intérieur de ceux-ci, tels que |
Les objets non conteneurs, tels que les tables, vues, volumes et fonctions, ne contiennent pas d'objets enfants.
Privilèges
Les privilèges déterminent les actions qu'un utilisateur ou un groupe peut effectuer sur un objet sécurisable. Les privilèges courants incluent :
SELECT: Lire les données des tables ou des vuesMODIFY: Écrire des données dans des tables ou des vuesUSE CATALOG: Accédez à un catalogue (nécessite des privilèges supplémentaires pour travailler avec des objets enfants)USE SCHEMA: Accédez à un schéma (nécessite des privilèges supplémentaires pour travailler avec des objets enfants)CREATE TABLE: Créer des tables dans un schéma
Un utilisateur ou un groupe doit se voir accorder explicitement un privilège pour effectuer une action.
Les sections suivantes décrivent des privilèges spéciaux importants dans Databricks. Pour une référence complète de tous les privilèges, consultez la référence des privilèges Unity Catalog.
Privilèges d'utilisation
USE CATALOG et USE SCHEMA sont des privilèges d'utilisation. Généralement, les privilèges d'utilisation sont une condition préalable pour interagir avec un objet et ses objets enfants dans la hiérarchie.
Pour travailler avec un objet dans un catalogue, vous avez besoin du privilège USE CATALOG sur le catalogue. Pour travailler avec n’importe quel objet dans un schéma, vous avez besoin du privilège USE SCHEMA sur le schéma.
Par exemple, pour effectuer la plupart des opérations sur les tables, vues, volumes ou fonctions, vous avez besoin de :
USE CATALOGsur le catalogue parentUSE SCHEMAsur le schéma parent- Le privilège spécifique pour l’opération (tel que
SELECT,MODIFY, ouEXECUTE)
Les trois sont obligatoires. N'avoir que le privilège SELECT sur une table n'est pas suffisant pour la lire si vous n'avez pas USE CATALOG ou USE SCHEMA sur ses objets parents.
Les privilèges d'utilisation offrent un mécanisme important de contrôle d'accès pour les administrateurs de niveau supérieur. Par exemple, même si le propriétaire d'une table souhaite partager sa table avec d'autres utilisateurs, ceux-ci ne peuvent pas accéder à la table sans les privilèges USE CATALOG et USE SCHEMA sur les objets parents. Étant donné que seuls les propriétaires de catalogues et de schémas ou les utilisateurs disposant du privilège MANAGE peuvent accorder ces privilèges d'utilisation, cela empêche les propriétaires de tables d'accorder l'accès en dehors des limites approuvées.
Le tableau suivant présente les opérations courantes et les privilèges requis :
Opérations | Privilèges requis |
|---|---|
Lire les données d'une table ou d'une vue |
|
Écrire des données dans une table. |
|
Créez un schéma dans un catalogue. |
|
Créer une table dans un schéma |
|
Exécuter une fonction |
|
Lisez les fichiers d'un volume. |
|
ALL PRIVILEGES comportement
ALL PRIVILEGES implique tous les privilèges applicables pour un type d'objet spécifique, sans que Databricks n'accorde explicitement chaque privilège individuel. Par exemple :
ALL PRIVILEGESsur une table implique la capacité à effectuerSELECT,MODIFYetAPPLY TAG.ALL PRIVILEGESsur un volume implique la capacité à effectuerREAD VOLUME,WRITE VOLUMEetAPPLY TAG.ALL PRIVILEGESsur un schéma implique tous les privilèges au niveau du schéma.ALL PRIVILEGESsur un catalogue implique tous les privilèges au niveau du catalogue.
ALL PRIVILEGES n'inclut pas les privilèges EXTERNAL USE SCHEMA, EXTERNAL USE LOCATION ou MANAGE.
Pour plus de détails sur la manière dont ALL PRIVILEGES est évalué et révoqué, consultez TOUS LES PRIVILÈGES.
Le privilège MANAGE
Le privilège MANAGE permet aux utilisateurs de gérer les privilèges sur un objet, d'en transférer la propriété et de le supprimer sans en être le propriétaire. Avoir MANAGE est similaire à la propriété, mais il existe des différences importantes. Consultez La propriété par rapport au privilège MANAGE.
Pour exercer MANAGE, les utilisateurs ont toujours besoin des privilèges d'utilisation appropriés sur l'objet et tous ses objets parents.
Si MANAGE est accordé sur un objet conteneur, l'utilisateur obtient également MANAGE sur tous les objets enfants.
Pour tous les détails, consultez GÉRER.
Le privilège BROWSE
BROWSE permet aux utilisateurs de découvrir des objets et de visualiser leurs métadonnées sans accorder l'accès aux données sous-jacentes. Les utilisateurs disposant de BROWSE peuvent voir qu’un objet existe, consulter son nom, sa description et ses tags, et y demander l’accès sans avoir besoin de USE CATALOG ou USE SCHEMA.
BROWSE est accordé au niveau du catalogue et s’applique à tous les objets de ce catalogue. Databricks recommande d’accorder BROWSE sur les catalogues au groupe All account users afin de rendre les données accessibles dans toute votre organisation.
Pour plus de détails, consultez PARCOURIR.
Propriété
Chaque objet sécurisable dans Unity Catalog a un propriétaire. Le propriétaire peut être un utilisateur, un Service Principal ou un groupe. Le principal qui crée un objet en devient le propriétaire initial.
La propriété a une signification particulière dans Unity Catalog. Les propriétaires d'objets peuvent exécuter automatiquement toutes les fonctionnalités sur l'objet qu'ils possèdent. Cependant, Databricks n'accorde pas explicitement le privilège ALL PRIVILEGES au propriétaire. Cela signifie que vous ne verrez pas ALL PRIVILEGES renvoyé lors de l'affichage des permissions via l'API Databricks ou avec une SHOW GRANTS commande.
La propriété ne s'hérite pas vers le bas dans Unity Catalog. Cependant, les propriétaires d'objets ont automatiquement la capacité de gérer tous les objets enfants. Par exemple, si vous possédez un catalogue, vous ne possédez pas automatiquement les schémas enfants au sein du catalogue, mais vous pouvez gérer tous les schémas enfants. Semblable aux propriétaires ayant toutes les capacités sur leur objet sans avoir explicitement ALL PRIVILEGES, Databricks n'accorde pas non plus explicitement le privilège MANAGE dans ce cas.
Les propriétaires d'objets peuvent effectuer d'autres opérations importantes sur l'objet, notamment accorder et révoquer des autorisations, transférer la propriété et supprimer l'objet.
Pour éviter l'exfiltration accidentelle de données, les propriétaires de schémas n'ont pas le privilège EXTERNAL USE SCHEMA default et les propriétaires d'emplacements externes n'ont pas le privilège EXTERNAL USE LOCATION default. Consultez Activer l'accès aux données externes à Unity Catalog.
Pour résumer, le propriétaire d'un objet peut effectuer les opérations suivantes :
Compétence | Description |
|---|---|
Toutes les capacités d'objet | Les propriétaires disposent automatiquement de toutes les capacités sur l’objet qu’ils possèdent. Ceci est fonctionnellement identique à la possession de |
Gérer les objets enfants | Les propriétaires obtiennent automatiquement la possibilité de gérer tous les objets enfants. Ceci est fonctionnellement identique à disposer du privilège |
Accorder et révoquer des autorisations | Les propriétaires peuvent accorder et révoquer des privilèges sur l'objet aux utilisateurs et groupes |
Transférer la propriété | Les propriétaires peuvent transférer la propriété de leur objet à un autre principal |
Supprimer des objets | Les propriétaires peuvent supprimer les objets qu'ils possèdent. |
Pour obtenir des informations sur la manière d'afficher et de transférer la propriété, consultez Gérer la propriété des objets.
Propriété par rapport au privilège MANAGE
Le privilège MANAGE accorde à un utilisateur la possibilité d'accorder et de révoquer des privilèges sur l'objet. Cela n'accorde pas à l'utilisateur tous les privilèges sur l'objet. Cependant, les utilisateurs disposant de MANAGE peuvent s'accorder explicitement des privilèges d'accès aux données, tels que SELECT.
En revanche, les propriétaires d'objets disposent par default de toutes les capacités sur leur objet. Comme la propriété n'est pas héritée par les objets enfants, les propriétaires requièrent toujours des octrois explicites sur ces objets enfants.
Les utilisateurs disposant du privilège MANAGE doivent disposer du privilège d'utilisation approprié au niveau de l'objet, le cas échéant, et de tous les objets de conteneur parents. Par exemple, pour exercer le privilège MANAGE sur un schéma, vous avez besoin de USE SCHEMA sur le schéma et de USE CATALOG sur le catalogue parent. Pour accorder des autorisations sur une table, vous devez disposer de MANAGE sur la table, de USE CATALOG sur le catalogue parent et de USE SCHEMA sur le schéma parent.
Le tableau suivant récapitule les principales différences entre la propriété et le privilège MANAGE :
Compétence | Propriétaire |
|
|---|---|---|
Toutes les capacités sur l'objet | Oui, toutes les capacités sont implicites . Cela diffère du fait d'avoir explicitement | Non, les privilèges doivent être accordés séparément. Les utilisateurs disposant de |
Accorder et révoquer des privilèges sur l'objet | Oui | Oui |
Transférer la propriété | Oui | Oui |
Supprimer l'objet | Oui | Oui |
Capacité à gérer les objets enfants | Oui, les capacités de gestion sur les objets enfants sont implicites . Consultez Propriété. | Oui, le privilège |
Nécessite des privilèges d'utilisation | Non | Oui, cela nécessite les privilèges |
Nombre de principaux | Un seul principal (utilisateur, Service Principal ou groupe) | Peut être accordé à plusieurs principaux |
Pour éviter une escalade accidentelle des privilèges, le privilège ALL PRIVILEGES n'inclut pas le privilège MANAGE.
Héritage des privilèges
Si vous avez créé votre métastore Unity Catalog pendant la préversion publique (avant le 25 août 2022), vous êtes peut-être sur un modèle de privilèges antérieur qui ne prend pas en charge le modèle d'héritage actuel. Vous pouvez passer à la version 1.0 du modèle de privilèges pour bénéficier de l'héritage des privilèges. Consultez Mettre à niveau l'héritage des privilèges.
L'héritage des privilèges est une fonctionnalité clé du modèle d'autorisations d'Unity Catalog. Lorsque vous accordez un privilège sur un objet parent, ce privilège s’applique automatiquement à tous les objets enfants actuels et futurs. Cela simplifie la gestion des accès en réduisant le nombre d'octrois individuels que vous devez effectuer.
Les privilèges sont hérités vers le bas à travers la hiérarchie du modèle d'objet :
- Un privilège accordé sur un catalogue s'applique à tous les schémas de ce catalogue, et à toutes les tables, vues, volumes et fonctions de ces schémas.
- Un privilège accordé sur un schéma s’applique à toutes les tables, vues, volumes et fonctions de ce schéma.
Par exemple, si vous accordez à un utilisateur le privilège SELECT sur un catalogue, cet utilisateur peut lire toutes les tables et vues de ce catalogue (avec les privilèges d'utilisation USE CATALOG et USE SCHEMA appropriés).
Les privilèges accordés sur un métastore ne sont pas hérités par les objets enfants. Les octrois au niveau du métastore contrôlent les Opérations ciblées sur le métastore, telles que CREATE CATALOG et CREATE EXTERNAL LOCATION, et non l'accès aux données au sein du métastore.
La propriété ne s'hérite pas vers le bas dans Unity Catalog. En tant que propriétaire d'un objet, tous les privilèges sur cet objet vous sont automatiquement accordés. Vous n'assumez pas automatiquement la propriété des objets enfants créés sous votre objet. Cependant, vous obtenez automatiquement le privilège MANAGE sur tous les objets enfants nouveaux et existants.
Exemples d'héritage
Supposons que vous accordiez SELECT, USE CATALOG et USE SCHEMA au niveau du catalogue au groupe finance_team :
GRANT USE CATALOG, USE SCHEMA, SELECT ON CATALOG sales TO finance_team;
Cette autorisation permet au groupe finance_team de :
- Accédez au catalogue
sales - Accéder à tous les schémas du catalogue
- Lire les données de toutes les tables et vues actuelles et futures du catalogue
Supposons que vous accordiez CREATE TABLE, USE CATALOG et USE SCHEMA au niveau du catalogue au groupe data_engineers :
GRANT USE CATALOG, USE SCHEMA, CREATE TABLE ON CATALOG analytics TO data_engineers;
Cette autorisation permet au groupe data_engineers de :
- Accédez au catalogue
analytics - Accéder à tous les schémas du catalogue
- Créez des tables dans n'importe quel schéma actuel ou futur du catalogue.
Pour obtenir des instructions sur la façon d'accorder et de révoquer des privilèges, consultez Afficher, accorder et révoquer des privilèges.