将ACL描述符转换为安全组名称

时间:2019-04-17 19:53:34

标签: azure-devops-rest-api

使用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。我需要能够执行此操作,以便可以通过脚本修改具有数十个发布和构建管道的数十个项目的权限。

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

1 个答案:

答案 0 :(得分:0)

您可以使用以下未公开的API查找描述符的身份:

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

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

您可以从那里获取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:""
 }