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 al que se accede a través de un punto de conexión de análisis SQL, ya que el origen de datos subyacente no ha cambiado.
Sólo se admite la autenticación Microsoft Entra. Para más información, vea Autenticación de Microsoft Entra como alternativa a la autenticación de SQL en Microsoft Fabric.
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'.