【问题标题】:Azure DevOps make project read onlyAzure DevOps 使项目只读
【发布时间】:2020-05-04 07:17:34
【问题描述】:

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

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

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

我用 git repos 试过这个,但有一些问题 权限不会向下继承到创建 git repo,他们仍然可以签入。

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

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

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

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

【问题讨论】:

    标签: permissions azure-devops ado readonly


    【解决方案1】:

    是的,您发现了 Azure DevOps 权限模型的一个令人讨厌的功能。更具体的 ACL 胜过不太具体的 ACL。即使是 DENY 规则。

    当更具体的 ACL 上有明确的 ALLOW 规则时,它将覆盖不太具体的 ACL 上的 DENY。

    git 的特殊性基于:

    1. 服务器(仅限 TFS)
    2. 组织/项目集合
    3. 项目
    4. 默认回购设置
    5. 具体的回购设置
    6. 分支文件夹设置(只能通过 API 设置)
    7. 具体的分支设置

    其他安全对象也存在类似的层次结构。

    除了编写动作脚本之外,没有简单的方法可以去除所有这些。

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

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

    其他可能需要的电话:

    【讨论】:

    • @jesshouwing 所以我必须遍历每个项目然后再 git repo,并在脚本中更新每个用户(明确存在)的权限。这很痛苦:(。
    • 您可以列出所有明确设置的内容,这样您就不必遍历所有可能的安全对象。
    【解决方案2】:

    Azure DevOps 现在有一个名为“Disable Repository”的功能。

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

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

    【讨论】:

    • 不错的功能,但不幸的是,这破坏了对 repo 的所有访问。你甚至无法阅读它。任何指向从中签入的工作项链接都将显示为“无法访问”
    猜你喜欢
    • 2021-06-27
    • 2022-01-04
    • 2020-12-22
    • 2019-03-10
    • 2019-11-06
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多