Team Foundation Server 权限
权限决定了是否授权用户进行工作区管理和项目创建等操作。在 Team Foundation Server 中创建项目时,无论您选择哪个过程模板,都会为项目创建四个默认组。默认情况下,为这些组各自定义了一组权限,这些权限决定了组成员可以执行的操作。
· Project Administrator
· Contributor
· Reader
· Build Services。
要管理默认组并创建自定义组,管理员必须了解权限的含义以及显式设置权限引起的安全问题。
权限设置
Team Foundation Server 中的权限有两种显式授权设置:“拒绝”和“允许”。还有一种隐式授权,它既不将权限设置为“允许”,也不将其设置为“拒绝”。该授权是一种隐式拒绝设置,又称为“未设置”。
拒绝
“拒绝”不允许授权用户或组执行权限说明中提到的操作。“拒绝”是 Team Foundation Server 中最强大的权限设置。如果用户所属的 Team Foundation Server 组将特定权限设置为“拒绝”,那么即使用户所属的另一个组将该权限设置为“允许”,该用户仍无法执行此功能。此规则的唯一例外是用户属于项目的“Project Administrators”组的成员或者属于“Team Foundation Administrators”组的成员的情况。如果用户是项目的“Project Administrators”组的成员,则该组的权限将覆盖该用户在项目中的显式“拒绝”。同样,如果用户是“Team Foundation Administrators”组的成员,则该组的权限将覆盖该用户在 Team Foundation Server 中的显式“拒绝”。
允许
“允许”则允许授权用户或组执行权限说明中提到的操作。“允许”是 Team Foundation Server 中的第二大权限设置并且设置频率最高,这是因为不将权限显式设置为“允许”,用户或组就无法在 Team Foundation Server 中执行任何操作。
未设置
默认情况下,Team Foundation Server 中的多数权限既没有设置为“拒绝”,也没有设置为“允许”。权限处于“未设置”状态,它隐式拒绝授权用户和组执行权限说明中指定的操作。但是,因为权限既没有显式设置为“拒绝”,也没有显式设置为“允许”,它可以从用户或组所属的其他组继承授权。
继承
当用户或组的权限为“未设置”时,因为 Team Foundation Server 中的权限是可继承的,所以用户或组可能受到其所属组权限的显式设置的影响。如果用户所属的组已经显式设置权限,而在用户所属的另一个组未设置该权限,则用户从第一个组继承该权限的“允许”或“拒绝”设置。
某些授权设置优先于其他授权设置。在 Team Foundation Server 中,“拒绝”权限优先于包括“允许”在内的所有其他权限设置。例如,用户可能属于一个项目中的两个组。对于其中一个组,“发布测试结果”权限设置为“拒绝”;而另一个组则将此权限设置为“允许”。“拒绝”设置优先级更高,用户无权发布测试结果。此规则的唯一例外是用户属于项目的“Project Administrators”组的成员或者属于“Team Foundation Administrators”组的成员的情况。如果用户是项目的“Project Administrators”组的成员,则该组的权限将覆盖该用户在项目中的显式“拒绝”。同样,如果用户是“Team Foundation Administrators”组的成员,则该组的权限将覆盖该用户在 Team Foundation Server 中的显式“拒绝”。
通过 Team Foundation Server 用户界面和命令行设置权限
许多要为 Team Foundation Server 设置的权限是通过 Team Foundation Server 用户界面控制的。您可以根据服务器(服务器级别权限)或项目(项目级别权限)设置这些权限。您还可以根据项目为查看工作项以及与工作项交互设置区域级别权限。有关默认情况下为哪些用户设置哪些权限,以及为 MSF for Agile Software Development 或 MSF CMMI Process Improvement 组设置哪些权限的更多信息,
服务器级别权限
服务器级别权限并非特定于某个项目,而是根据服务器设置的。您只能为服务器级别用户和组(如 Team Foundation Administrators)、已添加到 Team Foundation 服务器上的服务器级别的项目级别组以及创建并添加到服务器级别的自定义组设置这些权限。您可以通过在 Team Foundation Server 中右击 团队资源管理器 中的服务器,然后单击“安全”设置这些权限。您可以使用 TFSSecurity 命令行实用工具设置这些权限,带有 tf: 标识的权限除外。可使用源代码管理的 tf 命令行实用工具的 Permission 命令设置这些权限。
权限名称
|
命令行中的名称
|
说明
|
管理搁置的更改
|
tf:AdminShelvesets
|
具有该权限的用户可以删除其他用户创建的搁置集。
|
管理仓库
|
ADMINISTER_WAREHOUSE
|
具有该权限的用户可以使用 WarehouseController.asmx Web 服务的 ChangeSetting Web 方法更改仓库设置。例如,您可以允许用户设置计算 OLAP 多维数据集的更新时间间隔。
|
管理工作区
|
tf:AdminWorkspaces
|
具有该权限的用户可以为其他用户创建工作区并删除其他用户创建的工作区。
|
创建工作区
|
tf:CreateWorkspace
|
具有该权限的用户可以创建源代码管理工作区。
|
创建新项目
|
CREATE_PROJECTS
|
具有该权限的用户可以在 Team Foundation Server 中创建新项目。为了成功创建新项目,这些用户必须是 Windows SharePoint Server 中的“SharePoint Central Admins”组的成员,并且在 SQL Reporting Services 中有“内容管理员”权限。
|
编辑服务器级的信息
|
GENERIC_WRITE
tf:AdminConfiguration
tf:AdminConnections
|
有此权限的用户可编辑 Team Foundation Server 上用户和组的服务器级别的权限。他们可以从 Team Foundation Server 上添加或移除服务器级别的 Team Foundation Server 应用程序组。当通过菜单设置时,“编辑服务器级别信息”权限还将隐式允许用户修改源代码管理权限。若要从命令行授予上述所有权限,必须使用 tf.exe Permission 命令授予 AdminConfiguration 和 AdminConnections 权限,以及 GENERIC_WRITE。
|
改变跟踪设置
|
DIAGNOSTIC_TRACE
|
具有该权限的用户可以更改跟踪设置,以收集有关 Team Foundation Server Web 服务的更详细的诊断信息。
|
触发事件
|
TRIGGER_EVENT
|
具有该权限的用户可以在 Team Foundation Server 中触发项目警报事件。该权限只应指派给服务帐户。
|
管理过程模板
|
MANAGE_TEMPLATE
|
具有该权限的用户可以从 Team Foundation Server 下载、向其上载、创建和编辑过程模板。
|
查看服务器级别信息
|
GENERIC_READ
|
具有该权限的用户可以查看服务器级别的组成员资格以及那些用户的权限。
|
查看系统同步信息
|
SYNCHRONIZE_READ
|
有此权限的用户可触发同步事件。该权限只应指派给服务帐户。
|
项目级别权限
项目级别权限特定于单个项目的用户和组。您可以通过在 Team Foundation Server 中右击 团队资源管理器 中的项目,然后单击“安全”设置这些权限。另外,您还可以使用 TFSSecurity 命令行实用工具设置这些权限。
权限名称
|
命令行中的名称
|
说明
|
管理版本
|
ADMINISTER_BUILD
|
具有该权限的用户可以删除完成的生成并停止正在进行的生成。
|
删除此项目
|
DELETE
|
有此权限的用户可以从 Team Foundation Server 删除他们有权删除的项目。
|
编辑版本质量
|
EDIT_BUILD_STATUS
|
具有该权限的用户可以通过 Team Foundation Build 用户界面添加版本质量的相关信息。该信息存储在 Team Foundation Build 数据库存储区中。
|
编辑项目级信息
|
GENERIC_WRITE
|
有此权限的用户可编辑 Team Foundation Server 上用户和组的项目级别的权限。
|
发布测试结果
|
PUBLISH_TEST_RESULTS
|
具有该权限的用户可以添加或移除团队项目门户的测试结果,也可以添加或移除测试运行。
|
启动版本
|
START_BUILD
|
具有该权限的用户可以通过 Team Foundation Build 用户界面或从命令行启动版本。
|
查看项目级信息
|
GENERIC_READ
|
具有该权限的用户可以查看项目级别的组成员资格以及那些项目用户的权限。
|
写入版本操作存储区
|
UPDATE_BUILD
|
该权限必须授予运行生成服务所使用的帐户,以更新 Team Foundation Build 数据库存储区。该权限只应指派给服务帐户,不能指派给单个用户。
|
工作项跟踪区域级别权限
区域级别权限特定于单个项目的用户和组。您可以通过以下方法设置这些权限:右击 团队资源管理器 中的项目,然后单击“区域和迭代”,然后在“区域”选项卡上单击“安全”。另外,您还可以使用 TFSSecurity 命令行实用工具设置这些权限。
某些工作项跟踪操作需要多种权限,如删除节点。
|
权限名称
|
命令行中的名称
|
说明
|
创建子节点并对子节点排序
|
CREATE_CHILDREN
|
有此权限的用户可以创建新的区域节点。有此权限以及“编辑此节点”权限的用户可移动或重新排序任何子区域节点。
|
删除此节点
|
DELETE
|
有此权限以及对另一个节点的“编辑此节点中的工作项”权限的用户可删除区域节点并对所删节点中的现有工作项重新分类。删除的父节点下的任何子节点将同时删除。
|
编辑此节点
|
GENERIC_WRITE
|
具有该权限的用户可以重命名区域节点。
|
编辑此节点中的工作项
|
WORK_ITEM_WRITE
|
具有该权限的用户可以编辑此区域节点中的工作项。
|
查看此节点
|
GENERIC_READ
|
具有该权限的用户可以查看此节点的安全设置。
|
查看此节点中的工作项
|
WORK_ITEM_READ
|
具有该权限的用户可以查看,但不能编辑或更改此区域节点中的工作项。
|
源代码管理权限
源代码管理权限特定于源代码文件和文件夹。可以通过以下方法设置这些权限:右击源代码管理资源管理器中的文件夹或文件,单击“属性”,在“安全”选项卡上选择要更改权限的用户或组,然后编辑“权限”中列出的权限。您也可以使用 tf(源代码管理命令行实用工具)设置这些权限。
权限名称
|
命令行中的名称
|
说明
|
读取
|
tf:Read
|
具有该权限的用户可以读取文件或文件夹的内容。如果用户对文件夹有“读”权限,则即使用户没有打开文件的权限,用户仍可以看到文件夹内容以及文件夹中的文件的属性。
|
签出
|
tf:PendChange
|
具有该权限的用户可以执行签出并对文件夹中的项执行挂起更改。挂起更改的示例包括添加、重命名、删除、撤消删除、分支和合并文件。
|
签入
|
tf:Checkin
|
具有该权限的用户可以签入项并修订任何提交的变更集注释。签入时将提交挂起的更改。
|
标签
|
tf:Label
|
具有该权限的用户可以对项进行标签。
|
锁定
|
tf:Lock
|
具有该权限的用户可以锁定或取消锁定文件夹或文件。
|
修订其他用户的更改
|
tf:ReviseOther
|
即使其他用户签入了文件,具有该权限的用户仍可以编辑该签入文件上的注释。
|
取消锁定其他用户的更改
|
tf:UnlockOther
|
具有该权限的用户可以取消锁定其他用户锁定的文件。
|
撤消其他用户的更改
|
tf:UndoOther
|
具有该权限的用户可以撤消其他用户所做的挂起的更改。
|
管理标签
|
tf:LabelOther
|
具有该权限的用户可以编辑或删除其他用户创建的标签。
|
操作安全设置
|
tf:AdminProjRights
|
具有该权限的用户可以设置这些文件和文件夹的权限。
|
签入其他用户的更改
|
tf:CheckinOther
|
具有该权限的用户可以签入其他用户所做的更改。签入时将提交挂起的更改。
|