Fabric 数据仓库中的列级别安全性

适用于:SQL 分析终结点和 Microsoft Fabric 中的仓库

列级别安全性简化了应用程序中的安全性设计和编程,使你能够限制列访问权限以保护敏感数据。 例如,确保具体用户只能访问表中与其部门相关的特定列。

数据级别的行级别安全性

访问限制逻辑位于数据库层中,而不是任何单个应用程序层中。 每次尝试从任何应用程序或报告平台(包括 Power BI)访问数据时,数据库都会应用访问限制。 此限制会减少整个安全系统的外围应用,从而提高安全措施的可靠性。

列级别安全性仅适用于 Fabric 中仓库或 SQL 分析终结点上的查询。 Direct Lake 模式下仓库的 Power BI 查询将回退到 Direct Query 模式,以遵守列级别安全性。

将特定列的访问权限限制为特定用户

此外,列级别安全性比为用户强制访问限制而设计额外视图来筛选列更简单。

使用 GRANT T-SQL 语句实现列级别安全性。 为了简化管理,首先将权限分配给角色,而不是使用个人。

列级别安全性应用于共享仓库或湖屋,因为基础数据源未更改。

仅支持 Microsoft Entra 身份验证。

示例

此示例将创建一个表,并将限制 charlie@contoso.com 可在 customers 表中看到的列。

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);

我们将允许 Charlie 仅访问与客户相关的列,而不允许访问敏感 CreditCard 列:

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

如果包含 CreditCard 列,则以 charlie@contoso.com 身份执行的查询便会失败:

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'.

下一步