2

我需要限制 azure repos 中特定用户组跨 50 个 repos 的某些分支的权限。也就是说,特定的一组用户不能强制推送到 master 分支,但可以强制推送到其他分支。

这在界面中很容易做到,但需要转到 50 多个存储库并手动执行此任务。我一直在阅读 Azure repos API 文档,但我很难了解如何进行设置?

4

2 回答 2

1

如博客文章https://jessehouwing.net/azure-devops-git-setting-default-repository-permissions/中所述:

tfssecurity /a+ "Git Repositories" repoV2/<Team Project GUID>/<repository guid>/refs^heads^<branch name>/ "ForcePush" <memberIdentity> DENY /collection:https://dev.azure.com/{organization}

可以通过 REST API 找到存储库 guid,其中 GitRepository.id 包含 guid: https ://docs.microsoft.com/en-us/rest/api/azure/devops/git/repositories/list?view=azure -devops-rest-5.1#examples

有关如何指定成员身份的详细信息,请参阅https://docs.microsoft.com/en-us/azure/devops/server/command-line/tfssecurity-cmd?view=azure-devops 。

于 2019-10-17T12:38:55.207 回答
0

您可以使用下面的 rest api 为组设置分支权限。

POST https://dev.azure.com/{orgname}/{projectid}/_api/_security/ManagePermissions?__v=5

这是请求正文的示例。

{"updatePackage":
"{\"IsRemovingIdentity\":false,
\"TeamFoundationId\":\"{teamfoundationId}}\",
\"DescriptorIdentityType\":\"Microsoft.TeamFoundation.Identity\",
\"DescriptorIdentifier\":\"{DescriptorIdentifier}}\",
\"PermissionSetId\":\"2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87\",
\"PermissionSetToken\":\"repoV2/{projectId}}/{repoId}}/refs^heads^{branchname}}/\",
\"RefreshIdentities\":false,
\"Updates\":
[{\"PermissionId\":1,\"PermissionBit\":32768,\"NamespaceId\":\"2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87\",
\"Token\":\"repoV2/{projectId}/{repoId}/refs/heads/{branchId}/\"}],
\"TokenDisplayName\":null}"}

笔记

\"PermissionId\":1, 表示将权限设置为允许, \"PermissionId\":2, 表示将权限设置为拒绝, \"PermissionId\":1, 表示将权限设置为未设置。

\"PermissionBit\":32768是完成拉取请求权限时的绕过策略。 \"PermissionBit\":128是推送权限时的绕过策略。

\"PermissionBit\":4是推送权限时的贡献策略。

\"PermissionBit\":2048是编辑策略权限。

\"PermissionBit\":8是 Fource 推送权限。

\"PermissionBit\":8192是管理权限。

\"PermissionBit\":4096是删除其他人的锁定权限。

添加

请求体参数太多,可以通过官方文档获取。或者我建议您通过使用网络工具手动捕获这些参数来获取这些参数。

于 2019-10-18T05:37:23.667 回答