你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Synapse 访问控制

本文概述了可用于控制对 Azure Synapse 计算资源和数据的访问的机制。

概述

Azure Synapse 提供全面且精细的访问控制系统,该系统集成:

  • 用于资源管理和访问存储中的数据的 Azure 角色,
  • 用于管理对代码和执行的实时访问的 Synapse 角色,
  • 用于对 SQL 池中的数据的数据平面访问的 SQL 角色,以及
  • 源代码管理的 Git 权限,包括持续集成和部署支持。

Azure Synapse 角色提供可应用于不同范围的权限集。 这种粒度使得向管理员、开发人员、安全人员和操作员授予适当的访问权限以计算资源和数据变得容易。

通过使用符合人员的工作角色的安全组,可以简化访问控制。 只需从适当的安全组添加和删除用户即可管理访问权限。

访问控制元素

创建和管理 Azure Synapse 计算资源

Azure 角色用于控制对以下项的管理:

  • 专用 SQL 池
  • 数据资源管理器池
  • Apache Spark 池
  • 集成运行时

若要创建这些资源,需要成为资源组的 Azure 所有者或参与者。 若要在资源创建后对其进行管理,需要成为资源组或单个资源的 Azure 所有者或参与者。

Azure 所有者或参与者可以为 Azure Synapse 工作区启用或禁用仅 Microsoft Entra 的身份验证。 有关仅 Microsoft Entra 的身份验证的详细信息,请参阅在 Azure Synapse Analytics 中禁用本地身份验证

在 Azure Synapse 中开发和执行代码

Synapse 支持两种开发模型。

  • Synapse 实时开发。 在 Synapse Studio 中开发和调试代码,然后发布代码以保存和执行。 Synapse 服务是代码编辑和执行的事实来源。 关闭 Synapse Studio 时,任何未发布的工作将丢失。
  • 启用 Git 的开发。 在 Synapse Studio 中开发和调试代码,并提交对 Git 存储库的工作分支的更改。 一个或多个分支的工作会集成到协作分支中,从该分支将工作发布到服务。 Git 存储库是代码编辑的事实来源,而服务是执行的事实来源。 必须在关闭 Synapse Studio 前,将更改提交到 Git 存储库或发布到服务。 详细了解如何将 Synapse Analytics 和 Git 结合使用。

在这两种开发模型中,任何有权访问 Synapse Studio 的用户都可以创建代码项目。 但是,你需要其他权限来将项目发布到服务、读取已发布的项目、向 Git 提交更改、执行代码以及访问受凭据保护的关联数据。 用户必须在 Synapse 工作区中具有 Azure 参与者 (Azure RBAC) 或更高级角色,才能配置、编辑设置和断开 Git 存储库与 Synapse 的连接。

Azure Synapse 角色

Azure Synapse 角色用于控制对 Synapse 服务的访问。 不同的角色使你能够:

  • 列出已发布的代码项目,
  • 发布代码项目、关联服务和凭据定义,
  • 执行使用 Synapse 计算资源的代码或管道,
  • 执行访问受凭据保护的关联数据的代码或管道,
  • 查看与已发布的代码项目关联的输出,
  • 监视计算资源状态,并查看运行时日志。

Azure Synapse 角色可以在工作区范围内或在更精细的范围内分配,以限制授予特定 Azure Synapse 资源的权限。

Git 权限

在 Git 模式下使用启用 Git 的开发时,除了 Synapse 用户或 Synapse RBAC(基于角色的访问控制)角色之外,还需要 Git 权限才能读取代码项目,包括链接服务和凭据定义。 要在 Git 模式下提交对代码项目的更改,需要 Git 权限和 Synapse Artifact Publisher (Synapse RBAC) 角色。

访问 SQL 中的数据

使用专用和无服务器 SQL 池时,使用 SQL 权限控制数据平面访问。

工作区的创建者被指定为工作区上的“Active Directory 管理员”。 创建后,可以将此角色分配给其他用户或 Azure 门户中的安全组。

无服务器 SQL 池:Synapse 管理员已被授予对无服务器 SQL 池“Built-in”的 db_owner (DBO) 权限。 若要授予其他用户访问无服务器 SQL 池的权限,Synapse 管理员需要在无服务器池上运行 SQL 脚本。

专用 SQL 池:Synapse 管理员拥有对专用 SQL 池中数据的完全访问权限,并且能够向其他用户授予访问权限。 Synapse 管理员还可以对专用池执行配置和维护作业,但不能删除数据库。 向工作区创建者和工作区 MSI 授予 Active Directory 管理员权限。 不会自动授予访问专用 SQL 池的权限。 若要授予其他用户或组对专用 SQL 池的访问权限,Active Directory 管理员或 Synapse 管理员必须针对每个专用 SQL 池运行 SQL 脚本。

请参阅如何设置 Synapse 访问控制,了解在 SQL 池中授予 SQL 权限的 SQL 脚本的示例。

访问数据资源管理器池中的数据

使用数据资源管理器池时,通过数据资源管理器权限控制数据平面访问。 向 Synapse 管理员授予对数据资源管理器池的 All Database admin 权限。 若要授予其他用户或组对数据资源管理器池的权限,Synapse 管理员应参阅安全角色管理。 有关数据平面访问的详细信息,请参阅数据资源管理器访问控制概述

访问存储中系统管理的数据

无服务器 SQL 池和 Apache Spark 表将其数据存储在与工作区关联的 ADLS Gen2 容器中。 用户安装的 Apache Spark 库也由同一存储帐户进行管理。 若要启用这些用例,必须授予用户和工作区 MSI 对此工作区 ADLS Gen2 存储容器的存储 Blob 数据参与者访问权限。

将安全组用作最佳做法

若要简化访问控制管理,可以使用安全组将角色分配给个人和组。 可以创建安全组以建立组织中需要访问 Synapse 资源或项目的角色或工作职能的镜像。 然后,可以为这些基于角色的安全组分配一个或多个 Azure 角色、Synapse 角色、SQL 权限或 Git 权限。 借助精心挑选的安全组,可以通过将用户添加到相应的安全组轻松地为用户分配所需的权限。

注意

如果使用安全组来管理访问权限,则在更改生效之前,Microsoft Entra ID 会引入额外的延迟。

Synapse Studio 中的访问控制强制执行

Synapse Studio 将根据你的权限和当前模式以不同的方式运行:

  • Synapse 实时模式:Synapse Studio 将阻止你查看已发布的内容、发布内容或采取其他操作(如果你没有所需的权限)。 在某些情况下,它会阻止你创建无法使用或保存的代码项目。
  • Git 模式:在拥有 Git 权限,可将更改提交到当前分支的情况下,如果有权将更改发布到实时服务(Synapse 项目发布者角色),则允许提交操作。

在某些情况下,即使没有发布或提交权限,你也可以创建代码项目。 这允许你执行代码(具有所需的执行权限)。 有关常见任务所需角色的详细信息,请参阅了解在 Azure Synapse 中执行常见任务所需的角色

如果某项功能在 Synapse Studio 中被禁用,工具提示将指示所需的权限。 使用 Synapse RBAC 角色指南查找提供缺少的权限所需的角色。

后续步骤