要编写存储库和分支安全性脚本,可以使用tfssecurity.exe
新权限 REST API 或Azure CLI。以下博客文章中的所有详细信息:
对于特定的分支,/refs^heads^master/
在 Token 的末尾添加。
摘抄
如果您过去曾深入研究过 Azure DevOps 的安全内部结构,您会发现某些权限被授予个人或组并与令牌相关联。这个令牌通常由一个根对象和一堆 GUID 组成。例如,这是特定 Git 存储库的令牌:
repoV2/daec401a-49b6-4758-adb5-3f65fd3264e3/f59f38e0-e8c4-45d5-8dee-0d20e7ada1b7
^ ^ ^
| | |
| | -- The Git Repository
| -- The Team Project Guid
|
-- The root object (Repositories)
我知道找到这些详细信息的最简单方法是捕获更改权限时发出的 Web 请求:
您可以在您喜欢的浏览器中使用 Web Developer 工具来查找您需要的令牌。一旦理解了这一点,就很容易找到“团队项目中的所有存储库”令牌的令牌。只需在最后取下 Git 存储库 GUID:
repoV2/daec401a-49b6-4758-adb5-3f65fd3264e3b7/
^ ^
| |
| -- The Team Project Guid
|
-- The root object (Repositories)
并且,使用相同的推理,获取“项目集合/组织中的所有存储库”令牌的令牌。只需在最后取下 Team Project GUID:
repoV2/
^
|
-- The root object (Repositories)
现在我们有了这个令牌,我们可以使用 tfssecurity 来设置组织级别的 git 权限:
tfssecurity /a+ "Git Repositories" repoV2/ "PullRequestBypassPolicy" adm: ALLOW /collection:https://dev.azure.com/org
^ ^ ^ ^ ^ ^
| | | | | -- Allow or Deny the permission
| | | | -- The Group (in this case "Project Collection Administrators")
| | | -- The Permission we want to set
| | -- The Token we found above
| -- The Secuity Namespace
-- Add (a+) or Remove (a-) this permission
而且,正如您在下面看到的,这个技巧确实有效:)。
您可以使用相同的技术来保护分支。分支的令牌使用存储库的令牌作为基础并将分支添加到其中。因为 a/
是标记分隔符,所以通过替换为 来转义分支/
引用^
。因此refs/heads/master
变成refs^heads^master
:
repoV2/daec401a-49b6-4758-adb5-3f65fd3264e3/f59f38e0-e8c4-45d5-8dee-0d20e7ada1b7/refs^heads^master/
^ ^ ^ ^
| | | |
| | | -- The branch
| | -- The Git Repository
| -- The Team Project Guid
|
-- The root object (Repositories)