Nexus Docker 并通过内容选择器限制访问
Nexus Docker and restricting access via Content Selector
错误报告或请求帮助:
我正在尝试在我的组织中实施私有 docker 注册表,并且需要在我的注册表中进行多租户。例如,A 组可以访问其容器,但不能访问 B 组的容器。
文档暗示我可以通过内容选择器执行此操作,内容选择器可用于授予对查询结果的访问权限,有点像视图。我取得了一些成功,但 运行 发现了一些看起来像错误的东西。
- 我在
:5000
上创建了一个注册表。
- 匿名访问已关闭。
- 我创建了一个测试用户。
- 我创建了一个内容选择器,它应该限制对名称中带有 "spark" 的容器的访问。
path =~ ".*spark.*"
查询预览输出预期结果。
现在我尝试 docker login
。我得到一个 403 禁止。
如果我授予我的测试用户 nx-repository-view-docker-*-read
角色,测试用户可以 docker login
到注册表并查看所有容器。 (可能是故意的)
不过,内容选择器并不限制访问。
但是,如果我在 docker login
成功后删除 nx-repository-view-docker-*-read
角色并保留内容选择器角色,内容视图会按预期工作。
不是真正可行的解决方案,但就可能是什么而言非常有趣 missing/bugged。
有什么想法吗?我只是做错了吗?
我发现一个 post 表明官方答案是在不同的端口上创建多个注册表并以这种方式允许它们。
可行,但不理想。
另请参阅:
Create Content Selector and Privileges via script for separating a docker registry into project owned namespaces
欢迎来到 SO!
简答:
尝试format == "docker" && ( path == "/v2/" || path =~ ".*spark.*" )
。
解释:
如您所见,问题出在 docker login
。如果未在内容选择器中指定 path == "/v2/"
,则此命令不起作用。这不会授予对任何容器的访问权限,而是授予注册表本身的访问权限,因此添加它将允许您登录。除此之外,您的内容选择器应该按预期工作。就是这样!
遗憾的是,到目前为止,这还没有包含在文档中。
错误报告或请求帮助: 我正在尝试在我的组织中实施私有 docker 注册表,并且需要在我的注册表中进行多租户。例如,A 组可以访问其容器,但不能访问 B 组的容器。
文档暗示我可以通过内容选择器执行此操作,内容选择器可用于授予对查询结果的访问权限,有点像视图。我取得了一些成功,但 运行 发现了一些看起来像错误的东西。
- 我在
:5000
上创建了一个注册表。 - 匿名访问已关闭。
- 我创建了一个测试用户。
- 我创建了一个内容选择器,它应该限制对名称中带有 "spark" 的容器的访问。
path =~ ".*spark.*"
查询预览输出预期结果。
现在我尝试 docker login
。我得到一个 403 禁止。
如果我授予我的测试用户 nx-repository-view-docker-*-read
角色,测试用户可以 docker login
到注册表并查看所有容器。 (可能是故意的)
不过,内容选择器并不限制访问。
但是,如果我在 docker login
成功后删除 nx-repository-view-docker-*-read
角色并保留内容选择器角色,内容视图会按预期工作。
不是真正可行的解决方案,但就可能是什么而言非常有趣 missing/bugged。
有什么想法吗?我只是做错了吗? 我发现一个 post 表明官方答案是在不同的端口上创建多个注册表并以这种方式允许它们。 可行,但不理想。
另请参阅: Create Content Selector and Privileges via script for separating a docker registry into project owned namespaces
欢迎来到 SO!
简答:
尝试format == "docker" && ( path == "/v2/" || path =~ ".*spark.*" )
。
解释:
如您所见,问题出在 docker login
。如果未在内容选择器中指定 path == "/v2/"
,则此命令不起作用。这不会授予对任何容器的访问权限,而是授予注册表本身的访问权限,因此添加它将允许您登录。除此之外,您的内容选择器应该按预期工作。就是这样!
遗憾的是,到目前为止,这还没有包含在文档中。