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

Azure 部署环境中的 Azure 基于角色的访问控制

本文介绍 Azure 部署环境支持的不同内置角色,以及它们如何映射到平台工程师和开发经理等组织角色。

Azure 基于角色的访问控制 (RBAC) 指定了内置角色定义,这些定义概述了要应用的权限。 可通过特定范围的角色分配为用户或组分配此角色定义。 范围可以是单个资源、资源组或整个订阅。 下一部分将介绍 Azure 部署环境支持哪些内置角色。

有关详细信息,请参阅什么是 Azure 基于角色的访问控制 (Azure RBAC)

注意

进行角色分配更改时,可能需要几分钟时间才能传播这些更新。

内置角色

在本文中,Azure 内置角色按逻辑分组为三种组织角色类型,具体取决于其影响范围:

  • 平台工程师角色:影响开发人员中心、目录和项目的权限
  • 开发经理:影响基于项目的资源的权限
  • 开发人员角色:影响用户的权限

下面是 Azure 部署环境支持的内置角色:

组织角色类型 内置角色 描述
平台工程师 “所有者” 授予完全控制权来创建/管理开发人员中心、目录和项目,并向其他用户授予权限。 详细了解所有者角色
平台工程师 参与者 授予完全控制权来创建/管理开发人员中心、目录和项目,但不为其他用户分配角色。 详细了解参与者角色
开发经理 开发人员中心项目管理员 授予管理项目和环境某些方面的权限。 详细了解开发人员中心项目管理员角色
开发人员 部署环境读取者 授予查看项目中所有环境的权限。 详细了解部署环境读取者角色
开发人员 部署环境用户 授予创建环境的权限,并可完全控制他们创建的环境。 详细了解部署环境用户角色

角色分配范围

在 Azure RBAC 中,范围是访问权限应用到的资源集。 在分配角色时,请了解范围,以便仅授予所需的访问权限,这一点很重要。

在 Azure 中,可以在以下四个级别指定范围:管理组、订阅、资源组和资源。 范围采用父子关系结构。 层次结构的每个级别都会使范围更具针对性。 可以在其中任何一个范围级别分配角色。 所选级别决定了角色的应用广泛程度。 较低级别继承较高级别的角色权限。 详细了解 Azure RBAC 的范围

对于 Azure 部署环境,请考虑以下范围:

范围 描述
订阅 用于管理所有 Azure 资源和服务的计费和安全性。 通常,只有平台工程师才具有订阅级别的访问权限,因为此角色分配授予对订阅中的所有资源的访问权限。
资源组 用于组合资源的逻辑容器。 资源组的角色分配授予对资源组及其中所有资源(例如开发人员中心、项目和部署环境)的权限。
开发人员中心(资源) 需要类似设置的项目的集合。 开发人员中心的角色分配向开发人员中心本身授予权限。 项目和部署环境不会继承分配给开发人员中心的权限。
项目(资源) 创建部署环境时用于应用常见配置设置的 Azure 资源。 项目的角色分配仅向该特定项目授予权限。
环境类型(资源) 用于定义可创建的环境类型(例如沙盒、开发、测试或生产)的 Azure 资源。 环境类型是在开发人员中心级别定义,在项目级别配置的。 部署环境类型的角色分配向项目内该环境类型授予权限,而不是向同一项目中的其他环境类型授予权限。

显示 Azure 部署环境的角色分配范围的示意图

常见部署环境活动的角色

下表显示了常见的部署环境活动以及用户执行该活动所需的角色。

活动 角色类型 角色 范围
授予创建资源组的权限。 平台工程师 所有者或参与者 订阅
授予提交 Microsoft 支持工单的权限,包括请求提高配额限制 平台工程师 所有者、参与者、支持请求参与者 订阅
授予在项目中创建环境类型的权限。 平台工程师 自定义角色:Microsoft.Authorization/roleAssignments/write

所有者、参与者或项目管理员
订阅


项目
授予为其他用户分配角色的权限。 平台工程师 “所有者” 资源组
授予权限:
- 创建/管理开发人员中心和项目。
- 在开发人员中心或项目中附加/分离目录。
平台工程师 所有者、参与者 资源组
授予启用/禁用项目目录的权限。 开发经理 所有者、参与者 开发人员中心
授予在项目中创建和管理所有环境的权限。
- 添加、同步、删除目录(必须在开发人员中心启用项目级目录)。
- 配置过期日期和时间以触发自动删除。
- 更新和删除环境类型。
- 删除环境。
开发经理 开发人员中心项目管理员 集成
查看项目中的所有环境。 开发经理 部署环境读取者 集成
在项目中创建和管理自己的环境。 用户 部署环境用户 集成
在 GitHub 或 Azure Repos 存储库中创建和管理目录。 开发经理 不受 RBAC 约束。
必须通过 Azure DevOps 或 GitHub 为用户分配权限。
存储库

重要

组织订阅用于管理所有 Azure 资源和服务的计费和安全性。 可以分配订阅的“所有者”或“参与者”角色。 通常,只有平台工程师才具有订阅级别的访问权限,因为此角色包含针对订阅中的所有资源的访问权限。

平台工程师角色

若要授予用户在组织订阅中管理 Azure 部署环境的权限,应为他们分配所有者参与者角色。

将这些角色分配到资源组。 开发人员中心以及资源组中的项目继承这些角色分配。 环境类型通过项目继承角色分配。

所有者角色

分配“所有者”角色以授予对创建或管理开发人员中心和项目的完全控制权,并向其他用户授予权限。 当用户具有资源组的“所有者”角色时,可以针对资源组中的所有资源执行以下活动:

  • 为平台工程师分配角色,以便他们可以管理部署环境资源。
  • 创建开发人员中心、项目和环境类型。
  • 附加和分离目录。
  • 查看、删除和更改所有开发人员中心、项目和环境类型的设置。

注意

分配资源组的“所有者”或“参与者”角色时,这些权限也适用于资源组中存在的非部署环境相关资源。 例如,虚拟网络、存储帐户、计算库等资源。

参与者角色

分配“参与者”角色,让用户完全控制创建或管理资源组中的开发人员中心和项目。 “参与者”角色具有与“所有者”角色相同的权限,但以下操作除外

  • 执行角色分配

自定义角色

若要在部署环境中创建项目级环境类型,必须为项目中的环境类型中映射的订阅分配所有者角色或用户访问管理员角色。 或者,若要避免在订阅级别分配广泛的权限,可以创建并分配应用写入权限的自定义角色。 在项目的环境类型中映射的订阅处应用自定义角色。

若要了解如何创建具有 Microsoft.Authorization/roleAssignments/write 权限的自定义角色并在订阅级别分配该角色,请参阅:创建自定义角色

除了自定义角色之外,还必须为用户分配对创建环境类型的项目的所有者、参与者或项目管理员角色。

开发经理角色

有一个开发经理角色:开发人员中心项目管理员。与平台工程师角色相比,此角色在较低级别的范围内具有受限程度更严格的权限。 你可以将此角色分配给开发经理,使其能够为其团队执行管理任务。

开发人员中心项目管理员角色

分配开发人员中心项目管理员角色,使用户能够:

  • 管理项目中的所有环境。
  • 添加、同步、删除目录(必须在开发人员中心启用项目级目录)
  • 更新和删除环境类型。
  • 配置过期日期和时间以触发自动删除。
  • 删除环境。

开发人员角色

这些角色为开发人员授予查看、创建和管理环境所需的权限。

部署环境用户

分配部署环境用户角色,以授予用户创建环境的权限并完全控制他们创建的环境。

  • 创建
  • 删除
  • 设置过期日期和时间。
  • 重新部署环境。

部署环境读取者

分配部署环境读取者角色,以授予用户查看项目中所有环境的权限。

项目环境类型为环境资源定义了两组角色,即分配给创建者的角色和分配给其他用户和组的角色。

当开发人员基于环境类型创建环境时,为他们分配的角色与为环境资源创建者指定的角色相同。 为其他开发人员分配的任何角色与为他们所属的组(如果有)指定的角色相同。 他们对环境资源拥有权限,但对环境本身没有权限。 在这种情况下,分配部署环境读取者角色可让开发人员查看环境。

标识和访问管理 (IAM)

Azure 门户中的“访问控制(IAM)”页面用于针对 Azure 部署环境资源配置 Azure 基于角色的访问控制。 对于 Active Directory 中的个人和组,可使用内置角色。 以下屏幕截图显示在 Azure 门户中使用访问控制 (IAM) 的 Active Directory 集成 (Azure RBAC):

有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

开发人员中心、资源组和项目结构

组织应该提前投入时间来规划开发人员中心的位置以及资源组和项目的结构。

开发人员中心:根据你要统一管理的项目集来组织开发人员中心,应用类似的设置,并提供类似的模板

组织可以使用一个或多个开发人员中心。 通常,组织中的每个子组织都有自己的开发人员中心。 在以下情况下,可以考虑创建多个开发人员中心:

  • 特定配置适用于项目的子集。
  • 不同的团队拥有并维护 Azure 中的开发人员中心资源。

项目:与处理一个应用或产品的每个开发团队或人员组相关联

环境类型:反映开发阶段或环境类型 - 开发、测试、过渡、预生产、生产等。你可以选择最适合你的环境的命名约定。

将角色分配到资源组时,规划尤为重要,因为它还会将权限应用于资源组中的所有资源,包括项目和环境类型。

若要确保仅向用户授予对相应资源的权限,请执行以下操作:

  • 创建仅包含部署环境资源的资源组。
  • 根据所需环境类型和应该拥有访问权限的开发人员来组织项目。

例如,可为不同的开发团队创建单独的项目以隔离每个团队的资源。 然后,可将项目中的开发经理分配到项目管理员角色,该角色仅授予他们访问其团队资源的权限。

重要

提前规划结构,因为在创建部署环境资源(例如项目或环境)后无法将其移动到不同的资源组。

目录结构

Azure 部署环境使用环境定义来为开发人员部署 Azure 资源。 环境定义由 IaC 模板和充当清单的环境文件组成。 模板定义环境,环境文件提供有关模板的元数据。

Azure 部署环境将环境定义存储在 GitHub 存储库Azure DevOps Services 存储库(称为目录)中。 可以将目录附加到开发人员中心或项目。 开发团队将使用你在目录中提供的项在 Azure 中创建环境。

可将目录附加到开发人员中心或项目,以管理不同级别的环境定义。 在确定要将目录附加到何处时,请考虑每个开发团队的需求。