Nexus 3 Docker 内容选择器选择了太多图片

Nexus 3 Docker Content Selector selects too many images

我将 Nexus 3 用作 docker 存储库,并希望创建一个对特定 docker 图像(及其相关标签)只有只读访问权限的用户

为此,我使用以下查询创建了一个内容选择器(图像的名称是用于演示目的的测试): format == "docker" and path =~ "^(/v2/|/v2/library/)?(test(/.*)?)?$".

然后我创建了一个具有读取操作的权限,将其绑定到一个角色并将其添加到用户。

一切都很好,当我使用受限用户时,我可以获取图像而不是推送。 但是,我仍然可以拉取我不应该拉取的图像。

请考虑以下事项:我在 docker 注册表上创建了一个名为 testaaa:1 的映像。之后,我 docker login 使用具有只读访问权限的用户访问注册表。我突然能够拉动 docker pull hub.my-registry.com/testaaa:1,尽管根据查询我不应该拉动。

我在 Java 正则表达式测试器中测试了查询,查询不会 select testaaa。我错过了什么吗?我很难找到关于这个话题的线索。

编辑:更多测试表明我的用户实际上能够从此注册表中提取所有图像。我使用的内容选择器查询正是 Sonatype 文档建议的 Content Selectors and Docker - REST API vs Docker Client

我想通了。问题不是内容选择器查询,而是我之前添加的功能。该功能授予任何经过身份验证的用户 nx-anonymous 角色,允许任何人查看 Nexus 中的任何存储库。这意味着任何经过身份验证的用户都可以 read/pull 存储库中的任何图像。

这个错误完全是我造成的。如果有人遇到类似问题,请查看 Nexus 设置 -> 系统 -> 功能,并检查是否有任何功能会为您的用户提供不需要的角色。