2013-09-27 6 views
19

Aドッカーblog postが示すように、それが実行されるよう:セキュリティrootユーザー

ドッカーコンテナは、デフォルトでは、非常に安全です。あなたは 非特権ユーザ(すなわち、非root)として、容器の内側にあなたのプロセスを実行しているの世話を 場合は特に。」

をだから私はドッキングウィンドウの下でrootとして実行している場合は、セキュリティ上の問題何です私は、権限のないユーザーとして自分のプロセスを世話するとかなり安全です。つまり、rootユーザーとしてコンテナ内でホストするのに有害なのはどうすればいいのですか?

答えて

16

ルートとして実行すると、より広い範囲のカーネルサービスにアクセスできます。たとえば、次のようになります。

  • ネットワークインターフェイス、ルーティングテーブル、ネットフィルタのルールを操作する。
  • 生のソケットを作成します(一般に、「エキゾチックな」ソケットで、古いTCPやUDPよりも精査の少ないコードを実行します)。
  • マウント/マウント解除/マウントファイルシステム。
  • ファイルの所有権、アクセス権、拡張属性を変更し、通常の権限をオーバーライドします(つまり、わずかに異なるコードパスを使用します)。
  • など

(それはすべてのそれらの例はcapabilitiesで保護されていることに注意することは興味深い。)

キーポイントは、rootとして、あなたはより多くのカーネルコードを行使することができるということです。そのコードに脆弱性が存在する場合、それをrootとして起動できますが、通常のユーザーとしては起動できません。

さらに、誰かがコンテナから脱出する方法を見つけた場合、あなたがルートとして壊れた場合、通常のユーザーよりもはるかに多くの損害を被る可能性があります。

+0

あなたが実行するドッキングウィンドウは、私は根がしたい任意のもの – Mustafa

+1

を実行するためにroot以外のユーザーを実行したときですから、ほとんど安全だろうコンテナ内でのアクセスが可能ですが、ホストシステムを壊すことはできません。これは、単一のアプリケーションの単一コンテナ哲学を行うことを容​​易にします。 – CMCDragonkai

+1

最後の文章はコンテナからの抜け方が少し誤解を招くことです。コンテナの中に誰がいるかにかかわらず、コンテナから壊れる可能性がある場合は、LXCプロセス自体がホストOS上で実行されているかどうかを調べる必要があります。これは多くの場合根です。つまり、コンテナプロセスを非特権ユーザーとして実行することは良い考えです。これは、少なくとも理論的にはコンテナから抜け出すのが難しくなるためです。 – nateware

5

ホストマシンを再起動するには、ドッカーの/proc/sysrq-triggerにエコーします。 dockerでrootとして実行されているプロセスはこれを行うことができます。

これは、ドッキングウィンドウでrootとしてプロセスを実行しないようにかなり良い理由を思わ;)

+6

'bash:/ proc/sysrq-trigger:読み取り専用ファイルシステム' –

+2

2年後何かを修正? – wrzasa

+0

ええ、申し訳ありませんが、私は日付を見ませんでした:) –

関連する問題