理由:dockerデーモンをイメージのコンテナ(コンテナを実行していない)だけに制限することはできますか?
私は、ソースコードのうち、画像を構築するために、私のCIに--privileged
フラグとドッカーでドッカー(dind
)を使用しています。 build
、tag
、pull
、およびpush
コマンドだけが必要で、run
(すべてのセキュリティ問題の根源とみなされます)などの他のコマンドはすべて避けたいと考えています。
注:私はちょうどドッカーのremote APIはなく、デーモン自体を制限したいです!
私の最高のオプションは、これまで:
ドッカークライアントがHTTPを介して(とないソケット)dind
と通信したように、私は私がdind
ホストする前にプロキシを入れて、(例えばPOST /containers/create
を)すべてのパスをフィルタリングすることができると思いましたビルディング/プッシュ画像へのAPIアクセスのみを制限する。
私が決してバインドがホストマシン上でドッキングウィンドウソケットをマウントします:私はを避けたい何
!
更新: APIルータはドッカーデーモンにハードコードされていることをそれseems
。
アップデート2:
私はこれまでのところ、私の最良の選択肢で行き、nginxのサーバブロック特定のパス(例えば/containers
)を構成しました。これは、イメージがdind
イメージで行われ、APIの制限がビルドプロセスを妨げないので、イメージの構築には問題ありません。
いつも:これは本当に醜いですね!
フェアポイント!しかし、API(socket/tcp)上でコンテナを開始することを制限しても、デーモンがコンテナをイメージビルドのために内部的に起動できないというわけではありません。右? –
ドッキングクライアントはビルド中に 'POST/containers/create'を送信しません。サーバは内部的にビルドプロセスを管理します。したがって、保護しているタスクを完了させる可能性のある内部サーバー・プロセスに影響を与えることなく、外部APIエンドポイントを保護することができます。 – Matt
@YanFotoは[twist lock](https://github.com/twistlock/authz)を見ています。私はまだ実験室でこれを投げるチャンスはありませんでしたが、APIプロキシなしでリクエストをフィルタリングすることができます。 – BMitch