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.
La seguridad a nivel de fila (RLS) es una característica de seguridad de OneLake (versión preliminar) que permite definir restricciones de datos a nivel de fila para los datos tabulares almacenados en OneLake. Los usuarios pueden definir roles en OneLake que contienen reglas para filtrar filas de datos para los miembros de ese rol. Cuando un miembro de un rol de RLS va a consultar esos datos, las reglas de RLS se evalúan y solo se devuelven las filas permitidas.
Prerrequisitos
- Un elemento de OneLake con la seguridad de OneLake activada. Para obtener más información, consulta Introducción a los roles de acceso a datos de OneLake.
- Cambie el punto de conexión de SQL Analytics en lakehouse al modo "Identidad del usuario" a través de la pestaña Seguridad .
- Para crear modelos semánticos, siga los pasos para crear un modelo de DirectLake.
- Para obtener una lista completa de las limitaciones, consulte la sección limitaciones conocidas.
Aplicar seguridad de nivel de fila
La seguridad RLS de OneLake se aplica de una de estas dos maneras:
- Tablas filtradas en los motores de Fabric: las consultas a la lista de motores de Fabric compatibles, como cuadernos de Spark, dan como resultado que el usuario solo vea las filas que pueden ver según las reglas de RLS.
- Acceso bloqueado a tablas: las tablas con reglas de RLS aplicadas no se pueden leer fuera de los motores de Fabric admitidos.
En el caso de las tablas filtradas, se aplican los comportamientos siguientes:
- Las reglas de RLS no restringen el acceso a los usuarios en los roles de administrador, miembro y colaborador.
- Si la regla de RLS tiene una discrepancia con la tabla en la que se define, se produce un error en la consulta y no se devuelve ninguna fila. Por ejemplo, si la regla RLS hace referencia a una columna que no forma parte de la tabla.
- Las consultas de tablas de RLS producen un error si un usuario forma parte de dos roles diferentes y uno de los roles tiene seguridad a nivel de columna (CLS).
- Las reglas de RLS solo se pueden aplicar para los objetos que son tablas de Parquet delta.
- En su lugar, las reglas de RLS que se aplican a objetos de tabla no delta bloquean el acceso a toda la tabla para los miembros del rol.
- Es posible que se bloquee el acceso a una tabla si la instrucción RLS contiene errores de sintaxis que impiden que se evalúe.
Definición de reglas de seguridad a nivel de fila
Puede definir reglas de seguridad a nivel de fila como parte de cualquier rol de seguridad de OneLake que conceda acceso a los datos de tabla en formato Delta Parquet. Las filas son un concepto solo relevante para los datos tabulares, por lo que no se permiten definiciones de RLS para carpetas que no son de tabla ni datos no estructurados.
Las reglas de RLS usan la sintaxis SQL para especificar las filas que un usuario puede ver. Esta sintaxis adopta la forma de una instrucción SQL SELECT con las reglas RLS definidas en la cláusula WHERE. Las reglas de RLS solo admiten un subconjunto del lenguaje SQL tal como se define en las reglas de sintaxis. Las consultas con sintaxis RLS no válida o sintaxis RLS que no coincide con la tabla subyacente no dan lugar a que no se muestren filas a los usuarios o errores de consulta en el punto de conexión de análisis SQL.
Como procedimiento recomendado, evite usar expresiones RLS vagas o excesivamente complejas. Las expresiones fuertemente tipadas con búsquedas de enteros o cadenas con "=" serán las más seguras y fáciles de entender.
Siga estos pasos para definir reglas RLS:
Vaya a su instancia de Lakehouse y seleccione Administrar seguridad de OneLake (versión preliminar) .
Seleccione un rol existente para el que quiera definir la seguridad de la tabla o carpeta, o seleccione Nuevo para crear un nuevo rol.
En la página de detalles del rol, seleccione más opciones (...) junto a la tabla para la que desea definir RLS y, a continuación, seleccione Seguridad de fila (versión preliminar).
Escriba la instrucción SQL para definir qué filas desea que los usuarios vean en el editor de código. Use la sección reglas de sintaxis para obtener instrucciones.
Seleccione Guardar para confirmar las reglas de seguridad de fila.
Habilitación de la seguridad de OneLake para el punto de conexión de SQL Analytics
Para poder usar la seguridad de OneLake con el punto de conexión de SQL Analytics, debe habilitar el modo de identidad del usuario. Los puntos de conexión de SQL Analytics recién creados tendrán como valor predeterminado el modo de identidad del usuario, por lo que estos pasos deben seguirse para los puntos de conexión de SQL Analytics existentes.
Nota:
Solo es necesario cambiar al modo de identidad del usuario una vez por punto de conexión de SQL Analytics. Los puntos de conexión que no se cambian al modo de identidad del usuario seguirán usando una identidad delegada para evaluar los permisos.
Vaya al punto de conexión de análisis SQL.
En la experiencia del punto de conexión de SQL Analytics, seleccione la pestaña Seguridad de la cinta de opciones superior.
Seleccione Identidad del usuario en modo de acceso OneLake.
En el aviso, acepte Sí, utilice la identidad del usuario.
Ahora el punto de conexión de SQL Analytics está listo para usarse con la seguridad de OneLake.
Reglas de sintaxis
Todas las reglas de seguridad a nivel de fila tienen la siguiente forma:
SELECT * FROM {schema_name}.{table_name} WHERE {column_level_boolean_1}{column_level_boolean_2}...{column_level_boolean_N}
Por ejemplo:
SELECT * FROM Sales WHERE Amount>'50000' AND State='CA'
El número máximo de caracteres de una regla de seguridad de nivel de fila es 1 000.
| Marcador de posición | Descripción |
|---|---|
| {schema_name} | Nombre del esquema donde se encuentra {table_name}. Si el artefacto admite esquemas, se requiere {schema_name}. |
| {table_name} | Nombre de la tabla a la que se aplica el predicado RLS. Este valor debe ser una coincidencia exacta con el nombre de la tabla o los resultados de RLS no mostrará ninguna fila. |
| {nivel_de_columna_booleano} | Una instrucción booleana que contiene los siguientes componentes: * Nombre de columna: el nombre de una columna en {table_name} tal como se especifica en el esquema de registro delta. Los nombres de columna pueden tener el formato {column_name} o {table_name}. {column_name}. * Operador: uno de los operadores admitidos que evalúa el nombre y el valor de la columna en un valor booleano. * Valor: valor estático o conjunto de valores con los que se va a evaluar. Puede tener una o varias instrucciones booleanas separadas por AND u OR. |
Operadores compatibles
Las reglas de seguridad a nivel de fila admiten la siguiente lista de operadores y palabras clave:
| Operador | Descripción |
|---|---|
| = (es igual a) | Se evalúa como true si los dos valores son el mismo tipo de datos y hay coincidencias exactas. |
| <> (no es igual a) | Se evalúa como true si los dos valores no son el mismo tipo de datos y no hay coincidencias exactas. |
| > (mayor que) | Se evalúa como true si el valor de columna es mayor que el valor de evaluación. Para los valores de cadena, este operador usa la comparación bit a bit para determinar si una cadena es mayor que la otra. |
| >= (mayor o igual que) | Se evalúa como true si el valor de columna es mayor o igual que el valor de evaluación. Para los valores de cadena, este operador usa la comparación bit a bit para determinar si una cadena es mayor o igual que la otra. |
| < (menor que) | Se evalúa como true si el valor de columna es menor que el valor de evaluación. Para los valores de cadena, este operador usa la comparación bit a bit para determinar si una cadena es menor que la otra. |
| <= (menor o igual que) | Se evalúa como true si el valor de columna es menor o igual que el valor de evaluación. Para los valores de cadena, este operador usa la comparación bit a bit para determinar si una cadena es menor o igual que la otra. |
| EN | Se evalúa como true si alguno de los valores de evaluación es el mismo tipo de datos y coincide exactamente con el valor de columna. |
| NO | Se evalúa como true si alguno de los valores de evaluación no es el mismo tipo de datos o coincide exactamente con el valor de columna. |
| y | Combina la instrucción anterior y la instrucción posterior mediante una operación AND booleana. Ambas instrucciones deben ser true para que todo el predicado sea true. |
| O | Combina la instrucción anterior y la instrucción posterior mediante una operación AND booleana. Una de las instrucciones deben ser true para que todo el predicado sea true. |
| VERDADERO | La expresión booleana para true. |
| FALSO | La expresión booleana para false. |
| EN BLANCO | Tipo de datos en blanco, que se puede usar con el operador de IS. Por ejemplo: row IS BLANK. |
| NULO | Tipo de datos null, que se puede usar con el operador de IS. Por ejemplo: row IS NULL. |
Combinación de la seguridad a nivel de fila y a nivel de columna
La seguridad a nivel de fila y a nivel de columna se puede usar conjuntamente para restringir el acceso de usuario a una tabla. Sin embargo, las dos políticas deben aplicarse mediante un solo rol de seguridad de OneLake. En este escenario, el acceso a los datos se restringe según las reglas que se establecen en un rol.
La seguridad de OneLake no admite la combinación de dos o más roles en los que uno contiene reglas RLS y otro contiene reglas CLS. Los usuarios que intentan acceder a tablas que forman parte de una combinación de roles no compatibles reciben errores de consulta.