Team Foundation Server 权限

更新:2010 年 7 月

可以在 Visual Studio Team Foundation Server 部署中控制对团队项目和团队项目集合的访问权限,具体做法是了解并配置在该部署中向用户和组分配的权限。

提示

本主题不讨论针对 SharePoint 产品 或 SQL Server Reporting Services 的权限。 本主题只讨论在 Team Foundation Server 中设置的权限。 有关 Reporting Services 的更多信息,请参见 SQL Server Reporting Services 角色。 有关 SharePoint 产品 的更多信息,请参见SharePoint 产品和 Team Foundation Server 之间的交互SharePoint 产品中的角色。 有关如何为 Team Foundation Server 中的用户设置 Reporting Services 和 SharePoint 产品 中的权限的更多信息,请参见向团队项目中添加用户设置对团队项目集合的管理员权限设置 Team Foundation Server 的管理员权限

权限决定了是否授权用户进行工作区管理和项目创建等操作。 当在 Team Foundation Server 中创建项目时,无论选择哪种过程模板,都会为该项目创建四个默认组。 默认情况下,为这些组各自定义了一些权限,这些权限决定了组成员可以执行的操作。

  • Project Administrators

  • Contributors

  • Readers

  • Builders

除为每个团队项目创建的默认组外,当创建团队项目集合时,无论选择哪种过程模板,都会为该集合创建七个默认组。 而且还为每个组定义了一些权限。

  • Project Collection Administrators

  • Project Collection Service Accounts

  • Project Collection Build Administrators

  • Project Collection Build Service Accounts

  • Project Collection Valid Users

  • Collection Proxy Service Accounts

  • Project Collection Test Service Accounts

当安装 Team Foundation Server 时,将在服务器级别创建五个默认组。 而且为每个组定义了一些权限。

  • Team Foundation Administrators

  • Team Foundation Service Accounts

  • Team Foundation Valid Users

  • SharePoint Web Application Services

  • Work Item Only View Users

若要有效地管理这些默认组中的用户成员资格以及创建自定义组,管理员必须先了解权限的含义以及显式设置权限引起的安全问题。

权限设置

可以为 Team Foundation Server 中的权限指定两种显式授权设置:“拒绝”“允许”。 还有一种隐式授权,它既不将权限设置为**“允许”,也不将权限设置为“拒绝”。 此授权是一种隐式“拒绝”**设置,又称为“未设置”。

拒绝

“拒绝”不允许授权用户或组执行权限说明中提到的操作。 “拒绝”是 Team Foundation Server 中最强大的权限设置。 如果用户所属的 Team Foundation Server 组将特定权限设置为**“拒绝”,那么即使用户所属的另一个组将该权限设置为“允许”,该用户仍无法执行该功能。 此规则的唯一例外是用户属于项目的“Project Administrators (项目管理员)”组的、团队项目集合的“Project Collection Administrators”组或Team Foundation Administrators”**组。 如果用户属于项目的 Project Administrators 组,则该组的权限会覆盖该用户在项目中的显式“拒绝”。 同样,如果用户属于项目的 Project Collection Administrators 组,则该组的权限会覆盖该用户在该集合中的显式“拒绝”。 如果用户属于 Team Foundation Administrators 组,则该组的权限会覆盖该用户在 Team Foundation Server 中的显式“拒绝”。

允许

“允许”则允许授权用户或组执行权限说明中提到的操作。 “允许”是 Team Foundation Server 中第二强大的权限设置,最常使用。 如果不将权限显式设置为**“允许”**,用户或组将不能在 Team Foundation Server 中执行该操作。

未设置

默认情况下,Team Foundation Server 中的多数权限既没有设置为**“拒绝”,也没有设置为“允许”。 权限处于“未设置”状态,它隐式拒绝授权用户和组执行权限说明中指定的操作。 但是,因为权限既没有显式设置为“拒绝”,也没有显式设置为“允许”**,它可以从用户或组所属的其他组继承授权。

继承

当用户或组的权限为“未设置”时,因为 Team Foundation Server 中的权限是可继承的,所以用户或组可能受到其所属组权限的显式设置的影响。 例如,用户可能属于一个项目中的两个自定义组。 如果其中一个组的某个权限显式设置为**“拒绝”,另一个组的同一权限未设置,则该用户将无权执行此权限所控制的操作。 该用户从两个组中继承权限,“拒绝”**权限优先于未设置的权限。

提示

在 Team Foundation Server 以外(如 SharePoint 产品 中)设置的权限不会在 Team Foundation Server 中被继承。 本主题中不对其进行讨论。

某些授权设置优先于其他授权设置。 在 Team Foundation Server 中,“拒绝”权限优先于包括“允许”在内的所有其他权限设置(对于该显式结构)。 如果“拒绝”权限是从层次结构父元素(如版本控制)继承的,则不优先。 例如,用户可能属于一个项目中的两个组。 对于其中一个组,“发布测试结果”权限设置为“拒绝”;而另一个组则将该权限设置为**“允许”**。 **“拒绝”**设置优先级更高,用户无权发布测试结果。 此规则的唯一例外是从层次结构父元素继承显式“拒绝”或者用户属于下列组之一:

  • Project Administrators

  • Project Collection Administrators

  • Team Foundation Administrators

在层次结构(如版本控制和工作项跟踪)中,在特定对象上设置的显式权限会覆盖从父对象继承的显式权限。

通过 Team Foundation Server 用户界面和命令行设置权限

许多要为 Team Foundation Server 设置的权限是通过 Team Foundation Server 用户界面控制的。 可以根据服务器(服务器级别权限)、集合(集合级别权限)或项目(项目级别权限)设置这些权限。 还可以根据项目为查看工作项以及与工作项交互设置区域级别和迭代级别权限。 有关如何为用户和组设置权限的更多信息,请参见配置用户、组和权限管理权限

服务器级别权限

服务器级别权限不特定于单个团队项目或团队项目集合。 它们是在部署范围内设置的,它们授予可影响部署中的每个项目和集合的权限。

只能为两个类别的用户设置这些权限:

  • 服务器级别的用户和组,如 Team Foundation Administrators

  • 您创建并添加至服务器级别的自定义组

可以打开 Team Foundation 的管理控制台来设置这些权限。 还可以使用 TFSSecurity 命令行工具来设置这些权限。 有关更多信息,请参见使用 Team Foundation 管理控制台配置服务器使用 TFSSecurity 更改组和权限

下表列出每个服务器级别权限,并提供简要的用途说明。

权限名称

命令行中的名称

说明

创建团队项目集合

CreateCollection

具有此权限的用户可以在 Team Foundation Server 中创建和管理团队项目集合。

删除团队项目集合

DeleteCollection

具有此权限的用户可以从部署中删除团队项目集合。

注意注意
删除团队项目集合将不会从 SQL Server 中删除该集合的数据库。

编辑实例级别信息

GENERIC_WRITE

tf: AdminConfiguration

tf: AdminConnections

具有此权限的用户可以编辑 Team Foundation Server 中用户和组的服务器级别权限。 他们可以在集合中添加或移除服务器级别的应用程序组。 当通过菜单设置时,“编辑实例级别信息”权限还将隐式允许用户修改版本控制权限。 若要在命令提示符处授予所有这些权限,则除 GENERIC_WRITE 外,还必须使用 tf.exe Permission 命令授予 AdminConfigurationAdminConnections 权限。

注意   无法移除 Team Foundation Administrators 等默认服务器级别组。

代表其他项发出请求

Impersonate

具有此权限的用户可以代表其他用户或服务执行操作。 此权限只应指派给服务帐户。

触发事件

TRIGGER_EVENT

具有此权限的用户可以在 Team Foundation Server 中触发警报事件。 此权限只应指派给服务帐户以及 Team Foundation Administrators 组的成员。

使用完全 Web 访问权限功能

FullAccess

具有此权限的用户可以使用 Team Web Access 的所有功能。

查看实例级别信息

GENERIC_READ

具有该权限的用户可以查看服务器级别的组成员资格以及那些用户的权限。

集合级别权限

集合级别权限不特定于单个项目, 而是在集合范围内设置的。 只能为三个类别的用户设置这些权限:

  • 集合级别的用户和组,如 Project Collection Administrators

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

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

可以通过在团队资源管理器中右击服务器,然后单击**“安全”**来设置这些权限,也可以在 Team Foundation 的管理控制台中设置它们。 还可以使用 TFSSecurity 命令行工具来设置这些权限,带有 tf: 标识的命令行工具除外。 对于带有 tf: 标识的工具,使用版本控制的 tf 命令行实用工具的 Permission 命令来设置这些权限。 有关更多信息,请参见集合级别组使用 TFSSecurity 更改组和权限Permission 命令

权限名称

命令行中的名称

说明

管理搁置的更改

tf: AdminShelvesets

具有该权限的用户可以删除其他用户创建的搁置集。

管理仓库

ADMINISTER_WAREHOUSE

具有该权限的用户可以使用 WarehouseController.asmx Web 服务的 ChangeSetting Web 方法更改仓库设置。 例如,您可以允许用户设置计算 OLAP 多维数据集的更新时间间隔。

管理工作区

tf: AdminWorkspaces

具有该权限的用户可以为其他用户创建工作区并删除其他用户创建的工作区。

改变跟踪设置

DIAGNOSTIC_TRACE

具有此权限的用户可以更改跟踪设置,以收集有关 Team Foundation Server Web 服务的更详细的诊断信息。

创建工作区

tf: CreateWorkspace

具有该权限的用户可以创建版本控制工作区。

创建新项目

CREATE_PROJECTS

具有此权限的用户可以在团队项目集合中创建项目。

注意注意
您不仅必须拥有此权限,还必须以管理员身份运行 Visual Studio,才能成功完成“新建团队项目向导”。有关更多信息,请参见创建团队项目

删除团队项目

Delete

具有此权限的用户可以删除团队项目集合中的团队项目。

重要说明重要事项
删除团队项目将会删除所有与该项目关联的数据。不能撤消团队项目的删除,除非将集合恢复到删除项目之前的某个点。

删除团队项目集合

DeleteCollection

具有此权限的用户可以移除团队项目集合。

编辑集合级别信息

GENERIC_WRITE

tf: AdminConfiguration

tf: AdminConnections

具有此权限的用户可以编辑团队项目集合中用户和组的集合级别权限。 他们可以在集合中添加或移除集合级别的 Team Foundation Server 应用程序组。 当通过菜单设置时,“编辑集合级别信息”权限还将隐式允许用户修改版本控制权限。 若要在命令提示符处授予所有这些权限,则除 GENERIC_WRITE 外,还必须使用 tf.exe Permission 命令授予 AdminConfigurationAdminConnections 权限。

注意注意
无法移除 Project Collection Administrators 等默认集合级别组。

代表其他项发出请求

Impersonate

具有此权限的用户可以代表其他用户或服务执行操作。 此权限只应指派给服务帐户。

管理生成资源

ManageBuildResources

具有此权限的用户可以管理团队项目集合的生成计算机、生成代理和生成控制器。 这些用户还可以授予或拒绝其他用户的“查看生成资源”“使用生成资源”权限。

管理过程模板

MANAGE_TEMPLATE

具有此权限的用户可以为团队项目集合下载、创建、编辑和上载过程模板。

管理测试控制器

MANAGE_TEST_CONTROLLERS

具有此权限的用户可以注册和取消注册团队项目集合的测试控制器。

管理工作项链接类型

WORK_ITEM_WRITE

具有此权限的用户可以添加、移除和更改工作项的链接类型。

触发事件

TRIGGER_EVENT

具有此权限的用户可以在团队项目集合中触发项目警报事件。 此权限只应指派给服务帐户。

使用生成资源

UseBuildResources

具有此权限的用户可以保留和分配生成代理。 此权限只应指派给生成服务的服务帐户。

查看生成资源

ViewBuildResources

具有此权限的用户可以查看为集合配置的生成控制器和生成代理。 若要使用这些资源,您需要更多权限。

查看集合级别信息

GENERIC_READ

具有此权限的用户可以查看集合级别的组成员资格以及那些用户的权限。

查看系统同步信息

SYNCHRONIZE_READ

具有此权限的用户可以调用同步应用程序编程接口。 此权限只应指派给服务帐户。

查看测试运行

VIEW_TEST_RESULTS

具有此权限的用户可以查看此节点中的测试计划。

项目级别权限

项目级别权限特定于单个项目的用户和组。 您可以通过在 Team Foundation Server 中右击团队资源管理器中的项目,单击**“团队项目设置”再单击“安全”**来设置这些权限。 还可以使用 TFSSecurity 命令行工具来设置这些权限。

权限名称

命令行中的名称

说明

创建测试运行

PUBLISH_TEST_RESULTS

具有此权限的用户可以添加或移除测试结果,也可以添加或修改团队项目的测试运行。

删除团队项目

Delete

具有此权限的用户可以从 Team Foundation Server 中删除他们有权删除的项目。

删除测试运行

DELETE_TEST_RESULTS

具有此权限的用户可以删除该团队项目的计划测试。

编辑项目级信息

GENERIC_WRITE

具有此权限的用户可以编辑 Team Foundation Server 上用户和组的项目级别权限。

管理测试配置

MANAGE_TEST_CONFIGURATIONS

具有此权限的用户可以创建和删除该团队项目的测试配置。

管理测试环境

MANAGE_TEST_ENVIRONMENTS

具有此权限的用户可以创建和删除该团队项目的测试环境。

查看项目级信息

GENERIC_READ

具有该权限的用户可以查看项目级别的组成员资格以及那些项目用户的权限。

查看测试运行

VIEW_TEST_RESULTS

具有此权限的用户可以查看此节点中的测试计划。

生成级别的权限

生成级别权限特定于单个项目的用户和组。 可以在团队项目级别设置生成权限,也可以为特定生成定义设置权限。 可以通过打开团队资源管理器中的项目,右击**“生成”,然后单击“安全”来设置这些权限。 可以通过右击生成定义,然后单击“安全”,来对特定生成定义应用权限。 如果您希望对生成文件夹应用权限,请右击该文件夹,然后单击“安全”**。 此外,您还可以使用 TFSSecurity 命令行工具设置这些权限。

权限名称

命令行中的名称

说明

查看生成

ViewBuilds

具有此权限的用户可以查看该团队项目的已排队和已完成的生成。

编辑版本质量

EditBuildQuality

具有此权限的用户可以通过 Team Foundation Build 用户界面添加有关版本质量的信息。

无限期保留

RetainIndefinitely

具有此权限的用户可以标记生成,以使它不会自动被任何适用的保留策略删除。

删除生成

DeleteBuilds

具有此权限的用户可以删除已完成的生成。

管理生成质量

ManageBuildQualities

具有此权限的用户可以添加或移除生成质量。

销毁生成

DestroyBuilds

具有此权限的用户可以永久性删除已完成的生成。

更新生成信息

UpdateBuildInformation

具有此权限的用户可以添加有关生成质量的信息。 此权限只应指派给服务帐户。

为生成排队

QueueBuilds

具有此权限的用户可以通过 Team Foundation Build 界面或在命令提示符处将生成排入队列。 

管理生成队列

ManageBuildQueue

具有此权限的用户可以取消、推迟已排队的生成或者重新设置其优先级。

停止生成

StopBuilds

具有此权限的用户可以停止正在进行的生成。

查看生成定义

ViewBuildDefinition

具有此权限的用户可以查看已为该团队项目创建的生成定义。

编辑生成定义

EditBuildDefinition

具有此权限的用户可以创建和修改该项目的生成定义。

删除生成定义

DeleteBuildDefinition

具有此权限的用户可以删除该项目的生成定义。

重写由生成执行的签入验证

OverrideBuildCheckInValidation

具有此权限的用户可以在先不触发系统搁置并生成变更的情况下提交影响封闭生成定义的变更集。 此权限只应指派给生成服务的服务帐户以及负责代码质量的生成管理员。 有关更多信息,请参见签入由封闭签入生成控制的挂起的更改

工作项跟踪的区域级别权限

区域级别权限特定于单个项目的用户和组。 您可以通过右击团队资源管理器中的项目,单击**“区域和迭代”,在“区域”选项卡上单击“安全”**来设置这些权限。 此外,您还可以使用 TFSSecurity 命令行工具设置这些权限。

提示

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

权限名称

命令行中的名称

说明

创建子节点并对子节点排序

CREATE_CHILDREN

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

删除此节点

DELETE

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

编辑此节点

GENERIC_WRITE

具有此权限的用户可以设置该节点的权限和重命名区域节点。

编辑此节点中的工作项

WORK_ITEM_WRITE

具有该权限的用户可以编辑此区域节点中的工作项。

管理测试计划

MANAGE_TEST_PLANS

具有此权限的用户可以创建和编辑该节点的测试计划。 如果测试计划还未运行,则还可以删除它们。

查看测试运行

VIEW_TEST_RESULTS

具有此权限的用户可以查看此节点中的测试计划。

查看此节点

GENERIC_READ

具有此权限的用户可以查看该节点的安全设置。

查看此节点中的工作项

WORK_ITEM_READ

具有此权限的用户可以查看,但不能更改该区域节点中的工作项。

工作项跟踪的迭代级别权限

迭代级别权限特定于单个项目的用户和组。 您可以通过右击团队资源管理器中的项目,单击**“区域和迭代”,在“迭代”选项卡上单击“安全”**来设置这些权限。 此外,您还可以使用 TFSSecurity 命令行工具设置这些权限。

提示

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

权限名称

命令行中的名称

说明

创建子节点并对子节点排序

CREATE_CHILDREN

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

删除此节点

DELETE

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

编辑此节点

GENERIC_WRITE

具有此权限的用户可以设置该节点的权限和重命名迭代节点。

查看此节点

GENERIC_READ

具有此权限的用户可以查看该节点的安全设置。

版本控制权限

版本控制权限特定于源代码文件和文件夹。 可以通过右击**“源代码管理资源管理器”中的文件夹或文件,单击“属性”,然后单击“安全”选项卡来设置这些权限。 在该选项卡上,可以单击要更改权限的用户或组,然后编辑“权限”**中所列的权限。 还可以使用版本控制的 tf 命令行工具来设置这些权限。

权限名称

命令行中的名称

说明

读取

tf: Read

具有该权限的用户可以读取文件或文件夹的内容。 如果用户对文件夹有“读取”权限,则即使用户没有打开文件的权限,也可以查看文件夹的内容以及其中的文件的属性。

签出

tf: PendChange

具有该权限的用户可以执行签出并对文件夹中的项执行挂起更改。 挂起更改的示例包括添加、编辑、重命名、删除、撤消删除、分支和合并文件。

签入

tf: Checkin

具有该权限的用户可以签入项并修订任何提交的变更集注释。 签入时将提交挂起的更改。

Label

tf: Label

具有该权限的用户可以对项进行标签。

锁定

tf: Lock

具有该权限的用户可以锁定或取消锁定文件夹或文件。

修订其他用户的更改

tf: ReviseOther

即使其他用户签入了文件,具有该权限的用户仍可以编辑该签入文件上的注释。

取消锁定其他用户的更改

tf: UnlockOther

具有该权限的用户可以取消锁定其他用户锁定的文件。

撤消其他用户的更改

tf: UndoOther

具有该权限的用户可以撤消其他用户所做的挂起的更改。

管理标签

tf: LabelOther

具有该权限的用户可以编辑或删除其他用户创建的标签。

管理权限

具有此权限的用户可以管理其他用户对版本控制中的文件夹和文件的权限。

签入其他用户的更改

tf: CheckinOther

具有该权限的用户可以签入其他用户所做的更改。 签入时将提交挂起的更改。

合并

tf: Merge

对给定的路径具有此权限的用户可以将更改合并到该路径中。

管理分支

tf: ManageBranch

对给定的路径具有此权限的用户可以将该路径下的任何文件夹都转换为分支。 具有此权限的用户还可以对分支执行以下操作:编辑其属性、重新设置其父级、将其转换为文件夹。

具有此权限的用户只有在还具有目标路径的“合并”权限时,才可以对该分支执行分支操作。 如果用户对某个分支没有“管理分支”权限,就无法从该分支创建分支。

Lab Management 权限

Visual Studio 实验室管理工具版权限特定于虚拟机、环境和其他资源。 可以使用 TFSLabConfig 命令行工具来设置这些权限。

权限名称

命令行中的名称

说明

查看实验室资源

Read

具有此权限的用户可以查看多种 实验室管理工具版 资源的信息,包括集合主机组、项目主机组和环境。 若要查看有关特定实验室资源的信息,您必须对该资源具有“查看实验室资源”权限。

管理实验室位置

ManageLocation

具有此权限的用户可以编辑实验室管理工具版资源的位置,包括集合主机组、集合库共享、项目主机组和项目库共享。 若要编辑特定位置,您必须对该位置具有“管理实验室位置”权限。

集合级别位置(项目主机组和集合库共享)的此权限还能让您创建项目级别位置(项目主机组和项目库共享)。

删除实验室位置

DeleteLocation

具有此权限的用户可以删除 实验室管理工具版 资源的位置,包括集合主机组、集合库共享、项目主机组和项目库共享。 若要删除某个位置,您必须对该位置具有“删除实验室位置”权限。

写入环境和虚拟机

Write

对项目主机组具有此权限的用户可以创建环境。 对项目库共享拥有此权限的用户可以存储环境和模板。

编辑环境和虚拟机

Edit

具有此权限的用户可以编辑环境和模板。 会针对要编辑的对象检查权限。

删除环境和虚拟机

Delete

具有此权限的用户可以删除环境和模板。 会针对要删除的对象检查权限。

导入虚拟机

Create

具有此权限的用户可以从 VMM 库共享中导入虚拟机。

此权限不同于“写入”,因为它仅在 实验室管理工具版 中创建对象,而不向 Virtual Machine Manager 主机组或库共享中写入任何内容。

管理权限

ManagePermissions

具有此权限的用户可以修改 实验室管理工具版 对象的权限。 会针对要修改权限的对象检查此权限。

管理子级权限

ManageChildPermissions

具有此权限的用户可以更改所有子级 实验室管理工具版 对象的权限。 例如,如果用户对某个团队项目主机组具有“管理子级权限”,该用户就可以更改该团队项目主机组下的所有环境的权限。

启动

Start

具有此权限的用户可以启动环境。

停止

Stop

具有此权限的用户可以停止环境。

暂停环境

Pause

具有此权限的用户可以暂停环境。

管理快照

ManageSnapshots

具有此权限的用户可以对环境执行所有快照管理任务,包括拍摄快照、还原为快照、重命名快照、删除快照和读取快照。

请参见

任务

打开 Team Foundation 管理控制台

参考

Permission 命令

概念

配置用户、组和权限

服务器级组

使用 TFSLabConfig 配置 Lab Management

使用测试计划定义测试工作量

其他资源

使用 TFSSecurity 更改组和权限

Team Foundation 版本控制命令行参考

管理权限

集合级别组

项目级别组

使用 TFSSecurity 更改组和权限

修订记录

日期

修订记录

原因

2010 年 7 月

更新了有关“创建新项目”权限的其他要求的说明。

客户反馈