Nexus Docker并通过内容选择器限制访问

And*_* N. 2 nexus

错误报告或请求帮助:我正在尝试在我的组织中实施私有docker注册表,并且需要在我的注册表中进行多租户.A组可以访问其容器,但不能访问B组.

文档暗示我可以通过内容选择器执行此操作可以用于授予对查询结果的访问权限,有点像视图.我已经取得了一些成功,但已经遇到了类似bug的问题.

  • 我创建了一个注册表:5000.
  • 匿名访问已关闭.
  • 我创建了一个测试用户.
  • 我创建了一个内容选择器,它应该限制对名称中带有"spark"的容器的访问. path =~ ".*spark.*"

查询的预览输出预期结果.现在我试试docker login.我得到了一个403 Forbidden.

如果我授予测试用户nx-repository-view-docker-*-read角色,测试用户可以docker login访问注册表并查看所有容器.(可能是故意的)内容选择器不限制访问.

但是,如果我nx-repository-view-docker-*-read在成功后删除角色docker login并保留内容选择器角色,则内容视图将按预期工作.

这不是一个可行的解决方案,但在可能缺少/窃听的方面非常有趣.

有任何想法吗?我只是做错了吗?我发现一篇帖子表明官方的答案是在不同的端口上创建多个注册表并以这种方式允许它们.可行但不理想.

另请参阅: 通过脚本创建内容选择器和权限,以将docker注册表分离为项目拥有的命名空间

Jon*_*kel 6

欢迎来到SO!

简短回答:

试试format == "docker" && ( path == "/v2/" || path =~ ".*spark.*" ).

说明:

你注意到的问题是docker login.如果path == "/v2/"未在内容选择器中指定,则此命令不起作用.这不会授予对任何容器的访问权限,只能授予对注册表本身的访问权限,因此添加它将允许您登录.除此之外,您的内容选择器应按预期工作.而已!

不幸的是,到目前为止,这还没有包含在文档中.