Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta página se explica cómo se evalúan las directivas de ABAC en el momento de la consulta, entre las que se incluyen:
- Cómo se controlan los conflictos entre varias directivas
- Funcionamiento de la conversión de tipos de máscara de columna
- ¿Qué medidas de seguridad impiden la exposición de datos cuando se eliminan etiquetas o funciones de las que depende una directiva?
Evaluación y cumplimiento de directivas
Cuando un usuario consulta una tabla, la evaluación de ABAC continúa en dos fases: la evaluación de directivas en el catálogo de Unity y la aplicación de directivas en Databricks Runtime.
Es posible que distintos usuarios vean resultados diferentes de la misma consulta porque la evaluación de directivas depende de la identidad del usuario, las pertenencias a grupos y las etiquetas de los datos a los que acceden. Los cambios en la pertenencia a grupos o las asignaciones de etiquetas modifican dinámicamente las directivas vigentes en el momento de la consulta.
Evaluación de directivas (Catálogo de Unity)
Unity Catalog realiza los siguientes pasos usando los metadatos de los elementos securizables (por ejemplo, las asignaciones de etiquetas reguladas) y la identidad del usuario que realiza la consulta y sus pertenencias a grupos:
- Identifica todas las directivas cuyo ámbito abarca la tabla consultada.
- Para cada una de estas directivas, comprueba si el usuario que realiza la consulta está en la
TOlista y no en laEXCEPTlista. - Para cada directiva, evalúa las condiciones de tabla y columna con respecto a las etiquetas del objeto consultado, incluidas las etiquetas heredadas. Las condiciones de columna deben coincidir con al menos una columna.
- Si se aplica la directiva, determina el filtro de fila o la máscara de columna efectivos y los envía al entorno de ejecución de Databricks como parte de los metadatos de la tabla.
Aplicación de políticas (Databricks Runtime)
El planificador de consultas de Databricks Runtime traduce el filtro de fila eficaz o la máscara de columna eficaz en una vista segura basada en los escaneos de tabla que aplican el filtrado y el enmascaramiento durante la ejecución de consultas. Este es el mismo mecanismo de aplicación que se usa para filtros de fila a nivel de tabla y máscaras de columna.
Diseño cerrado por error
ABAC sigue un modelo de fallo restringido, donde Azure Databricks está configurado por defecto para denegar el acceso si no puede verificar la seguridad. Azure Databricks solo permite el acceso a tablas protegidas con ABAC cuando puede aplicar de forma segura todas las directivas aplicables. Esto se aplica a versiones de computación no admitidas, operaciones específicas en los datos de tabla subyacentes y situaciones en las que se han quitado las dependencias de una directiva (etiquetas o funciones).
Versiones de computación no admitidas
Las directivas de ABAC requieren Databricks Runtime 16.4 o posterior, o proceso sin servidor. Si un usuario intenta acceder a una tabla protegida con ABAC desde una versión no admitida, la consulta falla de forma cerrada (se deniega el acceso) para evitar la exposición de datos desprotegidos.
En modo de acceso dedicado, Azure Databricks delega la aplicación a la computación sin servidor para garantizar que se apliquen controles de acceso específicos. Para permitir que los usuarios de entornos de ejecución anteriores accedan a estas tablas, debe excluirlas explícitamente de las directivas.
Operaciones no admitidas en datos protegidos
Algunas operaciones son incompatibles con filtros de fila o máscaras de columna. Estas operaciones fallan en lugar de eludir el cumplimiento. Para ejecutarlos, el principal debe aparecer en la EXCEPT cláusula de cada directiva de ABAC que se aplique a la tabla. Las entidades de seguridad exentas no están sujetas a la directiva, por lo que Azure Databricks no necesita aplicarla y puede permitir la operación de forma segura.
Las operaciones que requieren que el principal de ejecución esté exento incluyen renovaciones de canalización, procesos de copia de seguridad y flujos de trabajo administrativos, como los siguientes.
- Acceso a tablas protegidas por ABAC desde entornos de computación con versiones de Databricks Runtime inferiores a la 16.4
- Consultas de viaje de tiempo
- Clonación profunda y superficial
- Delta Sharing, donde el propietario del recurso compartido debe estar exento de dicha directiva y tener los permisos de Delta Sharing necesarios. Tenga en cuenta que la directiva no rige el acceso del destinatario.
- Creación y sincronización de índices de búsqueda vectorial
Para obtener más información sobre estas y otras limitaciones, consulte Requisitos, cuotas y limitaciones de ABAC.
Dependencias de directivas eliminadas
Las directivas de ABAC dependen de etiquetas gobernadas y UDFs. Si se elimina alguna de estas dependencias mientras una directiva aún hace referencia a ellas, las consultas contra las tablas en el ámbito de la directiva fallan.
Eliminación de etiquetas gestionadas
Si elimina una etiqueta gobernada a la que hace referencia una política ABAC, todas las consultas contra el objeto al que está adjunta la política y sus objetos secundarios fallan con un error INVALID_PARAMETER_VALUE.UC_ABAC_UNKNOWN_TAG_POLICY. Esto ocurre incluso si la etiqueta no se aplicó a las tablas consultadas.
Cuando se elimina una etiqueta regulada, se convierte en una etiqueta no administrada. Se quitan las restricciones de valor permitidas y cualquier persona con APPLY TAG puede modificar valores sin privilegios ASSIGN .
Advertencia
La interfaz de usuario y la API no impiden eliminar una etiqueta regulada a la que se hace referencia en una directiva de ABAC. Antes de eliminar una etiqueta regulada, asegúrese de que ninguna directiva de ABAC haga referencia a ella.
Para resolver el error, restaure la etiqueta eliminada o actualice o elimine la directiva que hace referencia a ella. Consulte Creación y administración de etiquetas reguladas.
Eliminación de una columna etiquetada
Azure Databricks impide eliminar una columna que tenga aplicada una etiqueta regulada. Para quitar la columna, un usuario con ASSIGN en la etiqueta y APPLY TAG en el objeto debe quitar primero la etiqueta y, a continuación, se puede eliminar la columna.
Esto es relevante para canalizaciones declarativas y otros flujos de trabajo automatizados que modifican esquemas de tabla. Si una canalización intenta quitar una columna etiquetada, se produce un error en la operación. Para desbloquear la canalización, un usuario con los permisos de etiqueta necesarios debe quitar la etiqueta, ejecutar la canalización para que el cambio de esquema se realice correctamente y, a continuación, vuelva a aplicar la etiqueta a las columnas pertinentes. Si la etiqueta no se vuelve a aplicar, se producirá un error en las consultas sobre los datos porque la directiva sigue en el alcance, pero la etiqueta esperada ya no está en el objeto.
Eliminación de funciones a las que se hace referencia a directivas
Si se elimina una UDF referenciada por una directiva mientras la directiva sigue dentro de su alcance, las consultas en las tablas dentro de ese alcance producen un error con UC_DEPENDENCY_DOES_NOT_EXIST. Para resolverlo, restaure la función o actualice la directiva para hacer referencia a otra UDF.
Reglas para varios filtros y máscaras
Solo se puede aplicar un filtro de fila distinto en el momento de la consulta para una tabla y un usuario concretos. Del mismo modo, solo una máscara de columna distinta por columna puede resolverse en tiempo de ejecución para una columna y un usuario determinado. Esto evita resultados ambiguos.
Si se aplican varios filtros o máscaras distintos al mismo usuario y tabla (o columna), Azure Databricks bloquea el acceso y devuelve un error. Por ejemplo:
- Un filtro o máscara a nivel de tabla entra en conflicto con una política ABAC. Una tabla o columna que ya tiene un filtro de fila aplicado manualmente o una máscara de columna entra en conflicto con cualquier filtro o máscara definido por ABAC en el mismo destino.
- La cláusula
USING COLUMNSde un filtro de fila hace referencia a un aliasMATCH COLUMNSque coincide con varias columnas. LaUSING COLUMNScláusula pasa valores de columna a la UDF. Si un alias en la cláusulaUSING COLUMNScoincide con más de una columna, el motor no puede determinar qué columna pasar a la UDF, y la consulta falla con un error. - Se hace referencia a una columna enmascarada en la
USING COLUMNScláusula de otra directiva. Si una directiva enmascara una columna, no se puede usar como argumento de entrada en laUSING COLUMNScláusula de otra directiva.
Varias directivas de ABAC pueden coexistir para la misma tabla o columna si dan como resultado el mismo filtro o máscara efectivos. Por ejemplo, dos políticas que hacen referencia a la misma UDF con los mismos argumentos se resuelven en el mismo filtro o máscara y no entran en conflicto.
Resolución de conflictos de directivas
Cuando Azure Databricks detecta varios filtros o máscaras distintos durante la evaluación de directivas para un usuario determinado, produce un error INVALID_PARAMETER_VALUE.UC_ABAC_MULTIPLE_ROW_FILTERS o COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS y bloquea el acceso a la tabla hasta que se resuelva el conflicto.
Para diagnosticar y resolver:
- Use
SHOW EFFECTIVE POLICIESpara ver todas las directivas que se aplican a la tabla. - Compruebe
INFORMATION_SCHEMA.ROW_FILTERSyINFORMATION_SCHEMA.COLUMN_MASKSpara identificar cualquier filtro de fila o máscara de columna a nivel de tabla que pueda entrar en conflicto. - Compruebe qué políticas se superponen en sus
TO/EXCEPTprincipales yWHEN/MATCH COLUMNScondiciones. - Resuelva por:
- Refinamiento de las condiciones de la política. Actualizar
WHENoMATCH COLUMNScláusulas para que sean más específicas, por lo que las directivas distintas tienen como destino tablas o columnas diferentes. - Ajuste de las etiquetas gobernadas. Revise las asignaciones de etiquetas en columnas o tablas que desencadenen coincidencias de directivas no deseadas y quite o actualícelas.
- Ajustar los principales. Actualiza las cláusulas
TO/EXCEPTpara que cada usuario esté cubierto como máximo por una política por tabla (para filtros de fila) o por columna (para máscaras de columna). - Reestructuración de las políticas. Consolide las directivas superpuestas en una sola directiva o divida directivas amplias en directivas independientes dirigidas explícitamente.
- Refinamiento de las condiciones de la política. Actualizar
Conversión automática de tipos para máscaras de columna
Azure Databricks convierte automáticamente tanto la entrada como la salida de las funciones de máscara de columna resueltas a partir de directivas de ABAC. El valor de la columna de entrada se convierte para que coincida con el tipo de parámetro de la función mask y la salida de la función se convierte para que coincida con el tipo de datos de la columna de destino. Esto garantiza la coherencia de tipos y el comportamiento de consulta confiable al enmascarar columnas. La conversión automática funciona de la siguiente manera:
- Ejecución de funciones de enmascaramiento: cuando la evaluación de directivas determina que se aplica el enmascaramiento, la función de enmascaramiento se ejecuta en los valores de columna coincidentes.
- Conversión automática de tipos: Azure Databricks convierte el valor de la columna de entrada para que coincida con el tipo de parámetro de la función y convierte la salida de la función para que coincida con el tipo de datos de la columna de destino.
- Resultado devuelto: el resultado correctamente tipado se devuelve a la petición.
Si los tipos de entrada o salida no son compatibles, se produce un error en la conversión y la consulta devuelve un error en tiempo de ejecución. La conversión sigue los estándares de ANSI SQL para CAST operaciones (detalles completos de compatibilidad), con una excepción adicional: a partir de Databricks Runtime 18.1 y versiones posteriores, las políticas de máscaras de columnas de ABAC pueden realizar "casting" de estructuras a VARIANT, lo cual no se admite en SQL en general.
Debe asegurarse de que las funciones de máscara devuelven tipos compatibles con las columnas de destino. Consulte Funciones de enmascaramiento compatibles con CAST para obtener ejemplos y el método VARIANT para un enmascaramiento flexible a través de tipos de columnas.