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.
Note
En esta página se describe el comportamiento de evaluación y tiempo de ejecución para las directivas de filtro de fila y máscara de columnas, que usan UDF y que el entorno de ejecución de Databricks aplica durante la ejecución de la consulta. Para las GRANT políticas, véase políticas de ABACGRANT.
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áscaras 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 lleva a cabo los siguientes pasos utilizando los metadatos del objeto protegible (por ejemplo, las asignaciones de etiquetas reguladas) y la identidad del usuario que realiza la consulta y su pertenencia 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 filas o la máscara de columna efectivos en una vista segura sobre los exámenes de tabla que aplican el filtrado y el enmascaramiento durante la ejecución de la consulta. 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 de cierre 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 producen un error en lugar de omitir la aplicación. Para ejecutarlas, la entidad de seguridad debe aparecer en la cláusula EXCEPT de cada directiva 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 la entidad de seguridad que las ejecuta esté exenta incluyen actualizaciones de canalizaciones, 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
- OpenSharing, donde el propietario del recurso compartido debe estar exento de la directiva y tener los permisos de OpenSharing necesarios. Tenga en cuenta que la directiva no rige el acceso del destinatario.
- Creación y sincronización de índices de búsqueda de IA
Para obtener más información sobre estas y otras limitaciones, consulte Requisitos, cuotas y limitaciones para las directivas de filtro de fila y máscara de columna.
Dependencias de directivas eliminadas
Las directivas ABAC dependen de etiquetas gobernadas y UDF. Si se quita cualquiera de estas dependencias mientras una directiva sigue haciendo referencia a ellas, se producirá un error en las consultas sobre las tablas dentro del ámbito de la directiva.
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 a la que hace referencia una directiva mientras la directiva sigue estando dentro del ámbito, se producirá un error en las consultas sobre las tablas de ese ámbito con UC_DEPENDENCY_DOES_NOT_EXIST. Para resolverlo, restaure la función o actualice la directiva para hacer referencia a otra UDF.
Condiciones del atributo de identidad
Las funciones de atributo identidad (has_identity_attribute_value y has_identity_attribute_tag_match) resuelven de la siguiente manera:
- Si el usuario no tiene valor para el atributo, no tiene ningún atributo, o la política nombra un atributo que no existe, la función devuelve
false. No genera ningún error. Porque un valor que falta devuelvefalse, la frase condiciona de modo que un valor faltante restringe el acceso en lugar de concederlo. - Si una política incluye
has_identity_attribute_tag_matchuna clave de etiqueta administrada que no existe, se produce un error al crear la política.
Condiciones de atributos contextuales
Las funciones de atributos de contexto (has_context_attribute y has_context_attribute_value) resuelven de la siguiente manera:
-
request.client_idsolo está presente en algunas rutas de solicitud. Se configura para solicitudes en nombre de realizadas a través de una aplicación OAuth y, en caso contrario, no está presente.request.is_on_behalf_ofestá presente con un valor de'true'o'false', o está ausente en caminos de cómputo no soportados. - Cuando un atributo reconocido no está presente en la solicitud, la función devuelve
false; no genera un error. Formula las condiciones de modo que este resultado restrinja el acceso en lugar de concederlo. - Una clave que no es un atributo reconocido
request.*, como una clave mal escrita, genera un error de evaluación en lugar de resolver afalse. Usa los nombres exactosrequest.client_idyrequest.is_on_behalf_of.
Si desactiva la vista previa de Atributos de contexto ABAC de UC mientras aún existan directivas de filtro de filas o máscara de columnas que utilicen estas funciones, las consultas sobre los datos afectados fallarán con UC_ABAC_CONTEXT_ATTRIBUTE_FUNCTIONS_DISABLED en lugar de devolver silenciosamente ninguna fila. La gestión de políticas no se ve afectada. Aún puedes listar, modificar y eliminar políticas. Elimina o reescribe las políticas de atributos contextuales antes de desactivar la función.
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. La cláusulaUSING COLUMNSpasa valores de columna a la UDF. Si un alias en la cláusulaMATCH 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.
- Ajuste de entidades de seguridad. 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 desde directivas 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 ANSI SQL para las operaciones CAST (detalles completos de compatibilidad), con una adición: en Databricks Runtime 18.1 y versiones posteriores, las directivas de máscara de columna ABAC pueden convertir estructuras a VARIANT, lo que no se admite en SQL 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.