Microsoft Fabric 中的 SQL 细粒度权限

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

如果工作区角色分配或项权限中的默认权限未提供所需的控制级别,请使用Fabric仓库或 SQL 分析终结点中的标准 SQL 构造进行精细的访问控制。

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

  • 使用 GRANTREVOKEDENY T-SQL 语句管理对象级安全性。
  • 将用户分配到 SQL 角色,包括自定义数据库角色和内置数据库角色。

在Fabric仓库中配置用户精细权限

  • 若要让用户连接到 Fabric 仓库或 SQL 分析终结点,必须将其分配到某个工作区角色,或向其授予该项的 读取 权限。 如果没有最低程度的读取权限,连接将失败。
  • 若要在用户连接到仓库之前设置用户的精细权限,请先在 SQL 中定义权限。 然后,通过分配工作区角色或授予项权限来授予他们访问权限。

CREATE USER 限制

  • 你不能在 Fabric 仓库或 SQL 分析终结点中显式运行 CREATE USER。 当运行 GRANTDENY 时,Fabric 会自动创建数据库用户。 用户在同时具备足够的工作区级权限之前,无法连接。

查看我的权限

用户通过 SQL 连接字符串连接到Fabric仓库或 SQL 分析终结点后,可以使用 sys.fn_my_permissions 函数查看他们可用的权限。

当前用户的数据库作用域权限:

SELECT *
FROM sys.fn_my_permissions(NULL, 'Database');

当前用户的架构范围权限:

SELECT *
FROM sys.fn_my_permissions('<schema-name>', 'Schema');

当前用户的对象范围权限:

SELECT *
FROM sys.fn_my_permissions('<schema-name>.<object-name>', 'Object');

查看向Fabric仓库中的用户显式授予的权限

通过 SQL 连接字符串连接到 Fabric 仓库或 SQL 分析终结点时,具有较高权限的用户可以使用系统视图查询已授予的权限。 此查询不会返回用户通过Fabric工作区角色或项接收的权限。

SELECT DISTINCT pr.principal_id, pr.name, pr.type_desc,
    pr.authentication_type_desc, pe.state_desc, pe.permission_name
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe
    ON pe.grantee_principal_id = pr.principal_id;

Fabric仓库中的数据保护功能

在仓库和 SQL 分析终结点中,可以限制对特定列和表中特定行的访问,以及从非管理程序屏蔽敏感数据。