权限、访问和安全组入门

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

在访问Azure DevOps功能方面,了解以下关键概念很有帮助。

  • 关于权限

    • 添加到Azure DevOps的所有用户都会添加到一个或多个默认安全组
    • 安全组是分配的权限,这些 权限允许或拒绝对功能或任务的访问权限。
    • 安全组的成员继承分配给该组 的权限
    • 权限在不同级别定义:组织/集合、项目或对象。
    • 其他权限通过 基于角色的分配进行管理,例如团队管理员、扩展管理和各种管道资源角色。
    • 管理员可以定义自定义安全组来管理不同功能区域的权限。
  • 关于访问级别

    • 添加到Azure DevOps的所有用户都分配到访问级别,该级别授予或限制对选择 Web 门户功能的访问权限。
    • 有三个主要的访问级别:利益干系人基本基本 + Test Plans
    • 利益干系人访问权限允许无限数量的用户访问一组有限的功能。 有关详细信息,请参阅 利益干系人访问快速参考
  • 关于预览功能
    • 随着新功能的引入,用户可以通过 预览功能 启用或禁用这些功能来访问这些功能。
    • 一小部分新功能在组织级别进行管理,由组织所有者启用或禁用。

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

管理员应添加到Project集合管理员或Project管理员组。 管理员从 Web 门户管理安全组和权限,主要来自Project设置。 参与者还管理从 Web 门户创建的对象的权限。

有关默认权限的概述,请参阅 默认权限快速参考

安全组和成员身份

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

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

提示

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

默认安全组

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

Project 组织或集合
- 生成管理员
- 参与者
- Project管理员
- Project有效用户
- 读者
- 发布管理员
- TeamName 团队
- Project集合管理员
- Project集合生成管理员
- Project集合生成服务帐户
- Project收集代理服务帐户
- Project收集服务帐户
- Project集合测试服务帐户
- Project集合有效用户
- Project-Scoped用户
- 安全组

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

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

注意

以下列表指示为 TFS 2017 及更高版本定义的最新组。 对于早期版本的Azure DevOps,列表可能有所不同。 仅将服务帐户添加到Azure DevOps服务帐户组。 若要了解有效的用户组,请参阅本文后面的 有效用户组

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

提示

对于负责管理项目级功能(例如团队、区域和迭代路径、存储库、服务挂钩和服务终结点)的用户,请将它们添加到Project管理员组。 对于负责管理组织或集合级别功能(如项目、策略、进程、保留策略、代理和部署池和扩展)的用户,请将它们添加到集合管理员组Project。 若要了解详细信息,请参阅 关于用户、团队、项目和组织级别的设置

有关每个组和每个权限的说明,请参阅 权限和组引用、组

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

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

  • 成员身份管理 支持将单个用户帐户和组添加到默认安全组。 每个默认组都与一组默认权限相关联。 添加到任何安全组的所有用户都添加到“有效用户组”。 有效用户是可以连接到项目、集合或组织的人员。

  • 权限管理 控制对不同级别的系统特定功能任务的访问。 对象级权限设置对文件、文件夹、生成管道或共享查询的权限。 权限设置对应于 AllowDenyInherited allowInherited denyNot set。 若要了解有关继承的详细信息,请参阅本文后面的 权限继承和安全组

  • 访问级别管理 控制对 Web 门户功能的访问。 根据为用户购买的内容,管理员将用户的访问权限级别设置为“利益干系人”、“基本”、“基本 + 测试”或Visual Studio Enterprise (以前高级) 。

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

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

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

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

Active Directory 和Azure Active Directory安全组

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

如果只需要管理一小组用户,则可以跳过此步骤。 但是,如果预计组织可能会增长,可能需要设置 AD 或Azure AD。 此外,如果计划支付额外的服务,则需要设置Azure AD以用于Azure DevOps来支持计费。

注意

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

若要设置用于Azure DevOps Services的Azure Active Directory,请参阅组织连接Azure Active Directory

注意

当组织连接到Azure Active Directory时,可以启用或禁用许多组织策略来保护组织。 若要了解详细信息,请参阅 关于安全、身份验证和授权、安全策略的信息。

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

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

通常,在安装 Azure DevOps Server 之前,应安装 Active Directory。

有效用户组

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

  • Project集合有效用户:添加到组织级别组的所有成员。
  • Project有效用户:添加到项目级别组的所有成员。
  • Server\Azure DevOps有效用户:添加到服务器级别组的所有成员。
  • ProjectCollectionName\Project 集合有效用户:添加到集合级别组的所有成员。
  • ProjectName\Project有效用户:添加到项目级别组的所有成员。
  • Server\Team Foundation 有效用户:添加到服务器级别组的所有成员。
  • ProjectCollectionName\Project 集合有效用户:添加到集合级别组的所有成员。
  • ProjectName\Project有效用户:添加到项目级别组的所有成员。

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

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

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

Project范围的用户组

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

若要限制所选用户(如利益干系人、Azure Active Directory来宾用户或特定安全组的成员),可以启用“限制用户可见性”和“协作”功能,使其具有组织的特定项目预览功能。 启用后,添加到Project范围用户组的任何用户或组都受限于访问组织设置页面,但“概述”和“项目”除外;仅访问已添加到其中的那些项目。

若要启用此功能,请参阅 “管理”或“启用功能”。

注意

所有安全组都是组织级实体,即使是那些仅具有特定项目权限的组。 在 Web 门户中,某些安全组的可见性可能会根据用户权限受到限制。 但是,可以使用 azure devops CLI 工具或 REST API 发现组织中所有组的名称。 若要了解详细信息,请参阅 “添加和管理安全组”。

注意

所有安全组都是集合级实体,甚至那些仅具有特定项目权限的组。 在 Web 门户中,某些安全组的可见性可能会根据用户权限受到限制。 但是,可以使用 azure devops CLI 工具或 REST API 发现组织中所有组的名称。 若要了解详细信息,请参阅 “添加和管理安全组”。

注意

所有安全组都是集合级实体,甚至那些仅具有特定项目权限的组。 在 Web 门户中,某些安全组的可见性可能会根据用户权限受到限制。 但是,可以使用 REST API 发现组织中所有组的名称。 若要了解详细信息,请参阅 “添加和管理安全组”。

访问级别

访问级别控制 Web 门户中用户可见的功能,并且依赖于用户许可证;权限控制用户连接到Azure DevOps并跨Azure DevOps使用功能的功能。 如果尝试向某人授予对敏捷项目组合管理或测试用例管理功能的访问权限,则需要 更改访问级别,而不是权限。

为用户或组设置访问级别不提供对项目或 Web 门户的访问权限。 只有添加到团队或安全组的用户或组才能连接到项目和 Web 门户。 确保用户具有所需的权限和访问级别。 为此,请确保它们 已添加到项目或团队

权限

如下图所示,在项目和集合级别定义的安全组可以分配给在对象、项目和组织级别分配的权限。

Conceptual image mapping default security groups to permission levels, cloud

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

Conceptual image mapping default security groups to permission levels, on-premises

Conceptual image of security groups and permission levels, TFS-2018 and earlier versions

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

权限状态

对权限进行五项可能的分配。 它们按指示授予或限制访问权限。

  • 用户或组有权执行任务:
    • 允许
    • 允许继承
  • 用户或组无权执行任务:
    • 拒绝
    • 拒绝继承
    • 未设置

下面是需要了解的权限设置的内容:

  • 允许拒绝 显式授予或限制用户执行特定任务,通常继承自组成员身份。

  • 未设置 隐式拒绝用户执行需要该权限的任务的能力,但允许具有该权限集的组中的成员身份优先,也称为 “允许” (继承 ) 或“继承的 允许 ”或 “拒绝” (继承) 继承的拒绝

  • 对于大多数组和几乎所有权限, 拒绝 将覆盖 Allow。 如果用户属于两个组,其中一个组具有特定的权限集“ 拒绝”,则用户无法执行需要该权限的任务,即使他们属于该权限设置为 “允许”的组也是如此。

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

  • 更改组的权限会更改属于该组成员的所有用户的权限。 换言之,根据组的大小,仅更改一个权限可能会影响数以百计的用户完成其工作的能力。 因此,在进行更改前,请确保您了解带来的影响。

权限继承和安全组

某些权限通过层次结构进行管理。 在此层次结构中,权限可以继承自父级或重写。 安全组将一组权限分配给组的成员。 例如,参与者组或Project管理员组的成员将分配设置为“允许”的权限。

如果用户无权直接允许或拒绝权限,则可以通过两种方式继承该权限。

  • 用户从所属组继承权限。 如果允许用户直接或通过具有该权限的组中的成员身份授予权限,并且直接或通过组成员身份拒绝该权限,则拒绝该权限。

    Project集合管理员Team Foundation 管理员的成员保留大多数允许的权限,即使它们属于拒绝这些权限的其他组也是如此。 工作项操作权限是此规则的例外。

  • 为层次结构的节点分配的对象级权限(区域、迭代、版本控制文件夹、工作项查询文件夹)将继承到层次结构中。 也就是说,如果用户的权限area-1被显式允许或拒绝area-1/sub-area-1,则由用户继承area-1/sub-area-1。 如果显式为对象设置了权限,例如 area-1/sub-area-1,则不继承父节点,而不管该节点是被拒绝还是被允许。 如果未设置,则该节点的权限将从具有显式设置权限的最接近的上级继承。 最后,在对象层次结构中,特定性胜过继承。 例如,权限在“area-1”上显式设置为“拒绝”但同时显式设置为“allow for'area-1/sub-area-1”的用户最终将接收“area-1/sub-area-1”上的“允许”。

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

注意

若要为Project权限设置页启用新的用户界面,请参阅“启用预览”功能

Permissions dialog, preview page, Why link annotated.

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

Project权限设置页面的预览用户界面不适用于 Azure DevOps Server 2020 和早期版本。

分配权限时

应做事项:

  • 管理大量用户时,请使用 Azure Active Directory、Active Directory 或Windows安全组。
  • 添加团队时,思考你想将什么权限分配给团队主管、Scrum 主管以及可能需要创建和修改区域路径、迭代路径和查询的其他团队成员。
  • 添加多个团队时,请考虑创建团队管理员自定义组,在该组中分配Project管理员可用的权限子集。
  • 请考虑向工作项查询文件夹授予用户或组的权限,这些用户或组需要为项目创建和共享工作项查询。

禁止事项:

  • 不要将用户添加到包含不同权限级别的多个安全组。 在某些情况下, “拒绝 ”权限级别可能会替代 “允许 ”权限级别。
  • 不要更改对有效用户组进行的默认分配。 如果删除或设置 “查看实例级信息 ”权限以 拒绝 某个有效用户组,则组中没有用户能够访问项目、集合或部署,具体取决于你设置的组。
  • 不要将“仅分配给服务帐户”的权限分配给用户帐户。

基于角色的权限

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

预览功能

访问选择时,新功能由功能标志控制。 定期,Azure DevOps Services通过将新功能放在功能标志后面来引入新功能。 项目成员或组织所有者可以启用或禁用预览功能。 若要了解详细信息,请参阅 “管理”或“启用功能”。

后续步骤