0

我有 Azure Devops 组织,想在给定存储库列表中为某个组设置只读权限。

以下指定如何通过 Web 控制台手动执行此操作:https ://docs.microsoft.com/en-us/azure/devops/organizations/security/set-git-tfvc-repository-permissions?view=azure-devops

如何通过 Rest API 或其他编程方式完成?

我发现以下设置全局权限:https ://jessehouwing.net/azure-devops-git-setting-default-repository-permissions/似乎也有一个 API 来设置 ACL,但没有指定我可以如何确定受托人组或目标存储库:https ://docs.microsoft.com/en-us/rest/api/azure/devops/graph/groups/list?view=azure-devops-rest-5.1

4

1 回答 1

1

使用 Azure Devops Rest API:

首先,您需要获取组的标识符。这可以通过Identitiesapi 来完成。

如果您有您的群组唯一 ID:

GET https://vssps.dev.azure.com/fabrikam/_apis/Identities/{id}?queryMembership=None

然后从 json 响应中获取描述符.Descriptor.Identifier

如果您没有组 ID,但有显示名称:

GET https://vssps.dev.azure.com/fabrikam/_apis/Identities?searchFactor=DisplayName&factorValue={display name url encoded}&options=None&queryMembership=None

然后从 json 响应中获取描述符[0].Descriptor.Identifier

获取您的存储库 ID 和项目 ID(这比组标识符容易得多,所以我不会详细说明),然后您就拥有了所有必需的数据。构建您的请求正文:

{ 
   "token":"repoV2/{projectId}/{repoId}/",
   "merge":true,
   "accessControlEntries":[ 
      { 
         "descriptor":"Microsoft.TeamFoundation.Identity;{groupIdentifier}",
         "allow":2,
         "deny":0,
         "extendedInfo":{ 
            "effectiveAllow":2,
            "effectiveDeny":0,
            "inheritedAllow":2,
            "inheritedDeny":0
         }
      }
   ]
}

POST https://dev.azure.com/fabrikam/_apis/AccessControlEntries/2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87

注意 url 中的 id 是硬编码的,因为它是一个常量。但是您也可以从响应中获取

GET https://dev.azure.com/fabrikam/_apis/securitynamespaces
于 2019-12-01T14:23:23.120 回答