Administración de privilegios en Unity Catalog

En este artículo se explica cómo controlar el acceso a los datos y otros objetos en Unity Catalog. Para obtener información sobre cómo este modelo difiere del control de acceso en la tienda de metadatos de Hive, consulte Trabajar con el catálogo de Unity y el metastore de Hive heredado.

¿Quién puede administrar los privilegios?

En principio, los usuarios no tienen acceso a los datos de un metastore. Los administradores de cuentas de Azure Databricks, los administradores del área de trabajo y los administradores de metastore tienen privilegios predeterminados para administrar el Unity Catalog. Consulte Privilegios de administrador en Unity Catalog.

Todos los objetos protegibles de Unity Catalog tienen un propietario. Los propietarios de objetos tienen todos los privilegios en ese objeto, incluida la capacidad de conceder privilegios a otras entidades de seguridad. Consulte Administración de la propiedad de objetos de Unity Catalog.

Un administrador del metastore, el propietario de un objeto o el propietario del catálogo o del esquema que contiene el objeto pueden conceder los privilegios. Los administradores de cuentas también pueden conceder privilegios directamente en un metastore.

Privilegios del catálogo del área de trabajo

Si el área de trabajo se ha habilitado automáticamente para Unity Catalog, el área de trabajo se asocia a un metastore de forma predeterminada y se crea un catálogo de áreas de trabajo para el área de trabajo del metastore. Los administradores del área de trabajo son los propietarios predeterminados del catálogo de áreas de trabajo. Como propietarios, pueden administrar privilegios en el catálogo de áreas de trabajo y en todos los objetos secundarios.

Todos los usuarios del área de trabajo reciben el privilegio USE CATALOG en el catálogo de áreas de trabajo. Los usuarios del área de trabajo también reciben los privilegios USE SCHEMA, CREATE TABLE, CREATE VOLUME, CREATE MODEL, CREATE FUNCTION, y CREATE MATERIALIZED VIEW en el default esquema del catálogo.

Para más información, consulte Habilitación automática de Unity Catalog.

Modelo de herencia

Los objetos protegibles del catálogo de Unity son jerárquicos y los privilegios se heredan hacia abajo. El objeto de nivel más alto del que se heredan los privilegios es el catálogo. Esto significa que, al conceder un privilegio en un catálogo o esquema, se concede automáticamente dicho privilegio a todos los objetos actuales y futuros del catálogo o esquema. Por ejemplo, si concede a un usuario el privilegio SELECT en un catálogo, ese usuario podrá seleccionar (leer) todas las tablas y vistas de ese catálogo. Los privilegios concedidos en un metastore del catálogo de Unity no se heredan.

Jerarquía de objetos de Unity Catalog

A los propietarios de un objeto se les conceden automáticamente todos los privilegios en ese objeto. Además, los propietarios de objetos pueden conceder privilegios en el propio objeto y en todos sus objetos secundarios. Esto significa que los propietarios de un esquema no tienen automáticamente todos los privilegios en las tablas del esquema, pero pueden concederse privilegios a sí mismos en las tablas del esquema.

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.

Administración de privilegios

Puede administrar privilegios para objetos de metastore mediante comandos SQL, la CLI de Databricks, el proveedor de Databricks Terraform o el Explorador de catálogos.

En los comandos SQL siguientes, reemplace estos valores de marcador de posición:

  • <privilege-type> es un tipo de privilegio de Unity Catalog. Consulte Tipos de privilegios.
  • <securable-type>: Tipo de objeto protegible, como CATALOG o TABLE. Consulte Objetos protegibles
  • <securable-name>: nombre del objeto protegible. Si el tipo protegible es METASTORE, no proporcione el nombre protegible. Se supone que es el metastore asociado al área de trabajo.
  • <principal> es un usuario, una entidad de servicio (representada por su valor applicationId) o un grupo. Debe incluir usuarios, entidades de servicio y nombres de grupo que incluyan caracteres especiales en acentos graves (` `). Consulte Entidad de seguridad.

Mostrar concesiones en objetos en una metastore de Unity Catalog

Permisos necesarios: administrador de metastore, propietario del objeto, propietario del catálogo o esquema que contiene el objeto. También puede ver sus propias concesiones.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Seleccione el objeto, como un catálogo, un esquema, una tabla o una vista.
  3. Vaya a la pestaña Permisos.

Sql

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL. Puede mostrar concesiones en una entidad de seguridad específica, o puede mostrar todas las concesiones en un objeto protegible.

  SHOW GRANTS [principal] ON  <securable-type> <securable-name>

Por ejemplo, el siguiente comando muestra todas las concesiones en un esquema denominado default en el catálogo primario denominado main:

  SHOW GRANTS ON SCHEMA main.default;

El comando devuelve:

  principal     actionType     objectType objectKey
  ------------- -------------  ---------- ------------
  finance-team   CREATE TABLE  SCHEMA     main.default
  finance-team   USE SCHEMA    SCHEMA     main.default

Concesión de permisos en objetos en un metastore de Unity Catalog

Permisos necesarios: administrador de metastore, propietario del objeto o propietario del catálogo o esquema que contiene el objeto.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Seleccione el objeto, como un catálogo, un esquema, una tabla o una vista.
  3. Vaya a la pestaña Permisos.
  4. Haga clic en Conceder.
  5. Escriba la dirección de correo electrónico de un usuario o el nombre de un grupo.
  6. Seleccione los permisos que quiere conceder.
  7. Haga clic en OK.

Sql

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL.

  GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>

Por ejemplo, el siguiente comando concede a un grupo denominado finance-team acceso para crear tablas en un esquema denominado default con el catálogo primario denominado main:

  GRANT CREATE TABLE ON SCHEMA main.default TO `finance-team`;

Revocar permisos en objetos de un metastore de Unity Catalog

Permisos necesarios: administrador de metastore, propietario del objeto o propietario del catálogo o esquema que contiene el objeto.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Seleccione el objeto, como un catálogo, un esquema, una tabla o una vista.
  3. Vaya a la pestaña Permisos.
  4. Seleccione un privilegio que se haya concedido a un usuario, una entidad de servicio o un grupo.
  5. Haga clic en Revocar.
  6. Para confirmar, haga clic en Revoke (Revocar).

Sql

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL.

  REVOKE <privilege-type> ON <securable-type> <securable-name> TO <principal>

Por ejemplo, el siguiente comando revoca un grupo denominado finance-team acceso para crear tablas en un esquema denominado default con el catálogo primario denominado main:

  REVOKE CREATE TABLE ON SCHEMA main.default TO `finance-team`;

Mostrar concesiones en un metastore

Permisos necesarios: administrador de Metastore o administrador de cuenta. También puede ver sus propias concesiones en una tienda de metadatos.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Junto a la etiqueta de página Catalog Explorer, haga clic en el icono situado junto al nombre de metastore.
  3. Vaya a la pestaña Permisos.

Sql

Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL. Puede mostrar concesiones en una entidad de seguridad específica o puede mostrar todas las concesiones en un metastore.

  SHOW GRANTS [principal] ON METASTORE

Concesión de permisos en un metastore

Permisos necesarios: administrador de Metastore o administrador de cuenta.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Junto a la etiqueta de página Catalog Explorer, haga clic en el icono situado junto al nombre de metastore.
  3. En la pestaña Permisos, haga clic en Conceder.
  4. Escriba la dirección de correo electrónico de un usuario o el nombre de un grupo.
  5. Seleccione los permisos que quiere conceder.
  6. Haga clic en OK.

Sql

  1. Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL.

    GRANT <privilege-type> ON METASTORE TO <principal>`;
    

    Cuando se conceden privilegios en un metastore, no se incluye el nombre de metastore, ya que se presupone el metastore que está asociado al área de trabajo.

Revocar permisos en un metastore

Permisos necesarios: administrador de Metastore o administrador de cuenta.

Explorador de catálogos

  1. En el área de trabajo de Azure Databricks, haga clic en el Icono de catálogoCatálogo.
  2. Junto a la etiqueta de página Catalog Explorer, haga clic en el icono situado junto al nombre de metastore.
  3. En la pestaña Permisos, seleccione un usuario o grupo y haga clic en Revocar.
  4. Para confirmar, haga clic en Revoke (Revocar).

Sql

  1. Ejecute el siguiente comando SQL en un cuaderno o en un editor de consultas SQL.

    REVOKE <privilege-type> ON METASTORE TO <principal>;
    

    Cuando se revocan privilegios en un metastore, no se incluye el nombre de metastore, ya que se presupone el metastore que está asociado al área de trabajo.