关于权限和安全组

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

本文介绍通过 Azure DevOps 中的继承、安全组、角色等访问级别和权限。

有关默认权限的概述,请参阅默认权限快速参考。 有关每个默认安全组的说明,请参阅 安全组、服务帐户和权限参考

访问级别

添加到 Azure DevOps 的所有用户都分配了访问 级别,该级别授予或限制对特定 Web 门户功能的访问权限。

有三个主要的访问级别: 利益干系人基本基本 + 测试计划。 利益干系人访问权限为一组有限的功能提供对无限数量的用户的免费访问权限。 有关详细信息,请参阅利益干系人访问快速参考

若要向用户授予对敏捷项目组合管理或测试用例管理功能的访问权限, 请更改访问级别,而不是权限。 有关详细信息,请参阅关于访问级别

权限

添加到 Azure DevOps 的所有用户都会添加到一个或多个默认 安全组。 安全组分配的权限,允许拒绝访问功能或任务。

  • 安全组 的成员继承分配给该组的权限
  • 权限在不同级别定义:组织/集合、项目或对象。
  • 其他权限通过 基于角色的分配进行管理,例如团队管理员、扩展管理和各种管道资源角色。
  • 管理员可以定义自定义安全组来管理不同功能区域的权限。

在 Azure DevOps 中管理权限时,涉及两个关键组:项目集合管理员和项目管理员。 让我们来详细讲解:

项目集合管理员:

  • 这些个人在组织或项目集合中拥有最高级别的权威。
  • 他们可以对整个集合执行所有操作。
  • 其职责包括管理组织的设置、策略和流程。
  • 此外,他们可以在组织内创建和管理所有项目和扩展。

项目管理员:

  • 项目管理员在项目级别运行。
  • 它们主要从 Web 门户的项目设置管理安全组和权限。
  • 另一方面,参与者处理他们在项目中创建的特定对象的权限。

权限状态

可以按以下方式分配权限,如前所述授予或限制访问权限。

用户或组 有权 执行任务:

  • 允许
  • 允许(继承)
  • 允许(系统)

用户或组 无权 执行任务:

  • 拒绝
  • 拒绝(继承)
  • 拒绝 (系统)
  • 未设置
权限状态 说明
允许 显式授予用户执行特定任务的权限,并且不会继承自组成员身份。
允许(继承) 授予组成员以执行特定任务。
允许(系统) 授予在用户权限之前优先的权限。 不可编辑并存储在配置数据库中,对用户不可见。
拒绝 显式限制用户执行特定任务,并且不会从组成员身份继承。 对于大多数组和几乎所有权限,“拒绝”优先于“允许”。 如果用户属于两个组,其中一个组具有特定权限集“ 拒绝”,则即使用户属于该权限设置为 “允许”的组,该用户也不能执行需要该权限的任务。
拒绝(继承) 限制组成员执行特定任务。 重写显式 允许
拒绝 (系统) 限制在用户权限之前优先的权限。 不可编辑并存储在配置数据库中,对用户不可见。
未设置 隐式拒绝用户执行需要该权限的任务的能力,但允许具有该权限的组中的成员身份优先,也称为“允许”(继承的)“拒绝”(继承的)。

在某些情况下,项目集合管理员Team Foundation Administrators 组的成员可能始终获得权限,即使他们被拒绝了其他组中的权限。 在其他情况下,例如工作项删除或管道,作为项目集合管理员组的成员不会绕过 在其他位置设置的拒绝 权限。

警告

修改组的权限时,它会影响该组中的所有用户。 即使是单个权限更改也会影响数百个用户,因此在进行任何调整之前,必须考虑潜在影响。

权限继承

权限遵循层次结构,允许从父级继承或通过重写继承。

  • 组继承: 用户从他们所属的组继承权限。 如果用户直接拥有“允许”权限,或者通过组成员身份拥有“拒绝”权限,则“拒绝”权限优先。 但是,即使这些成员 属于拒绝这些权限的其他组(工作项操作除外),Project Collection 管理员Team Foundation 管理员 的成员仍保留大多数允许的权限。
  • 对象级别继承: 对象级权限(分配给区域、迭代、版本控制文件夹和工作项查询文件夹等节点)将继承到层次结构中。

例如,让我们分解权限继承和特定性规则并记住,显式权限始终优先于继承的权限:

  • 如果用户的权限设置为更高级别的节点(区域-1),除非显式重写,否则所有子节点(area-1/sub-area-1)将继承这些权限。
  • 如果子节点未显式允许或拒绝权限,则它从其父节点继承该权限。
  • 但是,如果为子节点(area-1/sub-area-1)显式设置了权限,则不继承父级的权限,而不考虑是允许还是拒绝权限。 特 异性:
  • 在对象层次结构中,特定性胜过继承。 这意味着,如果存在冲突的权限,则最具体的权限优先。
  • 例如,请考虑用户:
    • 显式 拒绝 “area-1”(父节点)。
    • 显式 允许 “area-1/sub-area-1”(子节点)。
  • 在这种情况下,用户会收到 “area-1/sub-area-1”上的 Allow ,覆盖从父节点继承 的 Deny

若要了解为何继承权限,可以暂停权限设置,然后选择“ 原因”? 若要打开 “安全 ”页,请参阅 “查看权限”。

注意

若要启用 “项目权限设置”页预览页 ,请参阅 “启用预览功能”。

显示“权限”对话框、预览页、“为什么链接已批注”的屏幕截图。

此时会打开一个新对话框,显示该权限的继承信息。

“项目权限”设置页的预览用户界面不适用于 Azure DevOps Server 2020 和更低版本。

安全组和成员身份

安全组为其成员分配特定权限。

通过创建组织、集合或项目,Azure DevOps 会创建一组默认安全组,这些安全组会自动分配默认权限。 使用下列操作定义了更多安全组:

  • 在以下级别创建自定义安全组时:
    • 项目级别
    • 组织级别或集合级别
    • 服务器级(仅限本地部署)
  • 添加团队时,将创建团队安全组

不能创建对象级安全组,但可以将自定义组分配给对象级别,并将权限分配给该级别。 有关详细信息,请参阅 “设置对象级权限”。

默认安全组

大多数 Azure DevOps 用户将添加到 参与者 安全组并被授予 基本 访问级别。 参与者组提供对存储库、工作跟踪、管道等的读取和写入访问权限。 基本 访问权限提供对使用 Azure Boards、Azure Repos、Azure Pipelines 和 Azure Artifacts 的所有功能和任务的访问权限。 需要有权管理 Azure 测试计划的用户必须被授予 基本 + 测试计划高级 访问权限。

默认情况下,为每个项目和组织定义了以下安全组。 通常将用户或组添加到 读者参与者项目管理员 组。

集成 组织或集合
- 生成管理员
-贡献
- 项目管理员
- 项目有效用户
-读者
- 发布管理员
- TeamName 团队
- 项目集合管理员
- 项目集合生成管理员
- 项目集合生成服务帐户
- 项目集合代理服务帐户
- 项目收集服务帐户
- 项目集合测试服务帐户
- 项目集合有效用户
- 项目范围内的用户
- 安全服务组

有关其中每个组的说明,请参阅 安全组、服务帐户和权限。 有关对最常见的默认安全组进行的默认权限分配,请参阅 默认权限和访问权限

默认情况下,为每个项目和项目集合定义以下安全组。 通常将用户或组添加到 读者参与者项目管理员 组。

仅将服务帐户添加到 Azure DevOps 服务帐户组。 若要了解有效的用户组,请参阅 本文后面的有效用户组

项目级别 集合级别
- 生成管理员
-贡献
- 项目管理员
- 项目有效用户
-读者
- 发布管理员
- TeamName 团队
- 项目集合管理员
- 项目集合生成管理员
- 项目集合生成服务帐户
- 项目集合代理服务帐户
- 项目收集服务帐户
- 项目集合测试服务帐户
- 项目集合有效用户
- 安全服务组

对于负责管理项目级功能(例如团队、区域和迭代路径、存储库、服务挂钩和服务终结点)的用户,请将它们添加到 项目管理员 组。

对于负责管理组织或集合级别功能(如项目、策略、进程、保留策略、代理和部署池和扩展)的用户,请将它们添加到 Project Collection Administrators 组。 有关详细信息,请参阅 “关于用户”、“团队”、“项目”和组织级设置

成员身份、权限和访问级别管理

Azure DevOps 通过以下三个相互连接的功能区域控制访问权限:

  • 成员管理支持将个人用户帐户和组添加到默认安全组。 每个默认组都与一组默认权限相关联。 添加到任何安全组的所有用户都会添加到“有效用户组”。 有效用户是可以连接到项目、集合或组织的人。
  • 权限管理可控制处于系统不同级别的特定功能任务的访问权限。 对象级权限设置对文件、文件夹、生成管道或共享查询的权限。 权限设置对应于“允许”、“拒绝”、“继承的允许”、“继承的拒绝”、“系统允许”、“系统拒绝”和“未设置”。
  • 访问级别管理 控制对 Web 门户功能的访问。 根据为用户购买的,管理员将用户的访问权限级别设置为 利益干系人基本基本 + 测试Visual Studio Enterprise (以前 为高级)。

每个功能区域都使用安全组来简化整个部署的管理。 可以通过 Web 管理上下文添加用户和组。 权限将根据你向其添加用户的安全组自动设置。 或权限基于要向其添加组的对象、项目、集合或服务器级别获取。

安全组成员可以是用户、其他组和 Microsoft Entra 组的组合。

安全组成员可以是用户、其他组和 Active Directory 组或工作组的组合。

可以创建 本地组或 Active Directory (AD) 组来管理用户

Active Directory 和 Microsoft Entra 安全组

可以通过添加单个用户来填充安全组。 但是,为了便于管理,使用 Azure DevOps Services 和 Active Directory (AD) 或 Azure DevOps Server 的 Windows 用户组Microsoft Entra ID 填充这些组更高效。 使用此方法可以更有效地跨多台计算机管理组成员身份和权限。

如果只需要管理一小部分用户,则可以跳过此步骤。 但是,如果预计组织可能会增长,请考虑设置 Active Directory 或Microsoft Entra ID。 此外,如果计划使用额外服务,则必须配置 Microsoft Entra ID,以便与 Azure DevOps 一起使用以支持计费。

注意

如果没有Microsoft Entra ID,所有 Azure DevOps 用户都必须使用 Microsoft 帐户登录,并且必须管理单个用户帐户的帐户访问权限。 即使使用 Microsoft 帐户管理帐户访问权限,也设置 Azure 订阅来管理计费

若要设置用于 Azure DevOps Services 的 Microsoft Entra ID,请参阅 将组织连接到 Microsoft Entra ID

当组织连接到 Microsoft Entra ID 时,可以定义和管理各种组织策略,以提高安全性和简化对应用程序的访问。 有关详细信息,请参阅 “关于安全性”、“安全策略”。

若要使用 Microsoft Entra ID 管理组织访问权限,请参阅以下文章:

Azure DevOps 在Microsoft Entra ID 更改后的一小时内注册对 Microsoft Entra 组所做的更改。 通过组成员身份获得的任何继承权限将刷新。 若要刷新 Azure DevOps 中的 Microsoft Entra 成员身份和继承的权限,请注销,然后重新登录,或 触发刷新以重新评估权限

若要设置 Active Directory 以用于 Azure DevOps Server,请参阅以下文章:

在安装 Azure DevOps Server 之前安装 Active Directory。

有效的用户组

将用户帐户直接添加到安全组时,会自动将其添加到以下有效用户组之一。

  • 项目集合有效用户:添加到组织级别组的所有成员。
  • 项目有效用户:添加到项目级别组的所有成员。
  • Server\Azure DevOps 有效用户:添加到服务器级组的所有成员。
  • ProjectCollectionName\Project Collection Valid Users: All members added to collection-level groups.
  • ProjectName\Project Valid Users:添加到项目级组的所有成员。

分配给这些组的默认权限主要提供读取访问权限,例如 “查看生成资源”、“ 查看项目级信息”和 “查看集合级别信息”。

添加到一个项目的所有用户都可以查看集合中其他项目中的对象。 若要限制视图访问,可以通过 区域路径节点设置限制。

如果删除或拒绝 某个有效用户组的“查看实例级信息 ”权限,则组的成员将无法访问项目、集合或部署,具体取决于设置的组。

项目范围的用户组

默认情况下,添加到组织的用户可以查看所有组织和项目信息和设置。 这些设置包括用户列表、项目列表、计费详细信息、使用情况数据等,可通过组织设置进行访问

重要

  • 本部分所述的有限可见性功能仅适用于通过 Web 门户的交互。 使用 REST API 或 azure devops CLI 命令,项目成员可以访问受限数据。
  • 在Microsoft Entra ID 中具有默认访问权限的受限组中具有成员的来宾用户无法搜索具有人员选取器的用户。 当预览功能组织关闭或来宾用户不是受限组的成员时,来宾用户可以按预期搜索所有Microsoft Entra 用户。

若要限制特定用户(例如利益干系人、Microsoft Entra 来宾用户或特定安全组的成员),可以启用 “限制用户可见性和协作”功能,使其适用于组织的特定项目 预览功能。 启用后,添加到 Project 范围用户组的任何用户或组将受限于访问“组织设置”页,“概述”和“项目除外。 此外,他们仅有权访问向其添加的项目。

警告

为组织启用“限制用户可见性和协作”特定项目预览功能时,项目范围内的用户无法通过Microsoft Entra 组成员身份(而不是显式用户邀请)搜索已添加到组织的用户。 这是一种意外的行为,正在处理解决方法。 若要自行解决此问题,请禁用组织的 “将用户可见性和协作限制为特定项目 ”预览功能。

有关详细信息,请参阅 管理预览功能

注意

安全组属于组织级别,即使它们仅访问特定项目也是如此。 某些组可能会根据用户权限隐藏在 Web 门户中。 可以使用 Azure devops CLI 工具或 REST API 在组织中查找所有组名称。 有关详细信息,请参阅 “添加和管理安全组”。

注意

安全组属于集合级别,即使它们仅访问特定项目也是如此。 某些组可能会根据用户权限隐藏在 Web 门户中。 可以使用 Azure devops CLI 工具或 REST API 在组织中查找所有组名称。 有关详细信息,请参阅 “添加和管理安全组”。

注意

安全组属于集合级别,即使它们仅访问特定项目也是如此。 某些组可能会根据用户权限隐藏在 Web 门户中。 但是,可以使用 REST API 发现组织中所有组的名称。 有关详细信息,请参阅 “添加和管理安全组”。

基于角色的权限

使用基于角色的权限,可将用户帐户或安全组分配给角色,每个角色分配了一个或多个权限。 下面是主要角色和详细信息的链接。

有关详细信息,请参阅 “关于安全角色”。

下图演示了在项目和集合级别定义的安全组如何向对象、项目和组织分配权限。

概念映像将默认安全组映射到权限级别,云

下图演示了如何在项目和集合级别定义的安全组分配给在对象、项目和集合级别分配的权限。 只能将服务器级安全组定义为服务器级权限。

概念映像将默认安全组映射到本地权限级别

项目管理员或项目集合管理员组的成员可以管理所有团队的所有团队工具。

权限的最佳做法

应做事项:

  • 管理大量用户时,请使用 Microsoft Entra ID、Active Directory 或 Windows 安全组。
  • 添加团队时,请考虑要分配给团队主管、scrum 大师和其他团队成员的权限。 请考虑创建和修改区域路径、迭代路径和查询的人员。
  • 添加多个团队时,请考虑创建 团队管理员 自定义组,可在其中分配项目 管理员可用的权限子集。
  • 请考虑向工作项查询文件夹授予“参与”权限的用户或组,这些用户或组需要为项目创建和共享工作项查询。

禁止事项:

  • 不要将用户添加到包含不同权限级别的多个安全组。 在某些情况下, “拒绝 ”权限级别可能会替代 “允许 ”权限级别。
  • 不要更改对有效用户组进行的默认分配。 如果你移除某个有效用户组的“查看实例级别信息”权限或将其设置为“拒绝”,则根据你设置的组,此组中的任何用户都不能访问项目、集合或部署。
  • 不要将标注为“仅分配给服务账户”的权限分配给用户账户。

预览功能

功能标志控制对特定新功能的访问。 Azure DevOps 定期将新功能置于功能标志后面来引入新功能。 项目成员和组织所有者可以启用或禁用预览功能。 有关详细信息,请参阅 “管理”或“启用功能”。

后续步骤