配置初始组、团队、成员和权限

Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

通过使用组和权限插件文件,可以配置项目的初始安全设置。 通过定义可创建安全组、嵌套组、将组定义为团队、配置初始团队设置、分配组成员以及允许或拒绝每个组的特定权限的任务,你可以实现这一目的。 除执行这些任务以外,你还可以为集合级别、项目级别和项目分类区域指定初始安全设置。

Microsoft 过程模板为默认组分配多个权限。 可通过自定义组和权限的插件文件来修改这些分配方式。 有关此插件的详细信息,请参阅 定义组、团队和权限

有关如何为项目的功能区域(如 Team Foundation Build、Team Foundation 版本控制和 Visual Studio 实验室管理)配置初始安全设置的信息,请参阅 控制对功能区域的访问

有关如何自定义工作项类型以允许或拒绝对组或用户的访问权限的信息,请参阅 规则和规则评估

有关如何管理用户和组以及控制 Visual Studio 应用程序生命周期管理 (ALM) 的访问的详细信息,请参阅 设置组以在 TFS 部署中使用

定义权限并分配给组

可以使用 成员 元素在 Team Foundation Server 中指定新的安全组,并将成员添加到该组。 可以使用组 权限 元素向组和该组的成员分配权限。 必须将每个元素封装在其相应的容器元素中: 权限成员。 其中的每个元素应采用以下语法结构:

<group name="Group Name" description="Description of Group"></group>  
<permission name="PermissionName" class="ClassName" allow="True | False"/>  
<member name="MemberName"></member>  

下表描述了 成员和组 权限 元素的属性。 只能在组和权限插件文件中使用这些元素。

元素 Attribute 说明
group name 指定要创建的组的名称。
isTeam 指示组是否为团队 (true) 或不 (false) 。
description 说明该组对其他用户的作用。
member name 指定要添加为另一个组的成员的某个组的名称。 可以创建组并使用以下任何成员类型预填充这些组:

  • 在 Team Foundation Server 中定义的默认组
  • 以前在GroupsandPermissions.xml文件中创建的项目组 (例如 [$$PROJECTNAME$$]\参与者)
  • 在 Active Directory 中定义的组和用户,应使用以下格式指定这些组和用户:

    • DOMAIN\USERNAME
    • DOMAIN\GROUPNAME

有关指定默认组时要使用的格式的信息,请参阅本主题后面的 组宏和默认组

权限容器元素必须位于成员容器元素之前。
permission name 标识要应用的权限。 有关支持的权限的列表,请参阅本主题后面的以下部分:

- 分配集合级权限
- 分配项目级权限
- 分配控制区域路径的权限
- 分配控制迭代路径的权限

权限容器元素必须位于成员容器元素之前。
class 标识要在其中授予组权限的类或区域。 以下为有效值:

- 命名空间:指定集合级权限。
- PROJECT:指定项目级权限。
- CSS_NODE:指定查看和管理项目区域路径的权限。
- ITERATION_NODE:指定用于查看和管理项目的迭代路径的权限。
-
允许 使用 truefalse 值指示是允许还是拒绝权限。
路径 标识要在其中应用权限的区域路径或迭代路径的节点。 仅当 设置为CSS_NODE或ITERATION_NODE时,此属性才有效。

组宏和默认组

下表列出了可用于指定 Team Foundation Server 中定义的默认组的宏。

注意

只能在组和权限的插件中指定下表中的宏。 当通过使用生成、版本控制或实验室管理的插件分配权限时,不能指定这些宏。

默认组
Project Collection Administrators [SERVER]\$$PROJECTCOLLECTIONADMINGROUP$$

[SERVER]\$$TEAMFOUNDATIONADMINGROUP$$

$$COLLECTIONADMINGROUP$$
Project Collection Service Accounts [SERVER]\$$PROJECTCOLLECTIONSERVICESGROUP$$
Project Collection Build Service Accounts [SERVER]\$$PROJECTCOLLECTIONBUILDSERVICESGROUP$$

$$COLLECTIONBUILDSERVICESGROUP$$
Project Collection Build Administrators [SERVER]\$$PROJECTCOLLECTIONBUILDADMINSGROUP$$

$$COLLECTIONBUILDADMINISTRATORSGROUP$$
项目管理员 $$PROJECTADMINGROUP$$

[$$PROJECTNAME$$]\$$PROJECTADMINGROUP$$

[$$PROJECTNAME$$]\Builders
项目创建者 $$CREATOR_OWNER$$

@creator
默认团队 @defaultTeam

示例:嵌套组和分配组成员

下面的示例演示如何配置名为 TestGroup1、TestGroup2 和 TestGroup3 的组。 此示例将 TestGroup1 添加为 TestGroup2 的成员。 为使此代码有效,在定义 TestGroup2 之前,必须先定义 TestGroup1。

<task id="GroupCreation1">   
    <taskXml>  
      <groups>  
        <group name="TestGroup1" description="Test group 1.  Contains no members out of the box.">  
          <permissions>  
            <permission name="GENERIC_READ" class="PROJECT" allow="true" />  
          </permissions>  
        </group>  
        <group name="TestGroup2" description="Test group 2.  Contains TestGroup1 and Project Administrators.">  
          <permissions>  
            <permission name="GENERIC_READ" class="PROJECT" allow="true" />  
          </permissions>  
          <members>  
            <member name="TestGroup1" />  
            <member name="$$PROJECTADMINGROUP$$" />  
          </members>  
        </group>  
        <group name="TestGroup3" description="Test group 3. Contains DOMAIN\USER, DOMAIN\GROUP, Project Administrators, and Project Collection Build Service Accounts.">  
          <permissions>  
            <permission name="GENERIC_READ" class="PROJECT" allow="true" />  
          </permissions>  
          <members>  
            <member name="DOMAIN\USER" />  
            <member name="DOMAIN\GROUP" />  
            <member name="[$$PROJECTNAME$$]\$$PROJECTADMINGROUP$$" />  
            <member name="[SERVER]\$$PROJECTCOLLECTIONBUILDSERVICESGROUP$$" />  
          </members>  
        </group>  
      </groups>  
    </taskXml>  
</task>  

定义团队

除创建组外,还可将组分配为团队。 创建项目还会创建默认团队。 如果有多个团队希望独立于其他团队组织其工作,则可以在组和权限插件文件中定义这些团队,也可以在创建项目后对其进行配置。 请参阅 “添加另一个团队”。

下面的示例演示如何将组配置为团队。 在此示例中,将组“梦想团队”指定为团队,并将项目创建者添加为团队成员。 你为团队指定的任何迭代路径都必须在分类插件文件中定义。 请参阅 “定义初始区域”、“迭代”和“项目映射”文件

<group name="Dream Team" isTeam="true" description="Next generation work">  
      <permissions>  
      <permission name="GENERIC_READ" class="PROJECT" allow="true" />  
      </permissions>  
      <members>  
      <member name="@creator"/>  
      </members>  
      <teamSettings areaPath="Area">  
      <iterationPaths backlogPath="Iteration">  
         <iterationPath path="Release 1\Sprint 1" />  
         <iterationPath path="Release 1\Sprint 2" />  
         <iterationPath path="Release 1\Sprint 3" />  
         <iterationPath path="Release 1\Sprint 4" />  
         <iterationPath path="Release 1\Sprint 5" />  
         <iterationPath path="Release 1\Sprint 6" />  
      </iterationPaths>  
      </teamSettings>  
</group>  

分配集合级别权限

可以使用组 权限 元素和 NAMESPACE 类分配集合级别权限。 这些权限控制对跨项目可用的资源的访问。 只能为以下类别的用户设置集合级别权限:

  • 集合级别的用户和组,如项目集合管理员
  • 已添加到运行 Team Foundation 的服务器上的集合级别的项目级组
  • 你创建并添加至集合级别的自定义组

有关指定组时要使用的格式,请参阅本主题前面的 组宏和默认组

以下示例演示如何向项目的项目管理员授予集合级权限。

<group name="PROJECTADMINGROUP" description="Members of this group can add, modify, and delete items within the project.">  
   <permissions>  
       <permission name="GENERIC_READ" class="NAMESPACE" allow="true" />  
       <permission name="WORK_ITEM_WRITE" class="NAMESPACE" allow="true" />  
       <permission name="MANAGE_TEMPLATE" class="NAMESPACE" allow="true" />  
       <permission name="MANAGE_TEST_CONTROLLERS" class="NAMESPACE" allow="true" />  
    </permissions>  
</group>  

下表描述了可以分配的集合级别权限。

注意

默认情况下,默认进程模板中未分配任何集合级权限。

权限 说明
DIAGNOSTIC_TRACE 更改跟踪设置。 可以更改跟踪设置,以便收集有关 Team Foundation Server Web 服务的更详细的诊断信息。
CREATE_PROJECTS 创建新项目。 可以在项目集合中创建项目。
GENERIC_WRITE 编辑集合级信息。 可以编辑项目集合中用户和组的集合级别权限。 具有此权限的用户可以执行以下任务:

- 从 Team Foundation Server 中的集合中添加、删除或重命名集合级应用程序组。 注意: 无法删除默认集合级别组,如项目集合管理员。
- 在 Server 级别) 在 Team Foundation Server (的 Windows 用户或组或其他应用程序组中添加或删除用户或组。
- 更改用户和组的集合级别权限。

此外,具有此权限的用户可以修改版本控制权限,他们具有对版本控制中的所有文件的写权限,除非其权限被其他权限显式拒绝。
MANAGE_TEMPLATE 管理进程模板。 可以下载、创建、编辑和上传过程模板到项目集合。
MANAGE_TEST_CONTROLLERS 管理测试控制器。 可以注册和取消注册项目集合的测试控制器。
GENERIC_READ 查看集合级别信息。 可以查看集合级别的组成员资格以及这些用户的权限。

分配项目级别权限

可在组和权限插件文件中分配项目级别权限。 使用组权限元素和 PROJECT 类分配这些 权限 。 这些权限控制对单个项目的资源的访问。 你可以向 Windows 中的用户和组、Team Foundation 中的组和之前在组和权限插件文件中定义的组授予访问权限。 有关指定组时要使用的格式,请参阅本主题前面的 组宏和默认组

以下示例演示如何向项目的“参与者”组授予多个权限。

<group name="Contributors" description="Members of this group can add, modify, and delete items within the project.">  
   <permissions>  
      <permission name="GENERIC_READ" class="PROJECT" allow="true" />  
      <permission name="DELETE_TEST_RESULTS" class="PROJECT" allow="true" />  
       <permission name="PUBLISH_TEST_RESULTS" class="PROJECT" allow="true" />  
       <permission name="VIEW_TEST_RESULTS" class="PROJECT" allow="true" />  
       <permission name="MANAGE_TEST_ENVIRONMENTS" class="PROJECT" allow="true" />  
      <permission name="MANAGE_TEST_CONFIGURATIONS" class="PROJECT" allow="true" />  
   </permissions>  
</group>  

下表描述了可以分配的项目级权限,并指示在默认进程模板中执行的默认分配。

权限 说明 读取者 作者 生成管理员
GENERIC_READ 查看项目级信息。 可以查看项目级别的组成员资格以及这些成员的权限。 复选标记 复选标记 复选标记
VIEW_TEST_RESULTS 查看测试运行。 可以查看此节点中的测试计划。 复选标记 复选标记 复选标记
MANAGE_TEST_CONFIGURATIONS 管理测试配置。 可以为项目创建和删除测试配置。 复选标记 复选标记
MANAGE_TEST_ENVIRONMENTS 管理测试环境。 可以为项目创建和删除测试环境。 复选标记 复选标记
PUBLISH_TEST_RESULTS 创建测试运行。 可以添加和删除测试结果,并添加或修改项目的测试运行。 复选标记 复选标记
DELETE_TEST_RESULTS 删除测试运行。 可以删除项目的计划测试。 复选标记 复选标记
DELETE 删除项目。 可以从 Team Foundation Server 中删除用户具有此权限的项目。
GENERIC_WRITE 编辑项目级信息。 可以编辑 Team Foundation Server 中用户和组的项目级权限。

分配权限以控制区域路径

可以使用组 权限 元素和 CSS_NODE 类分配控制对区域定义的访问权限。 这些权限控制对单个项目的分类结构的访问。 你可以向 Windows 中的用户和组、Team Foundation 中的组和之前在组和权限插件文件中定义的组授予访问权限。 有关指定组时要使用的格式的信息,请参阅本主题前面的 组宏和默认组

以下示例演示如何向项目的“参与者”组授予多个权限。

<group name="Contributors" description="Members of this group can add, modify, and delete items within the project.">  
   <permissions>  
      <permission name="GENERIC_READ" class="CSS_NODE" allow="true" />  
      <permission name="WORK_ITEM_READ" class="CSS_NODE" allow="true" />  
      <permission name="WORK_ITEM_WRITE" class="CSS_NODE" allow="true" />  
      <permission name="MANAGE_TEST_PLANS" class="CSS_NODE" allow="true" />  
   </permissions>  
</group>  

下表描述了可分配的权限,这些权限用于控制对项目区域节点和迭代节点的分层结构的访问。 该表还指示在默认进程模板中执行的默认分配。

注意

用于跟踪工作项的某些操作需要多个权限。 例如,你需要多种权限来删除节点。

权限 说明 读取者 作者 生成管理员
GENERIC_READ 查看此节点。 可以查看区域节点的安全设置。 复选标记 复选标记 复选标记
WORK_ITEM_READ 查看此节点中的工作项。 可以查看但不能更改分配给区域节点的工作项。 复选标记 复选标记 复选标记
WORK_ITEM_WRITE 编辑此节点中的工作项。 可以编辑分配给区域节点的工作项。 复选标记 复选标记
MANAGE_TEST_PLANS 管理测试计划。 可以创建和编辑分配给区域节点的测试计划。 如果测试计划还未运行,则还可以删除它们。 复选标记 复选标记
CREATE_CHILDREN 创建和订购子节点。 可创建区域节点。 同时具有此权限以及 GENERIC_WRITE 权限的用户可以移动任何子区域节点或对任何子区域节点重新排序。
DELETE 删除此节点。 可以删除区域节点。

同时具有此权限以及对另一个节点的 GENERIC_WRITE 权限的用户可以删除区域节点并对所删节点中的现有工作项重新分类。 如果删除的节点有子节点,则子节点也会被删除。
GENERIC_WRITE 编辑此节点。 可以设置区域节点的权限,并重命名区域节点。

分配权限以控制迭代路径

可以使用组 权限 元素和 ITERATION_NODE 类分配控制对迭代路径的访问的权限。 这些权限控制对单个项目的里程碑发行版或迭代的访问。 你可以向 Windows 中的用户和组、默认 TFS 组和之前在“组和权限”插件文件中定义的组授予访问权限。 有关指定组时要使用的格式的信息,请参阅本主题前面的 组宏和默认组

以下示例演示如何向项目的参与者组授予多个权限:

<group name="Contributors" description="Members of this group can add, modify, and delete items within the project.">  
   <permissions>  
      <permission name="GENERIC_READ" class="ITERATION_NODE" allow="true" />  
      <permission name="GENERIC_WRITE" class="ITERATION_NODE" allow="true" />  
      <permission name="CREATE_CHILDREN" class="ITERATION_NODE" allow="true" />  
   </permissions>  
</group>  

下表描述了可分配的权限,这些权限用于控制对项目迭代节点的分层结构的访问。 由于默认进程模板未指定任何 ITERATION_NODE 权限,因此所有团队成员都可以创建、查看和删除迭代节点。

注意

用于跟踪工作项的某些操作需要多个权限。 例如,你需要多种权限来删除节点。

权限 说明
GENERIC_READ 查看此节点。 可以查看节点的安全设置。
CREATE_CHILDREN 创建和订购子节点。 可创建迭代节点。 同时具有此权限以及 GENERIC_WRITE 权限的用户可以移动任何迭代节点或对任何迭代节点重新排序。
DELETE 删除此节点。 可以删除迭代节点。

同时具有此权限以及对另一个节点的 GENERIC_WRITE 权限的用户可以删除迭代节点并对所删节点中的现有工作项重新分类。 如果删除的节点有子节点,则子节点也会被删除。
GENERIC_WRITE 编辑此节点。 可以设置迭代节点的权限,并重命名节点。