gpt4 book ai didi

permissions - 使用通配符为托管的 docker 注册表命名空间配置 Sonatype Nexus 3 权限

转载 作者:行者123 更新时间:2023-12-04 02:32:22 26 4
gpt4 key购买 nike

我已经安装了 Sonatype Nexus 3 OSS 和 Docker 的托管存储库(Docker 的私有(private)注册表)。我希望有几个用户,他们将能够根据他们的权限拉/推 docker 图像。

第一种方法,我该怎么做 - 为 docker 创建几个托管存储库,然后通过 Securiy -> Privileges use 存储库 View 使用这种方法根据确切的存储库配置权限:

username:   repository name:    permission:

user1 docker-internal-1 nexus:repository-view-:docker:docker-internal-1:read
user2 docker-internal-1 nexus:repository-view-:docker:docker-internal-1:add

user3 docker-internal-2 nexus:repository-view-:docker:docker-internal-2:read
user4 docker-internal-2 nexus:repository-view-:docker:docker-internal-2:add

这种方法有效,但它需要为 docker 提供多个托管存储库。

我的问题是 - 是否有可能为 docker 拥有一个单一托管的存储库,然后根据 docker 存储库命名空间配置权限?

假设我有一个名为 的存储库 docker 内部然后我有这样的权限:
username:   repository name:    permission:

user1 docker-internal nexus:repository-view-:docker:docker-internal/namespace1:read
user2 docker-internal nexus:repository-view-:docker:docker-internal/namespace1:add

user3 docker-internal nexus:repository-view-:docker:docker-internal/namespace2:read
user4 docker-internal nexus:repository-view-:docker:docker-internal/namespace2:add

不幸的是 Nexus 3 documentation我还没有找到如何使用 的方法存储库 View 权限,因为它们只允许您指定存储库名称,但不允许指定命名空间。然后有 这样的东西通配符 ,这在 Sonatype 文档中进行了描述,例如“通配符 -> 这些是使用模式对其他权限进行分组的权限”。所以我试图创建一些像这样的正则表达式模式:
nexus:repository-view:docker:docker-internal/namespace1:read

不幸的是,它不起作用。

最佳答案

我们找到了一种方法来结合内容选择器和权限来支持图像级权限。

首先,您必须创建两个内容选择器:

  • 带有表达式 format=="docker" and path=~"/v2/" 的“docker-login-all” .如果您也支持 v1 协议(protocol),请确保为其创建另一个选择器。
  • “docker-foo-selector”,其表达式与您要授予访问权限的图像匹配。例如选择 foo/bar-linux 的所有版本,表达式为 format=="docker" and path=~".*/foo/bar-linux/.*"

  • 第一个选择器非常重要,因为没有它,您将无法创建允许用户登录的规则。

    然后根据内容选择器创建两个权限:
  • 基于“Docker-login-all”的“docker-login-all-privilege”应用于所有 docker 注册表,具有读取权限。这将授予通过 docker cli 登录的能力。
  • 基于“docker-foo-selector”的“docker-foo-privilege”应用于所有 docker 注册表,具有读取权限。这将允许您的用户仅提取 foo/bar-linux 图像。

  • 然后创建一个只有这两个权限的角色,并将其与用户相关联。它应该工作。

    请注意使用某些命令时的意外行为: https://issues.sonatype.org/browse/NEXUS-12220

    关于permissions - 使用通配符为托管的 docker 注册表命名空间配置 Sonatype Nexus 3 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42345064/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com