Conceptos del modelo de permisos del catálogo de Unity

En esta página se explican los conceptos básicos del modelo de permisos del catálogo de Unity, incluidos el modelo de objetos, los privilegios, la propiedad y la herencia.

Para obtener una referencia general de todos los privilegios del catálogo de Unity, consulte Referencia de privilegios del catálogo de Unity. Para obtener instrucciones sobre cómo conceder y revocar privilegios, consulte Mostrar, conceder y revocar privilegios.

Objetos protegibles

En el Catálogo de Unity, los datos y los metadatos residen en un contenedor de nivel superior denominado metastore. Dentro de este metastore, los datos se representan como objetos en un espacio de nombres de tres niveles: catalog.schema.table. Esta estructura jerárquica también proporciona la base para el control de acceso en el catálogo de Unity.

Jerarquía del modelo de objetos del catálogo de Unity

Cada objeto de esta jerarquía es un objeto protegible. El control de acceso en el Catálogo de Unity funciona concediéndoles privilegios, como SELECT, MODIFYo USE SCHEMA, en estos objetos protegibles. Este modelo proporciona un control específico sobre quién puede acceder a los datos y administrarlos en toda la organización.

Para obtener una lista completa de objetos protegibles y los privilegios que se aplican a cada uno, consulte Referencia de privilegios del catálogo de Unity.

Objetos de contenedor

Algunos objetos protegibles en el catálogo de Unity son objetos contenedor, lo que significa que contienen objetos secundarios dentro de la jerarquía. Los objetos contenedor desempeñan un papel especial en el modelo de permisos, ya que los privilegios que se les conceden pueden afectar a sus objetos hijos mediante la herencia.

A continuación se muestran objetos de contenedor en el catálogo de Unity:

  • Catálogos: nivel superior del espacio de nombres de tres niveles. Los catálogos contienen esquemas como objetos hijos directos.
  • Esquemas: nivel intermedio del espacio de nombres de tres niveles. Los esquemas contienen tablas, vistas, volúmenes y funciones como elementos secundarios directos.

Los objetos de contenedor tienen varias características importantes:

Característica Description
Herencia de privilegios Cuando se concede un privilegio a un objeto contenedor, dicho privilegio se aplica automáticamente a todos los objetos hijos actuales y futuros. Por ejemplo, la concesión SELECT en un catálogo permite a los usuarios leer todas las tablas de ese catálogo (con los privilegios de uso adecuados). Consulte Herencia de privilegios.
Privilegios de uso El acceso a los objetos hijos requiere el privilegio USE CATALOG o USE SCHEMA adecuado sobre los objetos contenedor padres. Consulte Privilegios de uso.
Capacidad de administrar objetos secundarios Cuando eres propietario de un objeto contenedor, obtienes automáticamente la capacidad de administrar todos los objetos hijos, incluso si no eres propietario directo de dichos hijos. Consulte Propiedad.
Privilegios de creación Los objetos de contenedor admiten privilegios que permiten a los usuarios crear objetos secundarios dentro de ellos, como CREATE SCHEMA en catálogos y CREATE TABLE en esquemas.

Los objetos que no son contenedores, como tablas, vistas, volúmenes y funciones, no contienen objetos hijos.

Privileges

Los privilegios determinan qué acciones puede realizar un usuario o grupo en un objeto protegible. Entre los privilegios comunes se incluyen:

  • SELECT: Leer datos de tablas o vistas
  • MODIFY: escribir datos en tablas o vistas
  • USE CATALOG: Acceder a un catálogo (requiere privilegios adicionales para trabajar con objetos hijos)
  • USE SCHEMA: acceso a un esquema (requiere privilegios adicionales para trabajar con objetos secundarios)
  • CREATE TABLE: crear tablas dentro de un esquema

A un usuario o grupo se le debe conceder explícitamente un privilegio para realizar una acción.

En las secciones siguientes se describen privilegios especiales importantes en Azure Databricks. Para obtener una referencia completa de todos los privilegios, consulte Referencia de privilegios del catálogo de Unity.

Privilegios de uso

USE CATALOG y USE SCHEMA son privilegios de uso. Por lo general, los privilegios de uso son un requisito previo para interactuar con un objeto y sus objetos secundarios en la jerarquía.

Para trabajar con cualquier objeto en un catálogo, necesitas el USE CATALOG privilegio sobre el catálogo, y para trabajar con cualquier objeto en un esquema, necesitas el USE SCHEMA privilegio sobre el esquema. Gestionar un objeto con el MANAGE privilegio es una excepción, con requisitos de privilegio de uso reducidos. Consulte Requisitos de privilegio de uso para MANAGE.

Por ejemplo, para realizar la mayoría de las operaciones en tablas, vistas, volúmenes o funciones, necesita:

  1. USE CATALOG en el catálogo primario
  2. USE SCHEMA en el esquema principal
  3. Privilegios específicos para la operación (como SELECT, MODIFYo EXECUTE)

Se requieren los tres. Tener solo el SELECT privilegio en una tabla no es suficiente para leerlo si falta USE CATALOG o USE SCHEMA en sus objetos primarios.

Los privilegios de uso proporcionan un mecanismo de control de acceso importante para los administradores de nivel superior. Por ejemplo, incluso si un propietario de tabla quiere compartir su tabla con otros usuarios, esos usuarios no pueden acceder a la tabla sin los privilegios USE CATALOG y USE SCHEMA en los objetos primarios. Dado que solo los propietarios de catálogos y esquemas o los usuarios con el MANAGE privilegio pueden conceder estos privilegios de uso, esto impide que los propietarios de tablas concedan acceso fuera de los límites aprobados.

Requisitos de privilegios de uso para MANAGE

El MANAGE privilegio tiene requisitos reducidos de privilegio de uso. Para ejercer MANAGE, no necesitas un privilegio de uso en el nivel donde MANAGE se concede: MANAGE en un catálogo no se requiere USE CATALOG en ese catálogo, y MANAGE en un esquema no se requiere USE SCHEMA en ese esquema. Necesitas el privilegio de uso solo en los niveles de contenedor estrictamente por encima del nivel donde tienes MANAGE, no en ese nivel ni por debajo de él. En cada uno de esos niveles superiores, puedes cumplir el requisito con USE CATALOG o USE SCHEMA, o bien con la propiedad o MANAGE. Dado que el MANAGE de un contenedor lo heredan todos sus objetos hijos, disponer de MANAGE en un nivel superior significa que no se necesitan privilegios de uso por debajo de ese nivel. Por ejemplo:

  • MANAGE en un catálogo no necesita privilegios de uso. Puedes gestionar el catálogo y cualquier esquema, tabla u otro objeto dentro de él sin USE CATALOG ni USE SCHEMA.
  • El MANAGE de un esquema requiere USE CATALOG en el catálogo padre (o la propiedad o MANAGE en ese catálogo), pero no USE SCHEMA en el esquema.
  • MANAGE en un objeto que no sea un contenedor, como una tabla, una vista, un volumen o una función, requiere USE CATALOG en el catálogo principal y USE SCHEMA en el esquema principal (o la propiedad o MANAGE en cualquiera de los dos).

Esta reducción se aplica únicamente a las capacidades de metadatos que MANAGE, y a cualquier privilegio hijo de MANAGE tales como READ METADATA, proporcionan. Los privilegios de acceso a datos como SELECT y MODIFY aún requieren USE CATALOG y USE SCHEMA, incluso para usuarios con MANAGE. Para más información sobre lo que MANAGE permite, consulta El MANAGE privilegio.

En la tabla siguiente se muestran las operaciones comunes y sus privilegios necesarios:

Operación Privilegios requeridos
Leer datos de una tabla o vista USE CATALOG en el catálogo, USE SCHEMA en el esquema, SELECT en la tabla o vista
Escribir datos en una tabla USE CATALOG en el catálogo, USE SCHEMA en el esquema, MODIFY en la tabla
Creación de un esquema en un catálogo USE CATALOG en el catálogo, CREATE SCHEMA en el catálogo
Creación de una tabla en un esquema USE CATALOG en el catálogo, USE SCHEMA en el esquema, CREATE TABLE en el esquema (o en el catálogo si se concede en el nivel de catálogo)
Ejecutar una función USE CATALOG en el catálogo, USE SCHEMA en el esquema, EXECUTE en la función
Leer archivos de un volumen USE CATALOG en el catálogo, USE SCHEMA en el esquema, READ VOLUME en el volumen
Gestionar un catálogo (conceder privilegios, transferir la propiedad, retirar) MANAGE en catálogo (no se requieren privilegios de uso)
Gestionar un esquema (conceder privilegios, transferir la propiedad, abandonar) USE CATALOG en catálogo, MANAGE en esquema
Gestionar una tabla, vista, volumen o función (conceder privilegios, transferir la propiedad, descartar) USE CATALOG en el catálogo, USE SCHEMA en el esquema, MANAGE en el objeto

ALL PRIVILEGES comportamiento

ALL PRIVILEGES implica todos los privilegios aplicables para un tipo de objeto específico, sin que Azure Databricks conceda explícitamente cada privilegio individual. Por ejemplo:

  • ALL PRIVILEGES en una tabla implica la capacidad de realizar SELECT, MODIFYy APPLY TAG.
  • ALL PRIVILEGES en un volumen implica la capacidad de realizar READ VOLUME, WRITE VOLUME y APPLY TAG.
  • ALL PRIVILEGES en un esquema implica todos los privilegios de nivel de esquema.
  • ALL PRIVILEGES en un catálogo implica todos los privilegios a nivel de catálogo.

ALL PRIVILEGES no incluye los EXTERNAL USE SCHEMA, EXTERNAL USE LOCATION, MANAGE, ni READ METADATA los privilegios.

Para obtener más información sobre cómo ALL PRIVILEGES se evalúa y se revoca, consulte ALL PRIVILEGES.

Privilegio MANAGE

El MANAGE privilegio permite a los usuarios administrar privilegios en, transferir la propiedad de y eliminar un objeto sin ser el propietario. Tener MANAGE es similar a la propiedad, pero hay algunas diferencias importantes. Consulte Propiedad frente al MANAGE privilegio.

Para ejercer MANAGE, los usuarios necesitan los privilegios de uso apropiados en los contenedores padres por encima del objeto donde MANAGE se concede, pero no en ese objeto en sí. Por ejemplo, MANAGE en un catálogo no requiere ningún privilegio de uso. Para más detalles, consulte Requisitos de privilegio de uso para MANAGE.

Si MANAGE se concede en un objeto contenedor, el usuario también obtiene MANAGE en todos los objetos secundarios.

Para obtener más información, consulte MANAGE.

Privilegio BROWSE

BROWSE permite a los usuarios detectar objetos y ver sus metadatos sin conceder acceso a los datos subyacentes. Los usuarios con BROWSE pueden ver que existe un objeto, ver su nombre, descripción y etiquetas, y solicitar acceso a él sin necesidad de USE CATALOG o USE SCHEMA.

BROWSE se concede en el nivel de catálogo y se aplica a todos los objetos de ese catálogo. Databricks recomienda conceder BROWSE en catálogos al grupo All account users para que los datos se puedan descubrir en toda la organización.

Para obtener más información, consulte BROWSE.

Privilegios compuestos y de menores

Algunos privilegios están relacionados mediante una relación compuesta de tipo padre-hijo. Un privilegio compuesto concede un amplio conjunto de capacidades, y cada uno de sus privilegios secundarios concede un subconjunto de esas capacidades. Los privilegios para menores te permiten delegar parte del acceso de un privilegio compuesto sin concederlo completo.

Los privilegios compuestos y los privilegios secundarios se conceden y se revocan de forma independiente. Conceder un privilegio compuesto no otorga privilegios a sus hijos, y revocar un privilegio compuesto no revoca ningún privilegio infantil que haya sido concedido explícitamente.

A continuación se presentan ejemplos de privilegios compuestos y de hijo:

  • MANAGE es un privilegio compuesto. READ METADATA es un elemento secundario de MANAGE que otorga visibilidad de solo lectura de los metadatos de un objeto, sin las capacidades de modificación y gestión que incluye MANAGE. Consulta READ METADATA.
  • MODIFY es un privilegio compuesto, y INSERT, UPDATE, y DELETE (Beta) son sus hijos. Cada uno concede un subconjunto del acceso de escritura que MODIFY proporciona. Consulta privilegios granulares de DML.

Propiedad

Cada objeto protegible de Unity Catalog tiene un propietario. El propietario puede ser un usuario, una entidad de servicio o un grupo. La entidad que crea un objeto se convierte en su propietario inicial.

La propiedad tiene una denotación especial en el catálogo de Unity. Los propietarios de objetos pueden realizar automáticamente todas las funcionalidades del objeto que poseen. Sin embargo, Azure Databricks no concede explícitamente el ALL PRIVILEGES privilegio al propietario. Esto significa que no verá ALL PRIVILEGES devuelto al enumerar permisos mediante la API de Databricks o con un SHOW GRANTS comando .

La propiedad no se hereda a niveles inferiores en el catálogo de Unity. Sin embargo, los propietarios de los objetos tienen automáticamente la capacidad de administrar todos los objetos secundarios. Por ejemplo, si es propietario de un catálogo, no es automáticamente propietario de los esquemas secundarios que contiene, pero puede administrar todos ellos. Al igual que los propietarios tienen todas las capacidades sobre su objeto sin necesidad de disponer explícitamente de ALL PRIVILEGES, Azure Databricks tampoco concede explícitamente el privilegio MANAGE en este caso.

Los propietarios de objetos pueden realizar otras operaciones importantes en el objeto, incluida la concesión y revocación de permisos, la transferencia de la propiedad y la eliminación del objeto.

Nota:

Para evitar la filtración accidental de datos, los propietarios de esquemas no tienen el EXTERNAL USE SCHEMA privilegio de forma predeterminada y los propietarios de ubicaciones externas no tienen el EXTERNAL USE LOCATION privilegio de forma predeterminada. Consulte Habilitar el acceso a datos externos en Unity Catalog.

En resumen, el propietario de un objeto puede hacer lo siguiente:

Capacidad Description
Todas las funcionalidades del objeto Los propietarios tienen automáticamente todas las funcionalidades en el objeto que poseen. Esto es funcionalmente igual que tener ALL PRIVILEGES, pero Azure Databricks no asigna ALL PRIVILEGES explícitamente a los propietarios.
Administrar objetos secundarios Los propietarios obtienen automáticamente la capacidad de administrar todos los objetos secundarios. Esto es funcionalmente igual que tener el MANAGE privilegio en todos los objetos secundarios, pero Azure Databricks no asigna explícitamente el MANAGE privilegio a los propietarios.
Concesión y revocación de permisos Los propietarios pueden conceder y revocar privilegios en el objeto a usuarios y grupos
Transferencia de la propiedad Los propietarios pueden transferir la propiedad de su objeto a otro principal
Soltar objetos Los propietarios pueden eliminar los objetos que poseen

Para obtener información sobre cómo ver y transferir la propiedad, vea Administrar la propiedad del objeto.

Propiedad frente al MANAGE privilegio

El MANAGE privilegio concede a un usuario la capacidad de conceder y revocar privilegios en el objeto. No concede al usuario todos los privilegios en el objeto . Sin embargo, los usuarios con MANAGE pueden conceder explícitamente privilegios de acceso a datos como SELECT.

Por el contrario, los propietarios de objetos tienen todas las funcionalidades de su objeto de forma predeterminada. Dado que la propiedad no se hereda hacia abajo a los objetos secundarios, los propietarios siguen necesitando concesiones explícitas sobre dichos objetos secundarios.

Los requisitos de privilegios de uso son los mismos para ambos: los propietarios y los usuarios con MANAGE necesitan los privilegios de uso adecuados en los contenedores principales del objeto, pero no en el objeto en sí. Consulte Requisitos de privilegio de uso para MANAGE.

En la tabla siguiente se resumen las diferencias clave entre la propiedad y el MANAGE privilegio:

Capacidad Propietario Privilegio MANAGE
Todas las funcionalidades del objeto Sí, todas las funcionalidades están implícitas. Esto es diferente de explícitamente tener ALL PRIVILEGES. Consulte Propiedad. No, se deben conceder privilegios por separado. Los usuarios con MANAGE pueden concederse a sí mismos estos privilegios.
Concesión y revocación de privilegios en el objeto
Transferencia de la propiedad
Soltar el objeto
Capacidad de administrar objetos secundarios Sí, las funcionalidades de administración en objetos secundarios están implícitas. Consulte Propiedad. Sí, el privilegio MANAGE se concede explícitamente sobre los objetos secundarios.
Requiere privilegios de uso No Requiere los privilegios de uso adecuados en los contenedores principales situados por encima del objeto en el que se concede MANAGE, pero no en el propio objeto. MANAGE en un catálogo no necesita privilegios de uso.
Número de principales Solo un principal (usuario, entidad de servicio o grupo) Se puede conceder a varios sujetos

Para evitar la elevación accidental de privilegios, el ALL PRIVILEGES privilegio no incluye el MANAGE privilegio.

Herencia de privilegios

Nota:

Si creó el metastore del catálogo de Unity durante la versión preliminar pública (antes del 25 de agosto de 2022), es posible que esté en un modelo de privilegios anterior que no admita el modelo de herencia actual. Puede actualizar a Privilege Model versión 1.0 para obtener la herencia de privilegios. Consulte Actualización a la herencia de privilegios.

La herencia de privilegios es una característica clave del modelo de permisos del catálogo de Unity. Al conceder un privilegio en un objeto principal, ese privilegio se aplica automáticamente a todos los objetos secundarios actuales y futuros. Esto simplifica la administración del acceso al reducir el número de concesiones individuales que necesita realizar.

Los privilegios heredan hacia abajo a través de la jerarquía del modelo de objetos:

  • Un privilegio concedido en un catálogo se aplica a todos los esquemas de ese catálogo y a todas las tablas, vistas, volúmenes y funciones de esos esquemas.
  • Un privilegio concedido en un esquema se aplica a todas las tablas, vistas, volúmenes y funciones de ese esquema.

Por ejemplo, si se concede a un usuario el privilegio SELECT en un catálogo, dicho usuario podrá leer todas las tablas y vistas de ese catálogo (siempre que disponga de los privilegios de uso USE CATALOG y USE SCHEMA adecuados).

Important

Los privilegios concedidos en un metastore no se heredan en los objetos secundarios. El nivel de metastore concede el control de las operaciones con ámbito de metastore como CREATE CATALOG y CREATE EXTERNAL LOCATION, no el acceso a los datos dentro del metastore.

El READ METADATA privilegio es una excepción. Cuando se concede en un metastore, READ METADATA se hereda a todos los objetos del metastore, y no se requieren privilegios de uso (USE CATALOG o USE SCHEMA) para usarlo. Consulta READ METADATA.

La propiedad no se hereda a niveles inferiores en el catálogo de Unity. Como propietario de un objeto, solo se le conceden automáticamente todos los privilegios en ese objeto. No se asume automáticamente la propiedad de los objetos secundarios creados bajo su objeto. Sin embargo, se obtiene automáticamente el privilegio MANAGE sobre todos los objetos secundarios, tanto nuevos como existentes.

Ejemplos de herencia

Supongamos que se conceden los privilegios SELECT, USE CATALOG y USE SCHEMA en el nivel de catálogo al grupo finance_team:

GRANT USE CATALOG, USE SCHEMA, SELECT ON CATALOG sales TO finance_team;

Esta concesión permite al grupo finance_team:

  • Acceso al sales catálogo
  • Acceso a todos los esquemas del catálogo
  • Leer datos de todas las tablas y vistas actuales y futuras del catálogo

Supongamos que se conceden los privilegios CREATE TABLE, USE CATALOG y USE SCHEMA en el nivel de catálogo al grupo data_engineers:

GRANT USE CATALOG, USE SCHEMA, CREATE TABLE ON CATALOG analytics TO data_engineers;

Esta concesión permite al grupo data_engineers:

  • Acceso al analytics catálogo
  • Acceso a todos los esquemas del catálogo
  • Creación de tablas en cualquier esquema actual o futuro en el catálogo

Para obtener instrucciones sobre cómo conceder y revocar privilegios, vea Mostrar, conceder y revocar privilegios.