什么是 Synapse 基于角色的访问控制 (RBAC)?
Synapse RBAC 扩展了用于 Synapse 工作区及其内容的 AZURE RBAC 功能。
使用 Azure RBAC 可以管理谁可以创建、更新或删除 Synapse 工作区及其 SQL 池、Apache Spark 池和集成运行时。
Synapse RBAC 用于管理可以执行以下操作的人员:
- 发布代码项目并列出或访问已发布的代码项目,
- 在 Apaches Spark 池和集成运行时上执行代码,
- 访问受凭据保护的链接(数据)服务
- 监视或取消作业执行、查看作业输出和执行日志。
注意
尽管 Synapse RBAC 用于管理对已发布的 SQL 脚本的访问,但它仅提供对无服务器和专用 SQL 池的访问。 对 SQL 池的访问主要通过 SQL 安全来控制。
Synapse RBAC 有什么用途?
下面是 Synapse RBAC 的用途的一些示例:
- 让用户可以将对 Apache Spark 笔记本和作业所做的更改发布到实时服务。
- 让用户可以在特定的 Apache Spark 池上运行和取消笔记本和 Spark 作业。
- 让用户可以使用特定的凭据,以便能够运行受工作区系统标识保护的管道,并访问使用凭据保护的链接服务中的数据。
- 让管理员可以管理、监视和取消特定 Spark 池上的作业执行。
Synapse RBAC 的工作原理
与 Azure RBAC 类似,Synapse RBAC 通过创建角色分配来运作。 角色分配由 3 个元素组成:安全主体、角色定义和范围。
安全主体
安全主体指的是用户、组、服务主体或托管标识。
角色
角色是可对特定资源类型或项目类型执行的权限或操作的集合。
Synapse 提供内置角色来定义满足不同角色需求的操作集合:
- 管理员可以获得创建和配置工作区的完整访问权限
- 开发人员可以创建、更新和调试 SQL 脚本、笔记本、管道和数据流,但不能在生产计算资源/数据上发布或执行此代码
- 操作员可以监视和管理系统状态、应用程序执行和检查日志,而无需访问代码或执行的输出。
- 安全人员可以管理和配置终结点,而无需访问代码、计算资源或数据。
详细了解内置的 Synapse 角色。
作用域
“范围”定义将访问权限应用到的资源或项目。 Azure Synapse 支持分层的范围。 较低级别的对象会继承在更高级别的范围授予的权限。 在 Synapse RBAC 中,顶级范围是工作区。 在工作区范围分配角色会向工作区中的所有适用对象授予权限。
一个工作区内当前支持的范围包括:
- Apache Spark 池
- 集成运行时
- 链接服务
- credential
代码项目的访问权限是在工作区范围授予的。 在更高版本中,将支持对工作区中的项目集合授予访问权限。
解析角色分配以确定权限
角色分配可在指定范围向主体授予由角色定义的权限。
Synapse RBAC 是一种类似于 Azure RBAC 的加法模型。 可以在不同的范围将多个角色分配给一个主体。 在计算安全主体的权限时,系统会考虑向主体以及直接或间接包含该主体的组分配的所有角色。 在确定适用的权限时,它还会考虑每个分配的范围。
强制执行分配的权限
在 Synapse Studio 中,如果你没有所需的权限,那么在尝试操作时,特定的按钮或选项可能会灰显,或者返回一个权限错误。
如果按钮或选项处于禁用状态,将鼠标悬停在按钮或选项上时将显示指出所需权限的工具提示。 请与 Synapse 管理员联系,让其分配可授予所需权限的角色。 若要查看提供特定操作的角色,请参阅 Synapse RBAC 角色。
谁可以分配 Synapse RBAC 角色?
Synapse 管理员可分配 Synapse RBAC 角色。 工作区级别的 Synapse 管理员可以在任何范围授予访问权限。 较低级别范围的 Synapse 管理员只能在对应的范围授予访问权限。
创建新工作区时,系统会在工作区范围自动为创建者提供 Synapse 管理员角色。
为了帮助你在未分配或没有 Synapse 管理员角色可用的情况下重新获得对工作区的访问权限,有权管理工作区上的 AZURE RBAC 角色分配的用户也可以管理 Synapse RBAC 角色分配,从而可以添加 Synapse 管理员或其他 Synapse 角色分配。
在何处管理 Synapse RBAC?
可以在 Synapse Studio 中使用“管理”中心中的访问控制工具管理 Synapse RBAC。
后续步骤
了解内置的 Synapse RBAC 角色。