基于角色的访问控制 (RBAC)

OneLake RBAC 使用角色分配为成员应用权限。 可以将角色分配给个人或安全组、Microsoft 365 组和通讯组列表。 用户组中的每个成员都将获得分配的角色。

如果某人属于两个或更多安全组或 Microsoft 365 组,其将获得角色提供的最高级别的权限。 如果嵌套用户组并将一个角色分配给某个组,则包含的所有用户都会获得权限。

OneLake RBAC 允许用户仅为湖屋项定义数据访问角色。

OneLake RBAC 通过工作区查看器限制用户对数据的访问,或者限制用户对湖屋的读取访问。 它不适用于工作区管理员、成员或参与者。 因此,OneLake RBAC 仅支持读取级别的权限。

如何创建 RBAC 角色

可以通过湖屋数据访问设置定义和管理 OneLake RBAC 角色。

有关详细信息,请参阅数据访问角色入门

湖屋中的默认 RBAC 角色

当用户创建新的湖屋时,OneLake 将生成一个名为 Default Readers 的默认 RBAC 角色。 该角色允许所有具有 ReadAll 权限的用户读取项中的所有文件夹。

下面是默认的角色定义:

Fabric 项 角色名称 权限 包含的文件夹 分配的成员
Lakehouse DefaultReader ReadAll Tables/Files/ 下的所有文件夹 所有具有 ReadAll 权限的用户

注意

若要限制对特定用户或特定文件夹的访问,必须修改默认角色或删除该角色,并创建新的自定义角色。

OneLake RBAC 中的继承

对于任何给定文件夹,OneLake RBAC 权限始终继承到文件夹文件和子文件夹的整个层次结构。

例如,给定 OneLake 中湖屋的以下层次结构。

Tables/
──── (empty folder)
Files/
────folder1
│   │   file11.txt
│   │
│   └───subfolder11
│       │   file1111.txt
|       │
│       └───subfolder111
|            │   file1111.txt
│   
└───folder2
    │   file21.txt

对于给定的层次结构,Role1Role2 OneLake RBAC 权限按以下方式继承:

角色 权限 权限中定义的文件夹 继承权限的文件夹和文件
Role1 Read folder1
│   │   file11.txt
│   │
│   └───subfolder11
│       │   file1111.txt
|       │
│       └───subfolder111
|            │   file1111.txt
Role2 Read folder2
    │   file21.txt

OneLake RBAC 中的遍历和列表

OneLake RBAC 可自动遍历父项,确保数据易于发现。 授予用户读取 subfolder11 的权限将授予用户列出和遍历父目录 folder1 的能力。 此功能类似于 Windows 文件夹权限,其中授予对子文件夹的访问权限,允许发现和遍历父目录。 授予父级的列表和遍历不会扩展到直接父级以外的其他项,以确保其他文件夹是安全的。

例如,给定 OneLake 中湖屋的以下层次结构。

Tables/
──── (empty folder)
Files/
────folder1
│   │   file11.txt
│   │
│   └───subfolder11
│       │   file111.txt
|       │
│       └───subfolder111
|            │   file1111.txt
│   
└───folder2
    │   file21.txt

对于给定的层次结构,“Role1”的 OneLake RBAC 权限提供以下访问权限。 请注意,对 file11.txt 的访问是不可见的,因为它不是 subfolder11 的父级。 同样,对于 Role2,file111.txt 也不可见。

角色 权限 权限中定义的文件夹 继承权限的文件夹和文件
Role1 Read subfolder11
Files/
────folder1
│   │
│   └───subfolder11
│       │   file111.txt
|       │
│       └───subfolder111
|            │   file1111.txt
Role2 Read subfolder111
Files/
────folder1
│   │
│   └───subfolder11
|       │
│       └───subfolder111
|            │   file1111.txt

对于快捷方式,列表行为略有不同。 外部数据源的快捷方式的行为与文件夹的行为相同,但其他 OneLake 位置的快捷方式具有特殊的行为。 对 OneLake 快捷方式的访问由快捷方式的目标权限决定。 列出快捷方式时,不会调用以检查目标访问。 因此,在列出目录时,无论用户对目标的访问权限如何,都将返回所有内部快捷方式。 当用户尝试打开快捷方式时,访问检查将进行评估,用户只能看到拥有所需权限的数据。 有关快捷方式的详细信息,请参阅快捷方式安全性部分

下面的示例使用了以下文件夹层次结构。

Files/
────folder1
│   
└───shortcut2
|
└───shortcut3
角色 权限 权限中定义的文件夹 列出文件的结果
Role1 Read folder1
Files/
────folder1
│   
└───shortcut2
|
└───shortcut3
Role2 N/A N/A
Files/
│   
└───shortcut2
|
└───shortcut3

如何使用 Fabric 权限评估 OneLake RBAC 权限

工作区和项权限允许你授予对 OneLake 中给定项数据的“粗粒度”访问权限。 OneLake RBAC 权限允许你将 OneLake 中的数据访问仅限于特定文件夹。

显示工作区、项和 RBAC 的权限评估顺序的示意图。

OneLake RBAC 和工作区权限

工作区权限是 OneLake 中数据的第一个安全边界。 每个工作区表示一个域或项目区域,团队可在其中协作处理数据。 通过 Fabric 工作区角色管理工作区中的安全性。 详细了解 fabric 基于角色的访问控制 (RBAC):工作区角色

Fabric 中的工作区角色有权在 OneLake 中执行以下操作。

权限 管理员 成员 参与者 查看者
在 OneLake 中查看文件 始终*是 始终*是 始终*是 默认为否。 使用 OneLake RBAC 授予访问权限。
在 OneLake 中写入文件 始终*是 始终*是 始终*是

注意

*由于工作区管理员、成员和参与者角色会自动向 OneLake 授予写入权限,因此它将替代任何 OneLake RBAC 读取权限。

工作区角色 OneLake 是否应用 RBAC 读取权限?
管理员、参与者、成员 否,OneLake 安全性将忽略任何 OneLake RBC 读取权限
查看器 是,如果已定义,将应用 OneLake RBAC 读取权限

OneLake RBAC 和湖屋权限

在工作区中,可以为 Fabric 项配置独立于工作区角色的权限。 可以通过共享项或管理项的权限来配置权限。 以下权限决定了用户能否对 OneLake 中的数据执行操作。

湖屋权限

湖屋权限 能否在 OneLake 中查看文件? 能否在 OneLake 中写入文件? 是否可以通过 SQL 分析终结点读取数据?
读取 默认为否,使用 OneLake RBAC 授予访问权限。
ReadAll 默认为是。 使用 OneLake RBAC 限制访问权限。
Execute、Reshare、ViewOutput、ViewLogs N/A - 不能自行授予 N/A - 不能自行授予 N/A - 不能自行授予

OneLake RBAC 和湖屋 SQL 分析终结点权限

SQL 分析终结点是从 Microsoft Fabric 中的湖屋自动生成的仓库。 客户可以从湖屋的“湖”视图(它支持数据工程和 Apache Spark)转换为同一湖屋中的“SQL”视图。 有关 SQL 分析终结点的更多信息,请访问数据仓库文档:SQL 分析终结点

SQL 分析终结点权限 用户可以通过 OneLake 终结点查看文件? 用户可以通过 OneLake 终结点写入文件? 用户可以通过 SQL 分析终结点读取数据?
读取 默认为否,使用 OneLake RBAC 授予访问权限。 默认为否,但可以配置 SQL 精细权限
ReadData 默认为否。 使用 OneLake RBAC 授予访问权限。

OneLake RBAC 和默认湖屋语义模型权限

在 Microsoft Fabric 中,当用户创建湖屋时,系统还会预配关联的默认语义模型。 默认语义模型具有基于湖屋数据的指标。 语义模型允许 Power BI 加载用于报告的数据。

默认语义模型权限 能否在 OneLake 中查看文件? 能否在 OneLake 中写入文件? 可以查看语义模型中的架构? 可以读取语义模型中的数据?
读取 默认为否,使用 OneLake RBAC 授予访问权限。 默认为是。 可使用 Power BI 对象级安全性Power BI 行级安全性来限制
生成 默认为是。 使用 OneLake RBAC 限制访问权限。
重新共享 N/A - 不能自行授予 N/A - 不能自行授予 N/A - 不能自行授予 N/A - 不能自行授予

湖屋共享和 OneLake RBAC 权限

当用户共享湖屋时,他们可向其他用户或一组用户授予访问湖屋的权限,而无需授予对工作区及工作区其余项的访问权限。 可以通过数据中心或 Microsoft Fabric 中的“与我共享”部分查找共享湖屋。

当某人共享湖屋时,他们还可授予对 SQL 分析终结点和关联的默认语义模型的访问权限。

湖屋“向人员授予访问权限”屏幕的屏幕截图。

共享选项 能否在 OneLake 中查看文件? 能否在 OneLake 中写入文件? 是否可以通过 SQL 分析终结点读取数据? 可以查看和生成语义模型?
未选择其他权限 默认为否,使用 OneLake RBAC 授予访问权限。 No
读取所有 Apache Spark 默认为是。 使用 OneLake RBAC 限制访问权限。 No
读取所有 SQL 终结点数据 默认为否,使用 OneLake RBAC 授予访问权限。
在默认数据集上生成报告 默认为是。 使用 OneLake RBAC 限制访问权限。 No

详细了解数据共享权限模型:

快捷方式

内部快捷方式中的 OneLake RBAC

对于湖屋中的任何文件夹,RBAC 权限始终继承到此文件夹定义为目标的所有内部快捷方式

当用户通过指向另一个 OneLake 位置的快捷方式访问数据时,将使用调用用户的标识来授权访问快捷方式的目标路径中的数据*。 因此,该用户必须在目标位置拥有 OneLake RBAC 权限才能读取数据。

重要

通过 Power BI 语义模型或 T-SQL 访问快捷方式时,调用用户的标识不会传递到快捷方式目标。 而是改为传递调用项所有者的标识,从而将访问权限委托给调用用户。

不允许为内部快捷方式定义 RBAC 权限,必须在位于目标项中的目标文件夹上定义。 由于定义 RBAC 权限仅限于湖屋项,因此 OneLake 只能为湖屋项中针对文件夹的快捷方式启用 RBAC 权限。

下表说明了定义 OneLake RBAC 权限时是否支持相应的快捷方式。

内部快捷方式场景 支持 OneLake RBAC 权限? 评论
lakehouse1 中的快捷方式指向位于同一湖屋中的 folder2。 支持。 若要限制对快捷方式中数据的访问,请为 folder2 定义 OneLake RBAC。
lakehouse1 中的快捷方式指向位于另一 lakehouse2 中的 folder2 若要限制对快捷方式中数据的访问,请为 lakehouse2 中的 folder2 定义 OneLake RBAC。
湖屋中指向位于数据仓库中表的快捷方式 不支持。 OneLake 不支持在数据仓库中定义 RBAC 权限。 访问权限是基于 ReadAll 权限确定的。
湖屋中指向位于 KQL 数据库中表的快捷方式 不支持。 OneLake 不支持在 KQL 数据库中定义 RBAC 权限。 访问权限是基于 ReadAll 权限确定的。

外部快捷方式(ADLS、S3、Dataverse)中的 OneLake RBAC

OneLake 支持为 ADLS、S3 和 Dataverse 等快捷方式定义 RBAC 权限。 这种情况下,将在为此类快捷方式启用的委派授权模型之上应用 RBAC 模型。

假设 user1 在湖屋中创建了一个 S3 快捷方式,它指向 AWS S3 存储桶中的文件夹。 然后,user2 尝试访问此快捷方式中的数据。

S3 连接是否授权委派 user1 访问? OneLake RBAC 是否授权请求 user2 访问? 结果:user2 是否可以访问 S3 快捷方式中的数据?
No No
No No

必须为快捷方式的整个范围(整个目标文件夹)定义 RBAC 权限,但以递归方式继承到其所有子文件夹和文件。

有关 S3、ADLS 和 Dataverse 快捷方式的更多信息,请参阅 OneLake 快捷方式

OneLake RBAC 中的限制

下表提供了 OneLake 数据访问角色的限制。

场景 限制
每个 Fabric 项的最大 OneLake RBAC 角色数 每个湖屋项最多 250 个角色。
每个 OneLake RBAC 角色的最大成员数 每个角色最多 500 个用户和用户组。
每个 OneLake RBAC 角色的最大权限数 每个角色最多 500 个权限

OneLake RBAC 中的延迟

  • 如果更改 OneLake RBAC 角色定义,OneLake 大约需要 5 分钟才能应用更新的定义。
  • 如果更改 OneLake RBAC 角色中的用户组,OneLake 大约需要 1 小时才能对更新的用户组应用该角色的权限。