Microsoft Fabric 中的 SQL 粒度权限

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

当通过分配工作区角色或通过项权限授予的默认权限不足时,标准 SQL 构造可用于更精细的控制。

对于 SQL 分析终结点和仓库:

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

用户粒度权限

  • 为了支持用户连接到数据库,必须将用户分配到工作区角色或分配项读取权限。 如果没有最低程度的读取权限,连接将失败。
  • 如果要在允许用户连接到仓库之前设置用户的精细权限,可以先在 SQL 中设置权限。 然后,可以通过将他们分配到工作区角色或授予项权限来向他们授予访问权限。

限制

  • 当前无法显式执行 CREATE USER。 执行 GRANTDENY 时,会自动创建用户。 在授予足够的工作区级别权限之前,用户将无法连接。

查看我的权限

当用户连接到 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');

查看显式授予用户的权限

通过 SQL 连接字符串连接时,具有提升权限的用户可以使用系统视图查询授予的权限。 此操作不会显示用户或通过分配到工作区角色或分配的项权限向用户授予的用户权限。

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;

数据保护功能

可以将 Warehouse 或 SQL 分析终结点中表的列筛选器和基于预设的行筛选器固定为 Microsoft Fabric 中的角色和用户。 还可以使用动态数据掩码来屏蔽非管理员的敏感数据。