指导两个月前,接手tfs权限管理工作以来,才知道里面有多复杂,经理只告诉我怎么分配项目成员的项目权限,其他的都不知道,起初还以为这样就万事大吉了,呵呵,原来那些只是皮毛,里面的权限还十分的复杂,这是在我两个月来的管理中琢磨出来的,凭现在对tfs权限管理的了解,基本可以应对公司员工的tfs权限的分配。
说tfs权限的复杂,其实也不是很复杂,它只是把各部分的权限分开控制,但各部分的权限又可以相互继承,分的多了,操作起来就容易出现问题,关联的多了,更容易出现问题,继而形成了它的复杂度。
下面来分享一下我的使用心得,我还是刚入手,了解的一点点,拿来汇总一下,以便今后的工作和学习,有帮助的可以看看。
tfs的权限分不同的级别,不同级别的权限其安全性不同,这点帮助文档中部分信息十分完备:
权限决定了是否授权用户进行工作区管理和项目创建等操作。当在 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 以外(如 Windows SharePoint Services 中)设置的权限,不会在 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 Server 默认组、权限和角色。有关如何为用户和组设置权限的更多信息,请参见管理用户和组和管理权限。有关管理工作项的更多信息,请参见管理 Team Foundation 工作项。
服务器级别权限
服务器级别权限不特定于单个项目,而是在服务器范围设置的。只能为三个类别的用户设置这些权限:
-
服务器级的用户和组,如 Team Foundation Administrators
-
已在 Team Foundation 服务器上添加至服务器级的项目级组
-
您创建并添加至服务器级的自定义组
您可以通过在 Team Foundation Server 中右击团队资源管理器中的服务器,然后单击“安全”来设置这些权限。您可以使用TFSSecurity命令行实用工具来设置这些权限,带有tf:标识的命令行实用工具除外。对于带有tf:标识的权限,可使用源代码管理的tf命令行实用工具的Permission命令设置这些权限。有关更多信息,请参见TFSSecurity 命令行实用工具命令和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 服务的更详细的诊断信息。有关跟踪的更多信息,请参见Team Foundation Server 的跟踪设置。 | ||
触发事件 | TRIGGER_EVENT | 具有此权限的用户可以在 Team Foundation Server 中触发项目警报事件。该权限只应指派给服务帐户。 | ||
管理过程模板 | MANAGE_TEMPLATE | 具有此权限的用户可以从 Team Foundation Server 下载、向其上载、创建和编辑过程模板。 | ||
查看服务器级别信息 | GENERIC_READ | 具有该权限的用户可以查看服务器级别的组成员资格以及那些用户的权限。 | ||
查看系统同步信息 | SYNCHRONIZE_READ | 有此权限的用户可触发同步事件。该权限只应指派给服务帐户。 |
项目级别权限
项目级别权限特定于单个项目的用户和组。您可以通过在 Team Foundation Server 中右击团队资源管理器中的项目,单击“团队项目设置”再单击“安全”来设置这些权限。还可以使用“TFSSecurity”命令行实用工具来设置这些权限。
权限名称 | 命令行中的名称 | 说明 |
---|---|---|
删除此项目 | DELETE | 具有此权限的用户可以从 Team Foundation Server 中删除他们有权删除的项目。 |
编辑项目级信息 | GENERIC_WRITE | 具有此权限的用户可以编辑 Team Foundation Server 上用户和组的项目级别权限。 |
发布测试结果 | PUBLISH_TEST_RESULTS | 具有该权限的用户可以添加或移除团队项目门户的测试结果,也可以添加或移除测试运行。 |
查看项目级信息 | GENERIC_READ | 具有该权限的用户可以查看项目级别的组成员资格以及那些项目用户的权限。 |
生成级别的权限
生成级别的权限特定于生成计算机的用户和组。您可以通过右击团队资源管理器中的项目,单击“团队项目设置”再单击“安全”来设置这些权限。另外,您还可以使用TFSSecurity命令行实用工具设置这些权限。
权限名称 | 命令行中的名称 | 说明 |
---|---|---|
管理版本 | ADMINISTER_BUILD | 具有该权限的用户可以删除完成的生成并停止正在进行的生成。 |
编辑版本质量 | EDIT_BUILD_STATUS | 具有此权限的用户可以通过 Team Foundation Build 用户界面添加有关版本质量的信息。此信息存储在 Team Foundation Build 的数据库存储区中。 |
启动版本 | START_BUILD | 具有此权限的用户可以通过 Team Foundation Build 界面或从命令行启动版本。 |
写入版本操作存储区 | UPDATE_BUILD | 必须向用于运行生成服务的帐户授予此权限,才能更新 Team Foundation Build 的数据库存储区。此权限应只分配给服务帐户,而不应分配给单个用户。 |
工作项跟踪区域级别权限
区域级别权限特定于单个项目的用户和组。您可以通过右击团队资源管理器中的项目,单击“区域和迭代”,在“区域”选项卡上单击“安全”来设置这些权限。另外,您还可以使用TFSSecurity命令行实用工具设置这些权限。
注意: |
---|
某些工作项跟踪操作需要多种权限。例如,您需要多种权限来删除节点。 |
权限名称 | 命令行中的名称 | 说明 |
---|---|---|
创建子节点并对子节点排序 | CREATE_CHILDREN | 有此权限的用户可以创建新的区域节点。同时具有此权限以及“编辑此节点”权限的用户可以移动任何子区域节点或对任何子区域节点重新排序。 |
删除此节点 | DELETE | 同时具有此权限以及对另一个节点的“编辑此节点”权限的用户可以删除区域节点并对所删节点中的现有工作项重新分类。删除的父节点下的任何子节点将同时删除。 |
编辑此节点 | GENERIC_WRITE | 具有该权限的用户可以重命名区域节点。 |
编辑此节点中的工作项 | WORK_ITEM_WRITE | 具有该权限的用户可以编辑此区域节点中的工作项。 |
查看此节点 | GENERIC_READ | 具有该权限的用户可以查看此节点的安全设置。 |
查看此节点中的工作项 | WORK_ITEM_READ | 具有该权限的用户可以查看,但不能编辑或更改此区域节点中的工作项。 |
工作项跟踪迭代级别权限
迭代级别权限特定于单个项目的用户和组。您可以通过右击团队资源管理器中的项目,单击“区域和迭代”,在“迭代”选项卡上单击“安全”来设置这些权限。另外,您还可以使用TFSSecurity命令行实用工具设置这些权限。
注意: |
---|
某些工作项跟踪操作需要多种权限。例如,您需要多种权限来删除节点。 |
权限名称 | 命令行中的名称 | 说明 |
---|---|---|
创建子节点并对子节点排序 | CREATE_CHILDREN | 具有此权限的用户可以创建新的迭代节点。同时具有此权限以及“编辑此节点”权限的用户可以移动任何子迭代节点或对任何子迭代节点重新排序。 |
删除此节点 | DELETE | 同时具有此权限以及对另一个节点的“编辑此节点”权限的用户可以删除迭代节点并对所删节点中的现有工作项重新分类。删除的父节点下的任何子节点将同时删除。 |
编辑此节点 | GENERIC_WRITE | 具有此权限的用户可以重命名迭代节点。 |
查看此节点 | GENERIC_READ | 具有该权限的用户可以查看此节点的安全设置。 |
源代码管理权限
源代码管理权限特定于源代码文件和文件夹。您可以按以下方法设置这些权限:右击“源代码管理资源管理器”中的文件夹或文件,单击“属性”,在“安全”选项卡上选择要为其更改权限的用户或组,然后编辑“权限”中列出的权限。可以通过使用tf(源代码管理命令行实用工具)来设置这些权限。
权限名称 | 命令行中的名称 | 说明 |
---|---|---|
读取 | tf: Read | 具有该权限的用户可以读取文件或文件夹的内容。如果用户对文件夹有“读”权限,则即使用户没有打开文件的权限,用户仍可以看到文件夹内容以及文件夹中的文件的属性。 |
签出 | tf: PendChange | 具有该权限的用户可以执行签出并对文件夹中的项执行挂起更改。挂起更改的示例包括添加、重命名、删除、撤消删除、分支和合并文件。 |
签入 | tf: Checkin | 具有该权限的用户可以签入项并修订任何提交的变更集注释。签入时将提交挂起的更改。 |
加标签 | tf: Label | 具有该权限的用户可以对项进行标签。 |
锁定 | tf: Lock | 具有该权限的用户可以锁定或取消锁定文件夹或文件。 |
修订其他用户的更改 | tf: ReviseOther | 即使其他用户签入了文件,具有该权限的用户仍可以编辑该签入文件上的注释。 |
取消锁定其他用户的更改 | tf: UnlockOther | 具有该权限的用户可以取消锁定其他用户锁定的文件。 |
撤消其他用户的更改 | tf: UndoOther | 具有该权限的用户可以撤消其他用户所做的挂起的更改。 |
管理标签 | tf: LabelOther | 具有该权限的用户可以编辑或删除其他用户创建的标签。 |
操作安全设置 | tf: AdminProjRights | 具有该权限的用户可以设置这些文件和文件夹的权限。 |
签入其他用户的更改 | tf: CheckinOther | 具有该权限的用户可以签入其他用户所做的更改。签入时将提交挂起的更改。 |