web-dev-qa-db-ja.com

応援を許可しないようにDockerホストを保護する方法

サーバー上のDockerをより安全にしようとしています。主な問題は、ほとんどの人が「Dockerにアクセスできる場合は、rootになることもできる」と言うことです。管理者のポイントはほとんどありませんが、これはあなたが望むことではありません。

詳細については、-vを使用して/etcをコンテナ内の/mntにマウントし、シャドウファイルを変更してホストにアクセスできます。 -d、または特権オプションを使用して、さらに多くのことを行うことができます。

ですから、基本的に、私が「試して」制限したいことがいくつかあります。

  1. ボリュームバインドマウント
  2. 特権
  3. --add-cap
  4. -d(特定のアイテム?)

これまでの私の考え:

  • Dockerのbashスクリプトのエイリアスを作成し、Sudoを使用して、実行してはいけないことをすべて正規表現します。
  • リモートAPIをオンにして保護し、おそらくnginxでリバースプロキシし、nginxで正規表現を使用してはいけないことを行います。
  • 他のツールを使用しますか? Mesos /マラソン/群れ/造船所/その他

オプションの項目は、gitコードへのコミット時にコンテナーを作成し、「チェッカー」にDockerfileの内容を確認させ、それらのイメージを作成させることです。次に、そのイメージに署名して、自動的にデプロイします。 (しかし、これはもはや彼らに多くの自由を与えないでしょう)

また、バインドボリュームを削除するのは良いことではありません。 「ユーザーXとして、/dataにのみマウントできます」というdockerのプラグインがあれば、はるかに簡単になります。ここで、USERDockerfileはそのユーザーXです。

docker-novolume-plugin のようなものは、すでにボリュームの良いスタートですが、バインドボリュームを制限しません。

結局のところ、問題は、ユーザーが自分のユーザー/ドッカーとしてドッカーイメージをビルド/プル/実行し、システムをルート化できないようにするにはどうすればよいかということです。それが機能する限り、完璧である必要はありません。

6

dockerエンジンを保護するには、さまざまな側面に注意を払う必要があり、多層防御は常にです。 )セキュリティのレイヤー

リストした要件の1つである、ユーザーがdockerエンジンに実行するように命令できることを制限することは、おそらく最も重要なものの1つです。現在のところ、dockerエンジンは承認管理。

あなたの選択肢は次のとおりです。

  • Twistlock のようなクローズドソースソリューション、dockerAPIにアクセスするためのRBACとポリシー制御を実装するプロジェクト

  • OpenShift Origin 、役割ベースのアクセス制御を セキュリティ制約 および きめ細かい承認ポリシー の形式で実装するオープンソースプロジェクト。展開はかなり簡単で、すぐに使用できるソリューションを用意するのに大いに役立ちます。

また、dockerエンジンを展開できるさまざまなオペレーティングシステムを調べることをお勧めします。また、汎用OSではなく、 Atomic などの特殊なOSを使用することをお勧めします。 AtomicとOpenShiftの両方を一緒に使用すると、次のことができるようになります。

5
dawud