通过 Azure Repos 为一个组设置分支权限 API
Set branch permissions for a group via Azure Repos API
我需要限制 Azure 存储库中特定用户组的 50 个存储库中某些分支的权限。也就是说,某部分用户不能强制push到master分支,但是其他分支可以。
这在界面中很容易完成,但需要转到 50 多个存储库并手动执行此任务。我一直在阅读 Azure 存储库 API 文档,但我正在努力了解如何设置它?
如博文中所述post 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。
您可以使用下面的 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
,表示设置权限为Allow,
\"PermissionId\":2
,表示设置权限为Deny,
\"PermissionId\":1
表示设置权限为Not Set。
\"PermissionBit\":32768
是完成拉取请求权限时的绕过策略。
\"PermissionBit\":128
是推送权限时的绕过策略。
\"PermissionBit\":4
是推送权限时的Contribute策略。
\"PermissionBit\":2048
是编辑策略权限。
\"PermissionBit\":8
为Fource推送权限
\"PermissionBit\":8192
是管理权限。
\"PermissionBit\":4096
是解除别人的锁权限
加法
请求体参数过多,可以通过官方文档获取参数。或者我建议你使用网络工具手动获取这些参数。
我需要限制 Azure 存储库中特定用户组的 50 个存储库中某些分支的权限。也就是说,某部分用户不能强制push到master分支,但是其他分支可以。
这在界面中很容易完成,但需要转到 50 多个存储库并手动执行此任务。我一直在阅读 Azure 存储库 API 文档,但我正在努力了解如何设置它?
如博文中所述post 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。
您可以使用下面的 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
,表示设置权限为Allow,
\"PermissionId\":2
,表示设置权限为Deny,
\"PermissionId\":1
表示设置权限为Not Set。
\"PermissionBit\":32768
是完成拉取请求权限时的绕过策略。
\"PermissionBit\":128
是推送权限时的绕过策略。
\"PermissionBit\":4
是推送权限时的Contribute策略。
\"PermissionBit\":2048
是编辑策略权限。
\"PermissionBit\":8
为Fource推送权限
\"PermissionBit\":8192
是管理权限。
\"PermissionBit\":4096
是解除别人的锁权限
加法
请求体参数过多,可以通过官方文档获取参数。或者我建议你使用网络工具手动获取这些参数。