Azure DevOps 使项目只读

问题描述 投票:0回答:4

我们有一些旧的 ADO/VSTS 项目,我们想要将其存档并设为只读。每个项目都有工作项、构建、git 存储库等...

目前我找到的唯一方法都很痛苦。

  1. 删除除只读组之外的所有组并在其中添加用户。 这太痛苦太漫长了,我们有超过 300 个项目需要只读
  2. 创建一个新组,然后添加其他组(例如项目管理员、贡献者等),然后将该组添加到顶级区域/git 存储库路径并将全部设置为“拒绝”。 *

我用 git repos 尝试了这个,这有一些问题,因为有些 权限不会继承到创建该权限的各个用户 git repo,他们仍然可以签入。

在这里您可以看到我创建了一个 READONLY 组,并将除读取权限之外的所有内容设置为 DENY。 (该组的成员是默认组,例如贡献者、构建管理员、项目管理员)

但是,在创建只读组之前,我有一个由测试用户创建的存储库,并且该用户似乎仍然拥有该存储库的权限

好吧,我明白,如果权限设置在较低级别,那么它们不会从顶级父级继承下来。我可以创建一个脚本来检查每个 git 存储库的用户并将其签入权限设置为拒绝,但这很痛苦,我不想这样做。同样,有些项目有超过 300 个 git 存储库。

仅供参考,我想让整个项目只读,而不仅仅是 git repos。

permissions azure-devops ado readonly
4个回答
8
投票

是的,您已经发现了 Azure DevOps 权限模型的令人讨厌的功能之一。更具体的 ACL 胜过不太具体的 ACL。即使对于拒绝规则。

当更具体的 ACL 上存在显式 ALLOW 规则时,它将覆盖不太具体的 ACL 上的 DENY。

git 的特殊性基于:

  1. 服务器(仅限 TFS)
  2. 机构/项目征集
  3. 项目
  4. 默认仓库设置
  5. 具体的仓库设置
  6. 分支文件夹设置(只能通过API设置)
  7. 具体分支设置

其他证券也存在类似的层次结构。

除了编写动作脚本之外,没有简单的方法可以将这些全部删除。

Azure CLI 有一个 devops 扩展,它允许您编写所需的脚本,并可以输出 JSON 以便更轻松地编写脚本。

您可以使用

az devops security permission list

 列出为身份(组或用户)定义的所有权限,并使用 
az devops security permission reset
az devops security permission update
 取消设置或覆盖给定权限。

其他可能需要的电话:

  • az devops 安全组列表
  • az devops 用户列表
  • az devops 安全组成员资格 *

7
投票
Azure DevOps 现在有一个名为:“

禁用存储库”的功能。

禁用对存储库的访问(包括构建、拉取请求、 等),但保持存储库可发现并带有警告。

这意味着您的存储库将不允许提交,甚至构建和管道也无法使用它。只需转到您的 DevOps“

项目设置”即可。向下滚动到“存储库”菜单并选择您要禁用的存储库。


0
投票
您可以使用 Azure DevOps 禁用存储库选项,该选项的缺点是存储库不再显示在项目下的存储库列表中。如果代码仍应可读以供参考,则这可能是不需要的。

答案之一中解释的另一种方法是使用存储库设置 UI 手动删除任何写入权限。如果您的存储库上有很多访问控制列表,甚至需要在多个存储库上执行此操作,则手动方法可能会变得非常耗时。因此,我编写了一个脚本来自动执行此操作:

https://github.com/ckadluba/RemoveAzureGitRepoWritePermissions

它基本上是这样工作的。

.\Remove-AzureGitRepoWritePermissions.ps1 -OrgName "myorganisation" -ProjectName "MyProject" -RepoName "MyRepo"
它对以下权限设置显式拒绝:GenericContribute、ForcePush、CreateBranch、CreateTag、ManageNote、PolicyExempt、PullRequestContribute
和 PullRequestBypassPolicy。


0
投票
对于存储库,至少,您应该能够通过简单地使用存储库策略之一来阻止新数据的上传。

© www.soinside.com 2019 - 2024. All rights reserved.