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 设置 -> 系统 -> 功能,并检查是否有任何功能会为您的用户提供不需要的角色。
我将 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 设置 -> 系统 -> 功能,并检查是否有任何功能会为您的用户提供不需要的角色。