使用命令行工具管理权限
Azure DevOps Services
权限授予对特定资源执行特定操作的权限,如 权限、访问权限和安全组入门中所述。 可以通过 Web 门户管理大多数权限。 但是,可以使用命令行工具或 REST API 管理权限。
默认情况下,Azure DevOps 向默认安全组的成员授予许多权限。 可以使用 az devops security permission
命令在更精细的级别添加和管理权限。 使用以下命令可以:
- 查看与安全命名空间关联的权限
- 查看有关这些权限的详细信息
- 更新或重置权限
注意
命名空间和令牌对所有版本的 Azure DevOps 有效。 此处列出的适用于 Azure DevOps 2019 及更高版本。 命名空间可能会随时间而更改。 若要获取最新的命名空间列表,请练习一个命令行工具或 REST API。 某些命名空间已弃用,如 安全命名空间和权限引用、已弃用和只读命名空间..
先决条件
- 权限:是 项目集合管理员 安全组的成员。 有关令牌的详细信息,请参阅 安全命名空间和权限参考。
工具 :按照 azure DevOps CLI入门中所述安装 Azure DevOps CLI 扩展。 - 使用
az login
登录到 Azure DevOps。 - 对于本文中的示例,请按如下所示设置默认组织:
-
Azure DevOps Services:
az devops configure --defaults organization=YourOrganizationURL
。 -
Azure DevOps Server:
az devops configure --defaults organization=https://ServerName/CollectionName
-
Azure DevOps Services:
- 使用
安全权限命令
输入以下命令列出所有可用命令。
az devops security permission -h
有关与安全权限相关的概念的详细信息,请参阅 安全 REST API 文档
命令 | 描述 |
---|---|
az devops security permission list |
列出指定用户或组和命名空间的令牌。 |
az devops security permission namespace list |
列出组织的所有可用命名空间。 |
az devops security permission namespace show |
显示每个命名空间中可用权限的详细信息。 |
az devops security permission reset |
重置指定权限位的权限。 |
az devops security permission reset-all |
清除用户或组此令牌的所有权限。 |
az devops security permission show |
显示指定令牌、命名空间和用户或组的权限。 |
az devops security permission update |
为指定用户或组分配允许或拒绝权限。 |
对于所有命令,以下参数是可选的,本文中提供的示例中未列出。
- 检测:自动检测组织。 接受的值:false、true。 默认值为 true。
-
组织:Azure DevOps 组织 URL。 可以使用 az devops configure -d organization=ORG_URL 配置默认组织。 如果未配置为默认或通过 git 配置选取,则为必需。示例:
--org https://dev.azure.com/MyOrganizationName/
。
列出安全命名空间
可以使用 az devops security permission namespace list 命令列出组织的所有可用命名空间。 有关所有安全命名空间和关联令牌的说明,请参阅 安全命名空间和权限引用。
az devops security permission namespace list [--local-only]
参数
仅限本地:可选。 如果为 true,则仅检索本地安全命名空间。
安全命名空间可能在一个微服务中管理其数据,但仍在其他微服务中可见。 如果安全命名空间的数据在微服务 X 中管理,则它是该微服务的本地数据。 否则,它是远程的。
输入 az devops security permission namespace list
列出为组织或本地服务器定义的命名空间。
注意
列出的某些命名空间已弃用,不应使用。 有关已弃用命名空间的列表,请参阅 命名空间引用、已弃用和只读命名空间。
az devops security permission namespace list --org https://dev.azure.com/OrganizationName --output table
Id Name
------------------------------------ ------------------------------
c788c23e-1b46-4162-8f5e-d7585343b5de ReleaseManagement
58450c49-b02d-465a-ab12-59ae512d6531 Analytics
d34d3680-dfe5-4cc6-a949-7d9c68f73cba AnalyticsViews
62a7ad6b-8b8d-426b-ba10-76a7090e94d5 PipelineCachePrivileges
7c7d32f7-0e86-4cd6-892e-b35dbba870bd ReleaseManagement
a6cc6381-a1ca-4b36-b3c1-4e65211e82b6 AuditLog
5a27515b-ccd7-42c9-84f1-54c998f03866 Identity
445d2788-c5fb-4132-bbef-09c4045ad93f WorkItemTrackingAdministration
101eae8c-1709-47f9-b228-0e476c35b3ba DistributedTask
71356614-aad7-4757-8f2c-0fb3bff6f680 WorkItemQueryFolders
2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87 Git Repositories
3c15a8b7-af1a-45c2-aa97-2cb97078332e VersionControlItems2
2bf24a2b-70ba-43d3-ad97-3d9e1f75622f EventSubscriber
5a6cd233-6615-414d-9393-48dbb252bd23 WorkItemTrackingProvision
49b48001-ca20-4adc-8111-5b60c903a50c ServiceEndpoints
cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 ServiceHooks
bc295513-b1a2-4663-8d1a-7017fd760d18 Chat
3e65f728-f8bc-4ecd-8764-7e378b19bfa7 Collection
cb4d56d2-e84b-457e-8845-81320a133fbb Proxy
bed337f8-e5f3-4fb9-80da-81e17d06e7a8 Plan
2dab47f9-bd70-49ed-9bd5-8eb051e59c02 Process
11238e09-49f2-40c7-94d0-8f0307204ce4 AccountAdminSecurity
b7e84409-6553-448a-bbb2-af228e07cbeb Library
83d4c2e6-e57d-4d6e-892b-b87222b7ad20 Environment
52d39943-cb85-4d7f-8fa8-c6baac873819 Project
58b176e7-3411-457a-89d0-c6d0ccb3c52b EventSubscription
83e28ad4-2d72-4ceb-97b0-c7726d5502c3 CSS
9e4894c3-ff9a-4eac-8a85-ce11cafdc6f1 TeamLabSecurity
fc5b7b85-5d6b-41eb-8534-e128cb10eb67 ProjectAnalysisLanguageMetrics
bb50f182-8e5e-40b8-bc21-e8752a1e7ae2 Tagging
f6a4de49-dbe2-4704-86dc-f8ec1a294436 MetaTask
bf7bfa03-b2b7-47db-8113-fa2e002cc5b1 Iteration
fa557b48-b5bf-458a-bb2b-1b680426fe8b Favorites
4ae0db5d-8437-4ee8-a18b-1f6fb38bd34c Registry
c2ee56c9-e8fa-4cdd-9d48-2c44f697a58e Graph
dc02bf3d-cd48-46c3-8a41-345094ecc94b ViewActivityPaneSecurity
2a887f97-db68-4b7c-9ae3-5cebd7add999 Job
73e71c45-d483-40d5-bdba-62fd076f7f87 WorkItemTracking
4a9e8381-289a-4dfd-8460-69028eaa93b3 StrongBox
1f4179b3-6bac-4d01-b421-71ea09171400 Server
e06e1c24-e93d-4e4a-908a-7d951187b483 TestManagement
6ec4592e-048c-434e-8e6c-8671753a8418 SettingEntries
302acaca-b667-436d-a946-87133492041c BuildAdministration
2725d2bc-7520-4af4-b0e3-8d876494731f Location
83abde3a-4593-424e-b45f-9898af99034d UtilizationPermissions
c0e7a722-1cad-4ae6-b340-a8467501e7ce WorkItemsHub
0582eb05-c896-449a-b933-aa3d99e121d6 WebPlatform
66312704-deb5-43f9-b51c-ab4ff5e351c3 VersionControlPrivileges
93bafc04-9075-403a-9367-b7164eac6b5c Workspaces
093cbb02-722b-4ad6-9f88-bc452043fa63 CrossProjectWidgetView
35e35e8e-686d-4b01-aff6-c369d6e36ce0 WorkItemTrackingConfiguration
0d140cae-8ac1-4f48-b6d1-c93ce0301a12 Discussion Threads
5ab15bc8-4ea1-d0f3-8344-cab8fe976877 BoardsExternalIntegration
7ffa7cf4-317c-4fea-8f1d-cfda50cfa956 DataProvider
81c27cc8-7a9f-48ee-b63f-df1e1d0412dd Social
9a82c708-bfbe-4f31-984c-e860c2196781 Security
a60e0d84-c2f8-48e4-9c0c-f32da48d5fd1 IdentityPicker
84cc1aa4-15bc-423d-90d9-f97c450fc729 ServicingOrchestration
33344d9c-fc72-4d6f-aba5-fa317101a7e9 Build
8adf73b7-389a-4276-b638-fe1653f7efc7 DashboardsPrivileges
a39371cf-0841-4c16-bbd3-276e341bc052 VersionControlItems
示例:列出本地安全命名空间
以下命令仅列出组织的本地安全命名空间,并按表格式显示结果。
az devops security permission namespace list --local-only --output table
Id Name
------------------------------------ ------------------------------
71356614-aad7-4757-8f2c-0fb3bff6f680 WorkItemQueryFolders
fa557b48-b5bf-458a-bb2b-1b680426fe8b Favorites
4ae0db5d-8437-4ee8-a18b-1f6fb38bd34c Registry
c2ee56c9-e8fa-4cdd-9d48-2c44f697a58e Graph
dc02bf3d-cd48-46c3-8a41-345094ecc94b ViewActivityPaneSecurity
2a887f97-db68-4b7c-9ae3-5cebd7add999 Job
73e71c45-d483-40d5-bdba-62fd076f7f87 WorkItemTracking
4a9e8381-289a-4dfd-8460-69028eaa93b3 StrongBox
1f4179b3-6bac-4d01-b421-71ea09171400 Server
e06e1c24-e93d-4e4a-908a-7d951187b483 TestManagement
6ec4592e-048c-434e-8e6c-8671753a8418 SettingEntries
302acaca-b667-436d-a946-87133492041c BuildAdministration
2725d2bc-7520-4af4-b0e3-8d876494731f Location
83abde3a-4593-424e-b45f-9898af99034d UtilizationPermissions
c0e7a722-1cad-4ae6-b340-a8467501e7ce WorkItemsHub
0582eb05-c896-449a-b933-aa3d99e121d6 WebPlatform
66312704-deb5-43f9-b51c-ab4ff5e351c3 VersionControlPrivileges
93bafc04-9075-403a-9367-b7164eac6b5c Workspaces
093cbb02-722b-4ad6-9f88-bc452043fa63 CrossProjectWidgetView
35e35e8e-686d-4b01-aff6-c369d6e36ce0 WorkItemTrackingConfiguration
0d140cae-8ac1-4f48-b6d1-c93ce0301a12 Discussion Threads
5ab15bc8-4ea1-d0f3-8344-cab8fe976877 BoardsExternalIntegration
7ffa7cf4-317c-4fea-8f1d-cfda50cfa956 DataProvider
81c27cc8-7a9f-48ee-b63f-df1e1d0412dd Social
9a82c708-bfbe-4f31-984c-e860c2196781 Security
a60e0d84-c2f8-48e4-9c0c-f32da48d5fd1 IdentityPicker
84cc1aa4-15bc-423d-90d9-f97c450fc729 ServicingOrchestration
33344d9c-fc72-4d6f-aba5-fa317101a7e9 Build
8adf73b7-389a-4276-b638-fe1653f7efc7 DashboardsPrivileges
445d2788-c5fb-4132-bbef-09c4045ad93f WorkItemTrackingAdministration
101eae8c-1709-47f9-b228-0e476c35b3ba DistributedTask
2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87 Git Repositories
a39371cf-0841-4c16-bbd3-276e341bc052 VersionControlItems
3c15a8b7-af1a-45c2-aa97-2cb97078332e VersionControlItems2
2bf24a2b-70ba-43d3-ad97-3d9e1f75622f EventSubscriber
5a6cd233-6615-414d-9393-48dbb252bd23 WorkItemTrackingProvision
49b48001-ca20-4adc-8111-5b60c903a50c ServiceEndpoints
cb594ebe-87dd-4fc9-ac2c-6a10a4c92046 ServiceHooks
bc295513-b1a2-4663-8d1a-7017fd760d18 Chat
3e65f728-f8bc-4ecd-8764-7e378b19bfa7 Collection
cb4d56d2-e84b-457e-8845-81320a133fbb Proxy
bed337f8-e5f3-4fb9-80da-81e17d06e7a8 Plan
2dab47f9-bd70-49ed-9bd5-8eb051e59c02 Process
11238e09-49f2-40c7-94d0-8f0307204ce4 AccountAdminSecurity
b7e84409-6553-448a-bbb2-af228e07cbeb Library
83d4c2e6-e57d-4d6e-892b-b87222b7ad20 Environment
52d39943-cb85-4d7f-8fa8-c6baac873819 Project
58b176e7-3411-457a-89d0-c6d0ccb3c52b EventSubscription
83e28ad4-2d72-4ceb-97b0-c7726d5502c3 CSS
9e4894c3-ff9a-4eac-8a85-ce11cafdc6f1 TeamLabSecurity
fc5b7b85-5d6b-41eb-8534-e128cb10eb67 ProjectAnalysisLanguageMetrics
bb50f182-8e5e-40b8-bc21-e8752a1e7ae2 Tagging
f6a4de49-dbe2-4704-86dc-f8ec1a294436 MetaTask
bf7bfa03-b2b7-47db-8113-fa2e002cc5b1 Iteration
列出安全命名空间的令牌
可以使用 az devops security permission list 命令列出指定命名空间和用户或组的令牌。
az devops security permission list --id
--subject
[--recurse]
[--token]
参数
-
- id 或 namespace-id:必需。 安全命名空间的 ID。 若要获取 ID,请使用 az devops security permission namespace list 命令。
- 主题:必需。 用户的电子邮件地址或组描述符。
- 递归:可选。 如果为 true,并且命名空间是分层的,则此参数返回令牌的子 ACL。
- 令牌:可选。 指定单个安全令牌。
例
以下命令以表格式列出指定命名空间的令牌,该命名空间对应于 Analytics,并与用户 contoso@contoso.com关联。
az devops security permission list --id 58450c49-b02d-465a-ab12-59ae512d6531 --subject contoso@contoso.com --output table
Token Effective Allow Effective Deny
-------------------------------------- ----------------- ----------------
$/0611925a-b287-4b0b-90a1-90f1a96e9f1f 0 0
$/087572e2-5569-49ec-af80-d3caf22b446c 0 0
$/131271e0-a6ad-49ba-837e-2d475ab2b169 0 0
$/14c92f9d-9fff-48ec-8171-9d1106056ab3 0 0
$/1965830d-5fc4-4412-8c71-a1c39c939a42 0 0
$/4b80d122-a5ca-46ec-ba28-e03d37e53404 0 0
$/4fa8e9de-e86b-4986-ac75-f421881a7664 0 0
$/5417a1c3-4b04-44d1-aead-50774b9dbf5f 0 0
$/56af920d-393b-4236-9a07-24439ccaa85c 0 0
$/69265579-a1e0-4a30-a141-ac9e3bb82572 0 0
显示命名空间详细信息
使用 az devops security permission namespace show 命令显示每个命名空间中可用的权限的详细信息。
az devops security permission namespace show --namespace-id <NAMESPACE_ID>
参数
- id 或 namespace-id:必需。 安全命名空间的 ID。
例
以下命令显示指定命名空间 ID 的可用权限的详细信息,并返回表格式的结果。
az devops security permission namespace show --namespace-id 58450c49-b02d-465a-ab12-59ae512d6531 --output table
Name Permission Description Permission Bit
------------------------ -------------------------------------------------------- ----------------
Read View analytics 1
Administer Manage analytics permissions 2
Stage Push the data to staging area 4
ExecuteUnrestrictedQuery Execute query without any restrictions on the query form 8
ReadEuii Read EUII data 16
重置权限
使用 az devops security permission reset 命令重置指定用户或组的权限位。
az devops security permission reset --id
--permission-bit
--subject
--token
参数
- id 或 namespace-id:必需。 安全命名空间的 ID。
- 权限位:必需。 需要为给定用户或组和令牌重置的权限位或添加权限位。
- 主题:必需。 用户的电子邮件地址或组描述符。
- 令牌:必需。 单个安全令牌。
例
以下命令重置指定命名空间中用户 contoso@contoso.com 令牌的权限位 8,并返回表格式的结果。
az devops security permission reset --id 58450c49-b02d-465a-ab12-59ae512d6531 --permission-bit 8 --subject contoso@contoso.com --token 0611925a-b287-4b0b-90a1-90f1a96e9f1f --output table
Name Bit Permission Description Permission Value
------------------------ ----- -------------------------------------------------------- ------------------
ExecuteUnrestrictedQuery 8 Execute query without any restrictions on the query form Not set
重置所有权限
可以使用 az devops security permission reset-all 命令清除用户或组的所有令牌权限。
az devops security permission reset-all --id
--subject
--token
[--yes]
参数
- id 或 namespace-id:必需。 安全命名空间的 ID。
- 主题:必需。 用户的电子邮件地址或组描述符。
- 令牌:必需。 单个安全令牌。
- 是:可选。 不要提示确认。
例
以下命令清除指定命名空间中用户 contoso@contoso.com 的所有权限,而无需确认。 结果显示在 CLI 中。
az devops security permission reset-all --id 58450c49-b02d-465a-ab12-59ae512d6531 --subject contoso@contoso.com --token 0611925a-b287-4b0b-90a1-90f1a96e9f1f --yes --output table
Result
--------
True
显示权限
可以使用 az devops security permission show 命令显示指定令牌、命名空间和用户或组的权限。
az devops security permission show --id
--subject
--token
参数
- id 或 namespace-id:必需。 安全命名空间的 ID。
- 主题:必需。 用户的电子邮件地址或组描述符。
- 令牌:必需。 单个安全令牌。
例
以下命令显示指定命名空间中用户 contoso@contoso.com 令牌的权限详细信息,并返回表格式的结果。
az devops security permission show --id 58450c49-b02d-465a-ab12-59ae512d6531 --subject contoso@contoso.com --token 0611925a-b287-4b0b-90a1-90f1a96e9f1f --output table
Name Bit Permission Description Permission Value
------------------------ ----- -------------------------------------------------------- ------------------
Read 1 View analytics Not set
Administer 2 Manage analytics permissions Allow
Stage 4 Push the data to staging area Not set
ExecuteUnrestrictedQuery 8 Execute query without any restrictions on the query form Not set
ReadEuii 16 Read EUII data Deny
更新权限
可以使用 az devops security permission update 命令为指定用户或组分配 允许 或 拒绝 权限。
az devops security permission update --id
--subject
--token
[--allow-bit]
[--deny-bit]
[--merge {false, true}]
参数
- id 或 namespace-id:必需。 安全命名空间的 ID。
- 主题:必需。 用户的电子邮件地址或组描述符。
- 令牌:必需。 单个安全令牌。
- 允许位:可选。 指定允许位或添加更多位。 如果未提供 拒绝位,则 必需。
- 拒绝位:可选。 指定拒绝位或添加其他位。 如果未提供 允许位,则 必需。
-
合并:可选。 确定是否与现有访问控制项(ACE)合并。
- 如果设置为 true,则现有 ACE 允许和拒绝与传入 ACE 的权限合并的权限。
- 如果设置为 false 或省略,则会替换现有的 ACE。
- 接受的值是
true
或false
。
例
以下命令更新指定命名空间中用户 contoso@contoso.comExecuteUnrestrictedQuery(位 8)的权限,并按表格式显示结果。
az devops security permission update --allow-bit 8 --id 58450c49-b02d-465a-ab12-59ae512d6531 --subject contoso@contoso.com --token 56af920d-393b-4236-9a07-24439ccaa85c --output table
Name Bit Permission Description Permission Value
------------------------ ----- -------------------------------------------------------- ------------------
ExecuteUnrestrictedQuery 8 Execute query without any restrictions on the query form Allow
安全命名空间及其 ID
请参阅 Azure DevOps