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

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

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

主题内容

  • 定义权限并分配给组

  • 组宏和默认组

  • 嵌套组和分配组成员

  • 定义团队

  • 分配集合级别权限

  • 分配项目级别权限

  • 分配权限以控制区域路径

  • 分配权限以控制迭代路径

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

有关如何自定义工作项类型以允许或拒绝对组或用户的访问的信息,请参阅将规则应用于工作项字段

有关如何管理用户和组以及控制对 Visual Studio Application Lifecycle Management (ALM) 的访问的详细信息,请参阅管理 TFS 中用户或组

定义权限并分配给组

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

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

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

元素

特性

描述

group

name

指定要创建的组的名称。

isTeam

指示组是否是团队(“true”或 false)。

description

说明该组对其他用户的作用。

member

name

指定要添加为另一个组的成员的某个组的名称。 可以创建组并使用以下任何成员类型预填充这些组:

  • Team Foundation Server 中定义的默认组

  • 以前在 groupsandpermissions.xml 文件中创建的项目组(例如,[$$PROJECTNAME$$]\Contributors)

  • 在 Active Directory 中定义的组和用户,应使用以下格式指定这些组和用户:

    • DOMAIN\USERNAME

    • DOMAIN\GROUPNAME

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

permission

name

标识要应用的权限。 有关支持的权限的列表,请参阅本主题后面的以下部分:

  • 分配集合级别权限

  • 分配项目级别权限

  • 分配权限以控制区域路径

  • 分配权限以控制迭代路径

class

标识要在其中授予组权限的类或区域。 以下为有效值:

  • NAMESPACE:指定集合级别权限。

  • PROJECT:指定项目级别权限。

  • CSS_NODE:指定用于查看和管理团队项目的区域路径的权限。

  • ITERATION_NODE:指定用于查看和管理团队项目的迭代路径的权限。

allow

使用 truefalse 值指示是允许还是拒绝权限。

path

标识要在其中应用权限的区域路径或迭代路径的节点。 只有当 class 设置为 CSS_NODE 或 ITERATION_NODE 时,该属性才有效。

组宏和默认组

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

备注

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

默认组

项目集合管理员

[SERVER]\$$PROJECTCOLLECTIONADMINGROUP$$

[SERVER]\$$TEAMFOUNDATIONADMINGROUP$$

$$COLLECTIONADMINGROUP$$

项目集合服务帐户

[SERVER]\$$PROJECTCOLLECTIONSERVICESGROUP$$

项目集合生成服务帐户

[SERVER]\$$PROJECTCOLLECTIONBUILDSERVICESGROUP$$

$$COLLECTIONBUILDSERVICESGROUP$$

项目集合生成管理员

[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>

定义团队

除创建组外,还可将组分配为团队。 创建团队项目的同时会创建一个默认团队。 如果你有几个需要与其他团队分开组织工作的团队,则可以在组和权限插件文件中定义这些团队,也可以在创建团队项目之后进行配置。 请参阅添加另一个团队或团队层次结构

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

<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>

分配集合级别权限

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

  • 集合级别的用户和组,如项目集合管理员

  • 已在运行 Team Foundation 的服务器上添加至集合级别的项目级别组

  • 你创建并添加至集合级别的自定义组

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

备注

可以通过在团队资源管理器中右击服务器,然后单击“安全”来设置这些权限,也可以通过打开并使用 Team Foundation 的管理控制台进行设置,或者通过使用 TFSSecuritytf 命令行工具来设置。有关详细信息,请参阅Collection-Level Groups使用 TFSSecurity 更改组和权限Permission Command

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

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

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

备注

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

权限

描述

DIAGNOSTIC_TRACE

改变跟踪设置。 可以更改跟踪设置,以收集有关 Team Foundation Server Web 服务的更详细的诊断信息。

CREATE_PROJECTS

创建新项目。 可在团队项目集合中创建项目。

GENERIC_WRITE

编辑集合级别信息。 可以在团队项目集合中编辑用户和组的集合级别权限。 具有此权限的用户可以执行以下任务:

  • 在 Team Foundation Server 集合中添加、删除或重命名集合级别的应用程序组。

    备注

    不能删除“项目集合管理员”等默认集合级别组。

  • 添加或删除 Windows 用户或其他 Team Foundation Server 应用程序组中的某个用户或组(在服务器级别)。

  • 更改用户和组的集合级别权限。

此外,具有此权限的用户可以修改版本控制权限,他们具有对版本控制中的所有文件的写权限,除非其权限被其他权限显式拒绝。

MANAGE_TEMPLATE

管理过程模板。 可以为团队项目集合下载、创建、编辑和上载过程模板。

MANAGE_TEST_CONTROLLERS

管理测试控制器。 可以注册和取消注册团队项目集合的测试控制器。

MANAGE_LINK_TYPES

管理工作项链接类型。 可以添加、删除和更改工作项的链接类型。

GENERIC_READ

查看集合级别信息。 可以查看集合级别的组成员资格以及这些用户的权限。

分配项目级别权限

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

下面的示例演示如何向团队项目的参与者组授予多种权限。

<group name="Contributors" description="Members of this group can add, modify, and delete items within the team 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>

下表描述了可分配的项目级别权限,并指明了在 MSF 过程模板中所做的默认分配。

权限

描述

访问者

参与者

生成管理员

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 中编辑用户和组的项目级别权限。

分配权限以控制区域路径

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

下面的示例演示如何向团队项目的参与者组授予多种权限。

<group name="Contributors" description="Members of this group can add, modify, and delete items within the team 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>

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

备注

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

权限

描述

访问者

参与者

生成管理员

GENERIC_READ

查看此节点。 可以查看区域节点的安全设置。

选中标记 选中标记 选中标记

WORK_ITEM_READ

查看此节点中的工作项。 可以查看但不能更改分配给区域节点的工作项。

选中标记 选中标记 选中标记

WORK_ITEM_WRITE

编辑此节点中的工作项。 可以编辑分配给区域节点的工作项。

选中标记 选中标记

MANAGE_TEST_PLANS

管理测试计划。 可以创建和编辑分配给区域节点的测试计划。 如果测试计划还未运行,则还可以删除它们。

选中标记 选中标记

CREATE_CHILDREN

创建子节点并对子节点排序。 可创建区域节点。 同时具有此权限以及 GENERIC_WRITE 权限的用户可以移动任何子区域节点或对任何子区域节点重新排序。

DELETE

删除此节点。 可以删除区域节点。

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

GENERIC_WRITE

编辑此节点。 可以设置区域节点的权限,并重命名区域节点。

分配权限以控制迭代路径

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

下面的示例演示如何向团队项目的参与者组授予多种权限:

<group name="Contributors" description="Members of this group can add, modify, and delete items within the team 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>

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

备注

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

权限

描述

GENERIC_READ

查看此节点。 可以查看节点的安全设置。

CREATE_CHILDREN

创建子节点并对子节点排序。 可创建迭代节点。 同时具有此权限以及 GENERIC_WRITE 权限的用户可以移动任何迭代节点或对任何迭代节点重新排序。

DELETE

删除此节点。 可以删除迭代节点。

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

GENERIC_WRITE

编辑此节点。 可以设置迭代节点的权限,并重命名节点。

请参见

概念

使用组和权限插件定义组、团队和权限

控制对功能区域的访问

管理 TFS 中用户或组

Team Foundation Server 权限参考