使用命令行工具管理权限

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 Servicesaz devops configure --defaults organization=YourOrganizationURL
      • Azure DevOps Serveraz devops configure --defaults organization=https://ServerName/CollectionName

安全权限命令

输入以下命令列出所有可用命令。

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]

参数

  • 主题:必需。 用户的电子邮件地址或组描述符。
  • 递归:可选。 如果为 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>

参数

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

参数

  • idnamespace-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]

参数

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

参数

  • idnamespace-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}]

参数

  • idnamespace-id必需。 安全命名空间的 ID。
  • 主题必需。 用户的电子邮件地址或组描述符。
  • 令牌必需。 单个安全令牌。
  • 允许位可选。 指定允许位或添加更多位。 如果未提供 拒绝位,则 必需
  • 拒绝位可选。 指定拒绝位或添加其他位。 如果未提供 允许位,则 必需
  • 合并可选。 确定是否与现有访问控制项(ACE)合并。
    • 如果设置为 true,则现有 ACE 允许和拒绝与传入 ACE 的权限合并的权限。
    • 如果设置为 false 或省略,则会替换现有的 ACE。
    • 接受的值是 truefalse

以下命令更新指定命名空间中用户 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安全命名空间和权限参考。