2017-04-11 94 views
1

Bug報告或請求幫助: 我試圖在我的組織中實現私人碼頭註冊表,並且需要在我的註冊表中使用多租戶。 A組可以訪問他們的容器,但不能訪問B組。Nexus Docker和通過內容選擇器限制訪問

該文檔暗示我可以通過內容來做到這一點選擇器可以用來授予對查詢結果的訪問權限,就像一個視圖。我已經取得了一些成功,但遇到了bug。

  • 我在:5000上創建了一個註冊表。
  • 匿名訪問被關閉。
  • 我創建了一個測試用戶。
  • 我創建了一個內容選擇器,它應該限制對名稱中帶有「spark」的容器的訪問。 path =~ ".*spark.*"

查詢的預覽輸出預期結果。 現在我試試docker login。我得到一個403禁止。

如果我授予我的測試用戶nx-repository-view-docker-*-read角色,測試用戶可以將docker login註冊到註冊表並查看所有容器。 (可能是故意的) 雖然內容選擇器不限制訪問。然而,如果我在成功刪除docker login後刪除nx-repository-view-docker-*-read角色,並保留內容選擇器角色,則內容視圖將按預期工作。

不是一個真正可行的解決方案,但非常有趣的是什麼可能會丟失/錯誤。

任何想法?我只是做錯了嗎? 我發現一篇文章指出官方的答案是在不同的端口上創建多個註冊表並允許他們這樣做。 可行,但不理想。

參見: Create Content Selector and Privileges via script for separating a docker registry into project owned namespaces

回答

5

歡迎SO!

簡短的回答:

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

說明:

正如您所注意到的問題是docker login。如果未在內容選擇器中指定path == "/v2/",則此命令不起作用。這不會授予對任何容器的訪問權限,而是授予註冊表本身,因此添加它將允許您登錄。除此之外,您的內容選擇器應按預期工作。而已!

不幸的是,到目前爲止,這並未包含在文檔中。

+0

你好@jonas,也許你想爲我們寫一篇博客文章? – DarthHater

+0

Hi @DarthHater,抱歉,我沒有博客 – Jonas

+0

但是我們做到了! :)這是我的查詢,如果你想爲我們寫一篇文章@Jonas – DarthHater