【问题标题】:Translate ACL Descriptors to Security Group names将 ACL 描述符转换为安全组名称
【发布时间】:2019-04-17 19:53:33
【问题描述】:

在使用 AzDO REST API 安全端点时,我试图确定访问控制列表中的哪个 ACE 字典属于特定的安全组。

文档链接:https://docs.microsoft.com/en-us/rest/api/azure/devops/security/access%20control%20lists/query?view=azure-devops-rest-5.0

JSON 输出包含一个名为“acesDictionary”的部分。本节中的每个元素都包含一个“描述符”键。

例子:

{
            "inheritPermissions": false,
            "token": "a0d66bdf-2d5a-48a5-822b-1d6c4e8f20a2",
            "acesDictionary": {
                "Microsoft.TeamFoundation.ServiceIdentity;53bed6f5-352c-4160-b88e-275616c09042:Build:6b1dcbeb-af9b-4218-ac72-fc84b6dce8de": {
                    "descriptor": "Microsoft.TeamFoundation.ServiceIdentity;53bed6f5-352c-4160-b88e-275616c09042:Build:6b1dcbeb-af9b-4218-ac72-fc84b6dce8de",
                    "allow": 8225,
                    "deny": 0
                }.......truncated.

通过反复试验,我已经能够确定其中一个元素会修改项目贡献者对特定发布管道的权限。我无法弄清楚如何将“描述符”转换为等效的 [ProjectName]SecurityGroupName。我需要能够做到这一点,以便我可以通过脚本修改数十个项目的权限,每个项目都有数十个发布和构建管道。

任何关于使用哪个端点的建议将不胜感激。

【问题讨论】:

    标签: azure-devops-rest-api


    【解决方案1】:

    您可以使用这个未记录的 API 找到描述符的身份:

    免责声明:任何未公开记录的 API 都可能随时更改。

    https://vssps.dev.azure.com/{organization}/_apis/identities?descriptors={IdentityDescriptor}

    从那里您可以从 ProviderDisplayName 获取安全组。

    示例响应:

    {  
    Id:"5b250e58-8dbf-4111-8eab-8735e1058a11",
    Descriptor:{  
      IdentityType:"Microsoft.TeamFoundation.Identity",
      Identifier:"S-1-9-2551374245-3827430512-2595430990-2155723759-1767818319-0-0-0-0-3"
    },
    ProviderDisplayName:"[ExampleProjectName]\Project Valid Users",
    CustomDisplayName:null,
    DisplayName:"[ExampleProjectName]\Project Valid Users",
    IsActive:true,
    UniqueUserId:0,
    IsContainer:true,
    Members:[ ],
    MemberOf:[ ],
    Properties:{  
       SchemaClassName:"Group",
       Description:"Members of this group have access to the team project.",
       Domain:"vstfs:///Classification/TeamProject/13f75242-3248-4999-a76c-47f6ec2580a4",
       Account:"Project Valid Users",
       SecurityGroup:"SecurityGroup",
       SpecialType:"EveryoneApplicationGroup",
       ScopeId:"70f521e4-b39a-4422-807d-bbef695ec44f",
       ScopeType:"TeamProject",
       LocalScopeId:"13g75242-3248-4999-a76c-47f6ec2580a4",
       SecuringHostId:"23ad9cb9-521b-46c2-a7b0-fbd454ac7275",
       ScopeName:"ExampleProjectName",
       VirtualPlugin:""
     }
    

    【讨论】:

    • 似乎有点奇怪,找到受支持 API 所需信息的唯一方法是使用不受支持的、未记录的 API。
    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 2011-09-25
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多