Gérer les privilèges dans Unity Catalog
Cette page explique comment accorder, révoquer et inspecter les privilèges sur les objets sécurisables du Unity Catalog, et comment gérer la propriété des objets. Pour des informations conceptuelles sur le modèle de permissions, l'héritage des privilèges et la propriété, consultez Concepts du modèle de permissions d'Unity Catalog.
Qui peut gérer les privilèges ?
Initialement, les utilisateurs n'ont pas accès aux données dans un métastore. Les administrateurs de compte Databricks, les administrateurs de Workspace et les administrateurs de métastore disposent de privilèges default pour gérer Unity Catalog. Consultez les privilèges d'administrateur dans Unity Catalog.
Tous les objets sécurisables dans Unity Catalog ont un propriétaire. Les propriétaires d'objets ont tous les privilèges sur cet objet, y compris la possibilité d'accorder des privilèges à d'autres principaux. Les propriétaires peuvent accorder aux autres utilisateurs le privilège MANAGE sur l'objet, ce qui leur permet de gérer les privilèges sur l'objet. Voir Gérer la propriété d'objet.
Les privilèges peuvent être accordés par l'une des méthodes suivantes :
- Le propriétaire de l'objet.
- Le propriétaire du catalogue ou du schéma qui contient l'objet.
- Un utilisateur disposant du privilège
MANAGEsur l'objet. - Un administrateur du métastore.
Les administrateurs de compte peuvent également accorder des privilèges directement sur un métastore.
Privilèges de catalogue Workspace
Si votre Workspace a été automatiquement activé pour Unity Catalog, le Workspace est attaché à un metastore par default et un catalogue de Workspace est créé pour votre Workspace dans le metastore. Les administrateurs de Workspace sont les propriétaires default du catalogue Workspace. En tant que propriétaires, ils peuvent gérer les privilèges sur le catalogue du workspace et tous les objets enfants.
Tous les utilisateurs du Workspace reçoivent le privilège USE CATALOG sur le catalogue du Workspace. Les utilisateurs du Workspace reçoivent également les privilèges USE SCHEMA, CREATE TABLE, CREATE VOLUME, CREATE MODEL, CREATE FUNCTION et CREATE MATERIALIZED VIEW sur le schéma default du catalogue.
Pour plus d'informations, consultez Se familiariser avec Unity Catalog.
Afficher, accorder et révoquer les privilèges
Vous pouvez gérer les privilèges des objets du metastore à l'aide de commandes SQL, de l'interface CLI de Databricks, du fournisseur Databricks Terraform ou de Catalog Explorer.
Dans les commandes SQL suivantes, remplacez ces valeurs d'espace réservé :
<privilege-type>est un type de privilège Unity Catalog. Voir types de privilèges.<securable-type>: Le type d'objet sécurisable, tel queCATALOGouTABLE. Voir Objets sécurisables<securable-name>: Nom du sécurisable. Si le type de sécurisable estMETASTORE, ne fournissez pas le nom du sécurisable. Il est supposé être le métastore attaché au workspace.<principal>est un utilisateur, un Service Principal (représenté par sa valeur applicationId) ou un groupe. Vous devez encadrer les utilisateurs, Service Principals et noms de groupes qui contiennent des caractères spéciaux par des guillemets graves (` `). Voir Principal.
Afficher les autorisations sur un objet
Actuellement, les utilisateurs disposant du privilège MANAGE sur un objet ne peuvent pas afficher tous les accords pour cet objet dans le INFORMATION_SCHEMA. Au lieu de cela, le INFORMATION_SCHEMA n'affiche que ses propres autorisations sur l'objet. Ce comportement sera corrigé à l'avenir.
Les utilisateurs disposant du privilège MANAGE peuvent consulter toutes les autorisations sur un objet à l'aide de commandes SQL ou de l'Explorateur de catalogues. Voir Gérer les privilèges dans Unity Catalog.
Autorisations requises :
- Les administrateurs du métastore, les utilisateurs disposant du privilège
MANAGEsur l'objet, le propriétaire de l'objet, ou le propriétaire du catalogue ou du schéma qui contient l'objet peuvent voir toutes les autorisations sur l'objet. - Si vous ne disposez pas des autorisations ci-dessus, vous ne pouvez afficher que vos propres autorisations sur l'objet.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- Sélectionnez l'objet, tel qu'un catalogue, un schéma, une table ou une vue.
- Allez à l'onglet Autorisations .
Exécutez la commande SQL suivante dans un Notebook ou un éditeur de query SQL. Vous pouvez afficher les autorisations sur un principal spécifique, ou vous pouvez afficher toutes les autorisations sur un objet sécurisable.
SHOW GRANTS [principal] ON <securable-type> <securable-name>
Par exemple, la commande suivante affiche tous les privilèges sur un schéma nommé default dans le catalogue parent nommé main :
SHOW GRANTS ON SCHEMA main.default;
La commande renvoie :
principal actionType objectType objectKey
------------- ------------- ---------- ------------
finance-team CREATE TABLE SCHEMA main.default
finance-team USE SCHEMA SCHEMA main.default
Afficher mes autorisations sur un objet
**Permissions requises :** Vous pouvez toujours consulter vos propres autorisations sur un objet.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- Sélectionnez l'objet, tel qu'un catalogue, un schéma, une table ou une vue.
- Accédez à l'onglet Autorisations . Si vous n'êtes pas propriétaire d'un objet ou administrateur du metastore, vous ne pouvez consulter que vos propres autorisations sur l'objet.
Exécutez la commande SQL suivante dans un Notebook ou un éditeur de requêtes SQL pour afficher vos autorisations sur un objet.
SHOW GRANTS `<user>@<domain-name>` ON <securable-type> <securable-name>
Accorder des autorisations sur un objet
Autorisations requises : administrateur de Metastore, le privilège MANAGE sur l'objet, le propriétaire de l'objet, ou le propriétaire du catalogue ou du schéma qui contient l'objet.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- Sélectionnez l'objet, tel qu'un catalogue, un schéma, une table ou une vue.
- Allez à l'onglet Autorisations .
- Cliquez sur Accorder .
- Saisissez l'adresse e-mail d'un utilisateur ou le nom d'un groupe.
- Sélectionnez les autorisations à accorder.
- Cliquez sur **OK**.
Exécutez la commande SQL suivante dans un notebook ou un éditeur de requêtes SQL.
GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>
Par exemple, la commande suivante accorde à un groupe nommé finance-team l'accès pour créer des tables dans un schéma nommé default avec le catalogue parent nommé main :
GRANT CREATE TABLE ON SCHEMA main.default TO `finance-team`;
GRANT USE SCHEMA ON SCHEMA main.default TO `finance-team`;
GRANT USE CATALOG ON CATALOG main TO `finance-team`;
Notez que les modèles ajoutés au registre sont un type de fonction. Pour accorder un privilège sur un modèle, vous devez utiliser GRANT ON FUNCTION. Par exemple, pour accorder au groupe ml-team-acme le privilège EXECUTE sur le modèle prod.ml_team.iris_model, vous utiliseriez :
GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;
Révoquer les autorisations sur un objet
Autorisations requises : administrateur de Metastore, le privilège MANAGE sur l'objet, le propriétaire de l'objet, ou le propriétaire du catalogue ou du schéma qui contient l'objet.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- Sélectionnez l'objet, tel qu'un catalogue, un schéma, une table ou une vue.
- Allez à l'onglet Autorisations .
- Sélectionnez un privilège qui a été accordé à un utilisateur, un Service Principal ou un groupe.
- Cliquez sur Révoquer .
- Pour confirmer, cliquez sur Révoquer .
Exécutez la commande SQL suivante dans un notebook ou un éditeur de requêtes SQL.
REVOKE <privilege-type> ON <securable-type> <securable-name> FROM <principal>
Par exemple, la commande suivante révoque l’accès d’un groupe nommé finance-team pour créer des tables dans un schéma nommé default avec le catalogue parent nommé main :
REVOKE CREATE TABLE ON SCHEMA main.default FROM `finance-team`;
Une instruction REVOKE réussit même si les privilèges spécifiés n'ont pas été accordés initialement. Cela garantit que les privilèges ne sont pas présents, quel que soit leur état antérieur.
Afficher les octrois sur un metastore
Autorisations requises : Administrateur de metastore ou administrateur de compte. Vous pouvez également afficher vos propres autorisations sur un métastore.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- En haut du volet Catalogue , cliquez sur l'icône d'engrenage
et sélectionnez Metastore .
- Cliquez sur l'onglet tab .
Exécutez la commande SQL suivante dans un Notebook ou un éditeur de query SQL. Vous pouvez afficher les octrois sur un principal spécifique, ou vous pouvez afficher tous les octrois sur un metastore.
SHOW GRANTS [principal] ON METASTORE
Accorder des autorisations sur un metastore
Autorisations requises : administrateur de métastore ou administrateur de compte.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- En haut du volet Catalogue , cliquez sur l'icône d'engrenage
et sélectionnez Metastore .
- Dans l'onglet **tab**, cliquez sur **Accorder**.
- Saisissez l'adresse e-mail d'un utilisateur ou le nom d'un groupe.
- Sélectionnez les autorisations à accorder.
- Cliquez sur **OK**.
-
Exécutez la commande SQL suivante dans un notebook ou un éditeur de requêtes SQL.
SQLGRANT <privilege-type> ON METASTORE TO <principal>;Lorsque vous accordez des privilèges sur un metastore, vous n'incluez pas le nom du metastore, car le metastore attaché à votre workspace est supposé.
Révoquer les autorisations sur un métastore
Autorisations requises : administrateur de métastore ou administrateur de compte.
- Catalog Explorer
- SQL
- Dans votre workspace Databricks, cliquez sur
Catalogue .
- En haut du volet Catalogue , cliquez sur l'icône d'engrenage
et sélectionnez Metastore .
- Dans l'onglet tab , sélectionnez un utilisateur ou un groupe et cliquez sur Révoquer .
- Pour confirmer, cliquez sur Révoquer .
-
Exécutez la commande SQL suivante dans un notebook ou un éditeur de requêtes SQL.
SQLREVOKE <privilege-type> ON METASTORE FROM <principal>;Lorsque vous révoquez des privilèges sur un métastore, vous n'incluez pas le nom du métastore, car le métastore attaché à votre Workspace est implicite.
Gérer la propriété des objets
Afficher le propriétaire d'un objet
Vous pouvez utiliser l'**Explorateur de catalogues** ou des instructions SQL pour afficher le propriétaire d'un objet.
Autorisations requises : Tout utilisateur disposant du privilège BROWSE sur l'objet ou un parent de l'objet peut afficher le propriétaire de l'objet.
- Catalog Explorer
- SQL
-
Dans votre workspace Databricks, cliquez sur
Catalogue .
-
Sélectionnez l'objet, tel qu'un catalogue, un schéma, une table, une vue, un volume, un emplacement externe ou des informations d'identification de stockage.
La façon de naviguer vers l’objet dépend de l’objet. Les catalogues, les schémas et le contenu des schémas (tels que les tables et les volumes) sont sélectionnables dans le volet Catalogue de gauche. Vous pouvez trouver d’autres objets, tels que des emplacements externes ou des partages OpenSharing, en cliquant sur l’icône d’engrenage
au-dessus du volet Catalogue et en sélectionnant la catégorie d’objet dans le menu.
Pour la plupart des objets, le propriétaire est affiché sur l’ Overview tab de la page des détails de l’objet. Pour certains objets, tels que les emplacements externes, il est affiché en haut de la page de détails de l'objet.
Exécutez la commande SQL suivante dans un Notebook ou un éditeur de query SQL. Remplacez les valeurs d'espace réservé :
<securable-type>: Le type de sécurisable, tel queCATALOGouTABLE.<catalog>: Le catalogue parent si vous visualisez un schéma ou le contenu d'un schéma.<schema>: Le schéma parent si vous consultez le contenu d'un schéma, tel qu'une table ou une vue.<securable-name>: Le nom de l'objet sécurisable.
DESCRIBE <securable-type> EXTENDED <catalog>.<schema>.<securable-name>;
Transférer la propriété
Vous pouvez utiliser Catalog Explorer ou des instructions SQL pour transférer le propriétaire d'un objet.
Autorisations requises : Vous pouvez transférer la propriété de l'objet si vous êtes le propriétaire actuel, un administrateur de metastore, le propriétaire du conteneur (le catalogue pour un schéma, le schéma pour une table), ou un utilisateur avec le privilège MANAGE sur l'objet. Les objets de partage OpenSharing constituent une exception : seul un administrateur de metastore peut transférer la propriété du partage.
Pour éviter les escalades de privilèges, seul un administrateur du métastore peut transférer la propriété d’une vue, d’une fonction ou d’un modèle à tout utilisateur, Service Principal ou groupe dans le compte. Les propriétaires actuels et les utilisateurs disposant du privilège MANAGE sont limités au transfert de propriété à leur nom d'utilisateur ou à un groupe dont ils sont membres.
Le transfert de propriété d'une vue ou d'une vue métrique à un groupe permet l'édition collaborative. Lorsqu'un groupe possède une vue ou une vue métrique, tous les membres du groupe peuvent modifier sa définition tandis que l'accès aux données reste limité à ce que le groupe est autorisé à voir. Pour des informations détaillées, consultez Activer la modification collaborative.
Les vues matérialisées et les tables de streaming créées avec Databricks SQL peuvent avoir leur propriété transférée. Pour plus de détails, consultez Changer le propriétaire d'une vue matérialisée et Changer le propriétaire d'une table de streaming.
Les vues matérialisées et les tables de streaming créées avec les Lakeflow Pipelines ne peuvent pas avoir leur propriété directement transférée. Modifiez plutôt l'utilisateur d'exécution du pipeline qui possède les datasets. Avec le prochain refresh, le propriétaire sera mis à jour avec l'utilisateur d'exécution. Voir Définir l'utilisateur d'exécution.
- Catalog Explorer
- SQL
-
Dans votre workspace Databricks, cliquez sur
Catalogue .
-
Sélectionnez l'objet, tel qu'un catalogue, un schéma, une table, une vue, un emplacement externe ou un identifiant de stockage.
La façon de naviguer vers l’objet dépend de l’objet. Les catalogues, les schémas et le contenu des schémas (tels que les tables et les volumes) sont sélectionnables dans le volet Catalogue de gauche. Vous pouvez trouver d’autres objets, tels que des emplacements externes ou des partages OpenSharing, en cliquant sur l’icône d’engrenage
au-dessus du volet Catalogue et en sélectionnant la catégorie d’objet dans le menu.
Pour la plupart des objets, le propriétaire est affiché sur l’ Overview tab de la page des détails de l’objet. Pour certains objets, tels que les emplacements externes, il est affiché en haut de la page de détails de l'objet.
-
Cliquez sur
l’icône de modification en regard du champ **Propriétaire**.
-
Recherchez et sélectionnez un groupe, un utilisateur ou un Service Principal.
-
Cliquez sur Enregistrer .
Exécutez la commande SQL suivante dans un Notebook ou un éditeur de query SQL. Remplacez les valeurs d'espace réservé :
<securable-type>: Le type d'objet sécurisable, tel queCATALOGouTABLE.METASTOREn'est pas pris en charge en tant qu'objet sécurisable dans cette commande.<securable-name>: Nom du sécurisable. Si vous modifiez un schéma ou le contenu d’un schéma, vous devez utiliser l’espace de noms complet à trois niveaux (catalog.schema.object), sauf si vous avez déjà spécifié le catalogue parent et/ou le schéma.<principal>est un utilisateur, un Service Principal (représenté par sa valeur applicationId) ou un groupe. Vous devez encadrer les utilisateurs, Service Principals et noms de groupes qui contiennent des caractères spéciaux par des guillemets graves (` `). Voir Principal.
ALTER <securable-type> <securable-name> OWNER TO <principal>;
Par exemple, pour transférer la propriété de la table orders au groupe accounting :
ALTER TABLE mycatalog.myschema.orders OWNER TO `accounting`;