ドッカーエンジン1.10セキュリティの改善

DockerConと休日で過去数か月はクレイジーでしたが、それでも私たちはまだDockerエンジンをハッキングしており、Docker Engine 1.10のリリースで強調したいいくつかの本当に素晴らしいセキュリティ機能を備えています。

セキュリティは私たちにとって非常に重要であり、私たちのアプローチは2つあります。1 つは、アプリケーションを構築するための安全な基盤を提供することで、もう 1 つは、アプリケーション自体をセキュリティで保護する機能を提供することです。 Docker Engineは、コンテナをプル、ビルド、実行するための基盤であり、以下にリストされているすべての機能は、アクセス、リソース、およびその他のキックアスのものをよりきめ細かく制御するためのものです...

OK、紹介で十分です–良いものに取り掛かりましょう!

セカンププロファイル

ドッカーセキュリティ-バナー-01
Seccomp フィルタリングを使用すると、プロセスは berkeley パケット・フィルターを syscall に指定できます。 素人の言葉で言えば、これにより、ユーザーはシステムコールをキャッチし、渡されたシステムコール番号と引数を介してシステムを「許可」、「拒否」、「トラップ」、「キル」、または「トレース」することができます。 これにより、コンテナ内のプロセスをロックダウンして、必要なものだけを実行する際の粒度が高まります。

これは最初に Runc に追加され、Docker Engine 1.10 にあり、システムコールとそのフィルターを定義するプロファイルが渡されます。 また、何も渡されない場合や、コンテナーが特権として実行されていない場合に使用される既定のプロファイルもあります。 これは docker / docker / #18780でハッシュアウトされました。 私たちは、過度に制限することなく、使用可能なデフォルトを提供することを目指しました。 ただし、seccomp プロファイルなしで実行する必要がある場合は、 を使用して --security-opt seccomp:unconfined コンテナーを実行することもできます。

Seccomp の詳細については、こちらをご覧ください

そして ここにデモがあります:

セキュリティプロファイルの概要

上記のseccompプロファイルは、さらに優れたものの始まりにすぎません。 カスタムapparmorプロファイルを作成するためのより良い方法のためのサイドプロジェクトとして始まったもの、 https://github.com/jfrazelle/bane、 Docker Engineのネイティブセキュリティプロファイルの提案になりました。 今、これはまだ作業中ですが、私はこれから何が起こるかについてのティーザーを与えたかったのです-そしてもちろん私の素晴らしいツール🙂にプラグを与えてくださいあなたは ここでこれに関する会話を読んでフォローすることができます。

ユーザー名前空間

Phil Estes さんは、ユーザー名前空間を Docker Engine 1.10 の安定版リリースにするために懸命に取り組んできました。 ユーザー名前空間は、複数の名前空間を同じ Docker ホストに存在させることで、きめ細かいアクセス ポリシーの概念を拡張します。

デモをご覧ください

認可プラグイン

Docker 管理者は、承認プラグインを使用して、Docker デーモンへのアクセスを管理するための詳細なアクセスポリシーを構成できます。 システム管理者は、これらのプラグインを使用して、インフラストラクチャのユーザーアクセスポリシーを構成できます。 プラグインは、ユーザーが作成したルールに基づいてdocker APIリクエストを許可または拒否できるインターセプターとして機能します。 これらのプラグインがインストールされ、構成されていることは、DockerプラグインAPIを介したボリュームおよびネットワーキングの現在のプラグインと同じように機能します。

Dima StoppelLiron Levin、そして Twistlockチームが この機能をDocker Engineに貢献してくれたことに感謝します。

認証プラグインの作成または使用の詳細については、 こちらをご覧ください。

プルリクエストはこちらで確認できます docker /docker/#15365.

ここには、 Authプラグインを簡単に利用できるようにするためのgoパッケージがあります。

近日公開 — PIDコントロールグループ

この次の機能は1.11になりますが、ここでティーザーを提供したいと思いました。 これは、cgroup 内でフォークできるプロセスの数を制限するための新しい cgroup です。 4.3 カーネルで出荷されました。 この機能をデフォルトで安全にすることにしました、つまり、docker cgroup親のPID制限を512に設定しています(実際の数は変わる可能性がありますが、これらの行に沿った何か)、平均的なユーザーにとっては十分すぎるほどですが、大きな害を及ぼすには十分ではありません。 もちろん、さらに必要な場合は、デフォルトをオーバーライドしたり、無制限に設定したりすることもできます。

すごいですよね? しかし、これについての最もクールな部分は、機能がすべて同じ人物、 Aleksa SaraiによってLinux、次にRunc、そしてDockerにもたらされたことです!カーネルへのコミットをここで表示します 

runc へのプル要求 と Docker へのプル要求を表示します。

また、 docker stats これはあなたが知っていて愛しているコマンドとAPIに追加されました。

コンテナ用の --pids-limit フォーク爆弾を防ぐのがいかに簡単かをご覧ください。

ビデオの最初の部分はbash付きのコンテナ内のフォーク爆弾を示し、2番目の部分は.docker stats多数のピッドがあるコンテナはクロム😉です

お分かりのように、Dockerエンジン1.10にはたくさんの素晴らしいものがあります。 いつものように、#docker-dev IRC または github リポジトリであなたを捕まえてください。

セキュリティで保護された Docker イメージを構築するためのベスト プラクティスに関するこのビデオをご覧ください

詳細については、 Docker セキュリティ センターをご覧ください

ドッカー1.10に関するその他のリソース


ドッカーについてもっと知る