Automatizar los permisos del Catálogo de Unity de Azure Databricks a nivel de tabla

Descargo de responsabilidad: Todas las opiniones y puntos de vista expresados en el blog pertenecen exclusivamente al autor y no necesariamente al empleador del autor o a cualquier otro grupo o individuo. Este artículo no es una promoción para ninguna plataforma de gestión de datos/nube. Todas las imágenes y fragmentos de código están disponibles públicamente en el sitio web de Azure/Databricks.

En mis otros artículos de DZone, he discutido qué es Databricks Unity Catalog, cómo funciona el modelo de privilegios en Unity Catalog, nivel de esquema, y un script para automatizar la gestión de permisos tanto a nivel de catálogo como de esquema.

En este artículo, mi objetivo es proporcionar el script que automatizará la gestión de permisos a nivel de tabla en el Unity Catalog.

Privilegios a Nivel de Tabla en el Unity Catalog

Unity Catalog privilege model

En Unity Catalog (Databricks), aplicar permisos a nivel de tabla es necesario cuando deseas controlar el acceso a tablas o vistas específicas, en lugar de aplicar permisos a todos los objetos dentro de un esquema. Los permisos a nivel de tabla son útiles en los siguientes escenarios:

1. Control de Acceso Granular

Cuando necesitas otorgar o restringir el acceso a tablas o vistas específicas sin afectar todo el esquema.

Esto es especialmente importante cuando un esquema contiene datos sensibles y deseas permitir el acceso a algunas tablas mientras limitas el acceso a otras.

2. Protección de Datos Sensibles

Si ciertas tablas dentro de un esquema contienen datos confidenciales o restringidos (por ejemplo, información personal identificable, datos financieros), puedes aplicar permisos a nivel de tabla para asegurar que solo los usuarios autorizados puedan ver o consultar esas tablas.

Por ejemplo, podrías permitir el acceso a algunas tablas de datos resumidos o agregados pero restringir el acceso a tablas crudas y detalladas que contienen información sensible.

3. Delegación de Acceso a Equipos/Usuarios Específicos Si el Esquema Contiene Tablas Destinadas a Múltiples Equipos

Cuando diferentes usuarios o equipos necesitan acceso a diferentes tablas dentro del mismo esquema. Por ejemplo, el equipo de ventas podría necesitar acceso a tablas relacionadas con clientes, mientras que el equipo financiero necesita acceso a tablas de ingresos.

Aplicar permisos a nivel de tabla asegura que cada equipo solo pueda acceder a las tablas relevantes para su trabajo.

4. Cumplimiento de Gobernanza de Datos

Cuando se aplican políticas estrictas de gobernanza de datos, es posible que necesites controlar el acceso a un nivel más detallado (hasta tablas individuales). Los permisos a nivel de tabla ayudan a garantizar el cumplimiento al otorgar acceso solo a los datos con los que un usuario o rol está autorizado a trabajar.

5. Manejo de Diversas Necesidades de Acceso Dentro de un Esquema

En casos en los que un esquema contiene tablas con diferentes niveles de sensibilidad o confidencialidad, aplicar permisos a nivel de esquema puede ser demasiado amplio. Los permisos a nivel de tabla te permiten gestionar el acceso para cada tabla individualmente según necesidades específicas.

Permisos que se pueden aplicar a nivel de tabla 

  • SELECT: Concede acceso de lectura a la tabla, permitiendo a los usuarios hacer consultas sobre ella.
  • MODIFY: Otorga la habilidad de agregar, eliminar y modificar datos en u desde un objeto.
  • APPLY TAG: Otorga la capacidad de aplicar etiquetas a un objeto.
  • ALL PRIVILEGES: Otorga todos los privilegios.

Automatización del Script

Prerrequisitos

  • El Catálogo Unity ya está configurado.
  • El/los Principales están asociados con el espacio de trabajo de Databricks.
  • El usuario que ejecuta el script de permisos tiene los permisos adecuados en la(s) tabla(s), esquema y catálogo.

Paso 1: Crear un Cuaderno y Declarar las Variables 

Crea un cuaderno en el espacio de trabajo de Databricks. Para crear un cuaderno en tu espacio de trabajo, haz clic en el “+” Nuevo en la barra lateral, y luego elige Cuaderno

Se abre un cuaderno en blanco en el espacio de trabajo. Asegúrate de que Python esté seleccionado como el lenguaje del cuaderno.

Copia y pega el fragmento de código a continuación en la celda del cuaderno y ejecuta la celda.

Python

 

Paso 2: Establecer el Catálogo y el Esquema

Copia, pega y ejecuta el bloque de código a continuación en una celda nueva o existente y ejecuta la celda.

Python

 

Paso 3: Iterar a través de los Principales y Privilegios y Aplicar la Concesión en el Catálogo, Esquema y Tablas

Copia, pega y ejecuta el bloque de código a continuación en una celda nueva o existente, luego ejecuta la celda para aplicar los permisos.

Python

 

Validación

Puedes validar los privilegios abriendo la interfaz de Databricks y navegando a “Catálogo” en el Explorador de Datos. Una vez que el catálogo aparezca en la sección de Datos, haz clic en el catálogo, luego expande el esquema y selecciona la tabla dentro del esquema donde has aplicado los permisos, y ve a la pestaña “permisos”. Ahora puedes ver todos los privilegios aplicados a la tabla. A continuación se muestra la captura de pantalla de los permisos aplicados en la tabla de catálogo predefinida dentro del catálogo principal y el esquema information_schema.

También puedes ejecutar el siguiente script SQL en un cuaderno para mostrar todos los permisos de una tabla como parte de tu validación.

SQL

 

Conclusión

Automatizar la gestión de privilegios en Databricks Unity Catalog a nivel de tabla ayuda a garantizar un enfoque consistente y eficiente para aplicar permisos en el nivel más bajo en Unity Catalog. El código proporcionado demuestra una forma práctica de asignar múltiples privilegios a nivel de tabla para múltiples principales y tablas en un solo catálogo y esquema. En un catálogo donde hay cientos de tablas presentes y se necesitan proporcionar diferentes permisos para diferentes principales, la automatización anterior reduce significativamente los errores manuales y el esfuerzo.

Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-table-level