Azure DevOps 使项目只读

jam*_*mes 7 permissions ado readonly azure-devops

我们有一些旧的 ADO/VSTS 项目,我们希望将它们存档并设为只读。每个项目都有工作项、构建、git repos 等...

目前我发现的唯一方法是痛苦的。

  1. 删除除只读组之外的所有组并在其中添加用户。这太痛苦和太长了,我们有 300 多个项目要设为只读
  2. 创建一个新组,然后添加其他组(例如项目管理员、贡献者等),然后将此组添加到顶级区域/git repo 路径并将所有设置为 DENY。*

我用 git repos 尝试了这个,但存在一些问题,因为某些权限不会继承给创建 git repo 的个人用户,他们仍然能够签入。

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

在此处输入图片说明

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

在此处输入图片说明

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

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

jes*_*ing 8

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

当更具体的 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取消设置或覆盖给定的权限。

其他可能需要的电话:


Maj*_*jor 7

Azure DevOps 现在有一个名为“禁用存储库”的功能。

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

这意味着您的存储库将不允许提交,甚至构建和管道也无法使用它。只需转到您的 DevOps“项目设置”即可。向下滚动到“存储库”菜单,然后选择您要禁用的存储库。

在此输入图像描述

  • 不错的功能,但不幸的是这会破坏对存储库的所有访问。你甚至无法阅读它。任何指向其签入的工作项链接都将显示为“无法访问” (4认同)