2016-11-07 51 views
8

我目前正在進行一項設置,以使Docker在高性能羣集(HPC)上可用。我們的想法是,我們組中的每個用戶都應該能夠保留一定時間的計算機,並且能夠以「正常方式」使用Docker。通過Docker CLI訪問Docker守護進程的含義。禁用某些Docker運行選項

爲此,用戶將被添加到Docker組。但是這給我們帶來了一個很大的安全問題,因爲這基本上意味着用戶在該機器上擁有root權限。

新想法是利用用戶命名空間映射選項(如https://docs.docker.com/engine/reference/commandline/dockerd/#/daemon-user-namespace-options中所述)。正如我所看到的,這將解決我們最大的安全問題,即容器中的根與主機上的根相同。

但是,只要用戶能夠通過--userns = host來繞過此操作,這不會以任何方式提高安全性。

有沒有辦法禁用這個和其他Docker運行選項?

+0

你可以寫一個shell腳本,將推出'搬運工跑......',但這看起來像一個有缺陷的概念 – user2915097

+0

我認爲只更改或替換CLI沒有多大幫助,因爲Docker守護程序套接字仍然會接受這些選項。所以你可以使用另一個程序與套接字進行交互。該更改應該禁用Docker守護程序本身中的選項。 – StateOfTheArt89

+0

他們爲什麼需要訪問Docker CLI?如果可以刪除該要求,則可以授予他們訪問腳本的權限,從而將任何圖像作爲容器進行加密,但安全風險要低得多。 – BMitch

回答

2

issue 22223

提到有一大堆,其中用戶可以通過運行搬運工提升權限的方式,例如通過使用--privileged
你可以阻止這種由:

  • 要麼不提供直接訪問後臺程序在生產,使用腳本,

(這是不是你想要的這裏)

即:

dockerd --authorization-plugin=plugin1 

這可能會導致:

https://docs.docker.com/engine/extend/images/authz_deny.png

+1

這是一個基本的docker授權插件示例:https://github.com/twistlock/authz – VonC