Aller au contenu principal

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.

Hiérarchie du modèle d'objet 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 SELECT sur un catalogue permet aux utilisateurs de lire toutes les tables de ce catalogue (avec les privilèges d'utilisation appropriés). Consultez Héritage des privilèges.

Privilèges d'utilisation

L'accès aux objets enfants requiert le privilège USE CATALOG ou USE SCHEMA approprié sur les objets conteneurs parents. Voir Privilèges d'utilisation.

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 CREATE SCHEMA sur les catalogues et CREATE TABLE sur les schémas.

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 SELECT sur un catalogue permet aux utilisateurs de lire toutes les tables de ce catalogue (avec les privilèges d'utilisation appropriés). Consultez Héritage des privilèges.

Privilèges d'utilisation

L'accès aux objets enfants requiert le privilège USE CATALOG ou USE SCHEMA approprié sur les objets conteneurs parents. Voir Privilèges d'utilisation.

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 CREATE SCHEMA sur les catalogues et CREATE TABLE sur les schémas.

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 vues
  • MODIFY: Écrire des données dans des tables ou des vues
  • USE 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 :

  1. USE CATALOG sur le catalogue parent
  2. USE SCHEMA sur le schéma parent
  3. Le privilège spécifique pour l’opération (tel que SELECT, MODIFY, ou EXECUTE)

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

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, SELECT sur la table ou la vue

Écrire des données dans une table.

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, MODIFY sur la table

Créez un schéma dans un catalogue.

USE CATALOG sur le catalogue, CREATE SCHEMA sur le catalogue

Créer une table dans un schéma

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, CREATE TABLE sur le schéma (ou catalogue si accordé au niveau du catalogue)

Exécuter une fonction

USE CATALOG sur catalogue, USE SCHEMA sur schéma, EXECUTE sur fonction

Lisez les fichiers d'un volume.

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, READ VOLUME sur le volume

Opérations

Privilèges requis

Lire les données d'une table ou d'une vue

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, SELECT sur la table ou la vue

Écrire des données dans une table.

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, MODIFY sur la table

Créez un schéma dans un catalogue.

USE CATALOG sur le catalogue, CREATE SCHEMA sur le catalogue

Créer une table dans un schéma

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, CREATE TABLE sur le schéma (ou catalogue si accordé au niveau du catalogue)

Exécuter une fonction

USE CATALOG sur catalogue, USE SCHEMA sur schéma, EXECUTE sur fonction

Lisez les fichiers d'un volume.

USE CATALOG sur le catalogue, USE SCHEMA sur le schéma, READ VOLUME sur le 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 PRIVILEGES sur une table implique la capacité à effectuer SELECT, MODIFY et APPLY TAG.
  • ALL PRIVILEGES sur un volume implique la capacité à effectuer READ VOLUME, WRITE VOLUME et APPLY TAG.
  • ALL PRIVILEGES sur un schéma implique tous les privilèges au niveau du schéma.
  • ALL PRIVILEGES sur 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.

remarque

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 ALL PRIVILEGES, mais Databricks n'attribue pas explicitement ALL PRIVILEGES aux propriétaires.

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 MANAGE sur tous les objets enfants, mais Databricks n'attribue pas explicitement le privilège MANAGE aux propriétaires.

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.

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 ALL PRIVILEGES, mais Databricks n'attribue pas explicitement ALL PRIVILEGES aux propriétaires.

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 MANAGE sur tous les objets enfants, mais Databricks n'attribue pas explicitement le privilège MANAGE aux propriétaires.

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

MANAGE privilège

Toutes les capacités sur l'objet

Oui, toutes les capacités sont implicites . Cela diffère du fait d'avoir explicitement ALL PRIVILEGES. Consulter Propriété.

Non, les privilèges doivent être accordés séparément. Les utilisateurs disposant de MANAGE peuvent s'accorder ces privilèges.

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 MANAGE est explicitement accordé sur les objets enfants.

Nécessite des privilèges d'utilisation

Non

Oui, cela nécessite les privilèges USE CATALOG et USE SCHEMA appropriés

Nombre de principaux

Un seul principal (utilisateur, Service Principal ou groupe)

Peut être accordé à plusieurs principaux

Compétence

Propriétaire

MANAGE privilège

Toutes les capacités sur l'objet

Oui, toutes les capacités sont implicites . Cela diffère du fait d'avoir explicitement ALL PRIVILEGES. Consulter Propriété.

Non, les privilèges doivent être accordés séparément. Les utilisateurs disposant de MANAGE peuvent s'accorder ces privilèges.

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 MANAGE est explicitement accordé sur les objets enfants.

Nécessite des privilèges d'utilisation

Non

Oui, cela nécessite les privilèges USE CATALOG et USE SCHEMA appropriés

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

remarque

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).

important

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 :

SQL
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 :

SQL
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.