Seguridad de nivel de columna en el almacenamiento de datos de Fabric

Se aplica a: punto de conexión de análisis SQL y Almacenamiento de datos en Microsoft Fabric

La seguridad de nivel de columna simplifica el diseño y la codificación de la seguridad de la aplicación y esto le permite restringir el acceso a las columnas para proteger información confidencial. Por ejemplo, garantiza que determinados usuarios puedan acceder solo a ciertas columnas de una tabla pertenecientes a su departamento.

Seguridad de nivel de columna en el nivel de datos

La lógica de restricción de acceso se encuentra en el nivel de base de datos, no en ningún nivel de aplicación único. La base de datos aplica las restricciones de acceso cada vez que se intenta acceder a los datos, desde cualquier aplicación o plataforma de informes, incluido Power BI. Esta restricción hace que la seguridad resulte más sólida y confiable, ya que reduce el área expuesta del sistema de seguridad global.

La seguridad en el nivel de columna solo se aplica a las consultas en un almacén de lago o punto de conexión de análisis SQL en Fabric. Las consultas de Power BI en un almacenamiento en modo Direct Lake se revertirán al modo Direct Query para cumplir la seguridad de nivel de columna.

Restringir el acceso a determinadas columnas a determinados usuarios

Además, la seguridad de nivel de columna es más sencilla y que diseñar vistas adicionales para filtrar las columnas para imponer restricciones de acceso a los usuarios.

Puede implementar este tipo de seguridad con la instrucción GRANT de T-SQL. Para simplificar la administración, se prefiere asignar permisos a roles mediante usuarios.

La seguridad de nivel de columna se aplica al almacén compartido o lakehouse, ya que el origen de datos subyacente no ha cambiado.

Sólo se admite la autenticación Microsoft Entra.

Ejemplos

En este ejemplo se creará una tabla y se limitarán las columnas que charlie@contoso.com pueden ver en la customers tabla.

CREATE TABLE dbo.Customers
  (CustomerID int,
   FirstName varchar(100) NULL,
   CreditCard char(16) NOT NULL,
   LastName varchar(100) NOT NULL,
   Phone varchar(12) NULL,
   Email varchar(100) NULL);

Permitiremos que Charlie solo acceda a las columnas relacionadas con el cliente, pero no a la columna confidencial CreditCard :

GRANT SELECT ON Customers(CustomerID, FirstName, LastName, Phone, Email) TO [Charlie@contoso.com];

Las consultas ejecutadas como charlie@contoso.com producirán un error si incluyen la columna CreditCard:

SELECT * FROM Customers;
Msg 230, Level 14, State 1, Line 12
The SELECT permission was denied on the column 'CreditCard' of the object 'Customers', database 'ContosoSales', schema 'dbo'.

Paso siguiente