「みんなの翻訳」は、世界中の文書をみんなで協力して翻訳するサイトです。

みんなの翻訳ロゴ
ブクタブ
翻訳サイト

カテゴリ一覧

このサイトについて 新規登録はこちら お試し翻訳

一覧

2015/07/07

復旧のお知らせ

2015/06/08 ~ 2015/07/07 の期間、サーバ障害によりサービスが利用できない状況になっておりました。 現在は復…

List

Hnoss

English⇒Japanese

shikimi

English⇒Japanese

tkkobe

English⇒Japanese

K0hei22

English⇒Japanese

ホーム > 翻訳記事

翻訳記事

そのDockerコンテナ、本当に安全? | from Opensource.com / Daniel J Walsh

2014年 7月 22日投稿   Daniel J Walsh
画像イメージ:opensource.com (cc-by-sa)


 この記事は、私筆者が今年のDockerConで行ったスピーチをもとに書いたものです。
 ここでは、Dockerコンテナがサイバー攻撃の被害に遭わないようにするための、セキュリティ対策について述べていきます。

  二部構成になっています。ぜひ、お付き合いください。(→第2部に移動する)


 

  てんでなってないコンテナの認識

  私は周りの人たちが、「Dockerコンテナは、サンドボックス・アプリケーションのように使える」と決めつけたような話をしているところを、数多く見聞きしました。
  そのような話をする人は、Dockerのルート権を乱用して、アプリケーションをでたらめに作成しているだろうことが予想されます。

 もし本当にそうだとしたら、彼らはDockerコンテナが、ホスト・システムを完全防御してくれるのだと思い込んでいるのです。
 彼らは、私が見た限りでは、こんな人たちです。

  • DockerコンテナはVMs/KVMのように処理を分離しているので、安全だという話をする人。
  • いい加減にダウンロードしてきたDockerイメージを、ホストシステムで使っている人。
  • (OpenShiftではないものの、)自身が管理しているPaaSサービスの顧客に、「マルチテナント・システム」が運用できるイメージのアップロードを、許容してしまっている人。
  • 「Dockerって、ネットからダウンロードしたランダムコードで動いていて、root権で操作できるんでしょ」とか言っている人。(私の同僚です!)

 

 考えが甘いです。「私のパーラーに来ないかい?」って『クモとハエ』じゃあるまいし。

  冗談ではありません。そんなことではマルウェアに感染します。
  Dockerに対する思い上がりを排除しなくてはなりません。
  DockerとLinuxカーネルについてきちんと理解を深め、あなた自身を守りましょう。



 

  まったく甘くないコンテナのお話 

  まず、あなたはDockerで「マルチテナント・システム」を運用していますか?
そうでないのなら、セキュリティ面では大正解です。攻撃されるリスクはかなり低いと言えます。



  Dockerのみならず、コンテナを使用するのなら、マルチテナント・システムを作成してはいけません。
  実は、コンテナ内で使用される特権プロセスと、コンテナの外で使われている特権プロセスは、同じものなのです。

  仮想マシンよりも動作が早く、パフォーマンスが良いように見えることから、コンテナをさも素晴らしいもののように勘違いする人がいます。ですが、セキュリティの面から見ると、仮想マシンより脆いところがあるのです。
 (そのことについては、この記事の後半に説明しましょう。)

 

  皆さんに、ぜひ留意していただきたいことがあります。
  それは、「コンテナ」自体が、あくまでサーバー上に置かれた単なるサービス、
 つまり「コンテナサービス」なのだということです。
  これはコンテナ全体の話なので、DockerにもApacheにも同じことが言えます。

 そして、コンテナには諸刃の剣のような面があります。

  • コンテナ自体は特権の認証を省略しているので、処理が速い。
  • root権なしでサービスを運用できる。
  • 普段root権を確認しているのは、「コンテナの外側」である。

     

 

  とくに我々が普段から周知に努めているのが、3つ目の項目です。
  特権プロセスを判断するコモンクライテリアは、コンテナの外にあるのです。 

 

  そこら辺から適当に拾ってきたDockerイメージを、システムで使ってはいけません。
  いくつもの事例を見ていると、Dockerコンテナのブームは、1999年ごろに起こったLinuxブームと同じような道をたどっているのがわかります。
 当時、Linuxの良い噂だけを信じて『Linuxって、超いいサービスがある』というイメージを作り上げたシステム管理者が続発しました。

  •  ネットでrpmfind.netなどのようなサイトを適当に探し当てて、そこからパッケージをダウンロード
  • プログラムをシステムにダウンロード
  • インストールには「RPM」や「make install」を使う
  • あとはルート権で実行するだけ
     

 

  その人たちも、便利なイメージだけを先行させて、セキュリティ的にはかなり危ないことをしていたのですね。


 

 最低限注意すべきこと

  2週間ほど前、システム管理者たちの耳にあるニュースが飛び込んできました。それは、Zlibに脆弱性が発見されたことでした。
 もちろん、これを使ったソフトウェアにも、重大な弱点があるということになるので、「被害が広がらないでほしい」という願いは虚しく砕かれるほかありません。

  Red Hat系と他信頼できる数社は、事態が収束するまでディストリビューションを休止する対応を取りました。
 Red Hat Enterprise Linuxは、脆弱性をある程度回避しながら、ソフトウェアをインストールする基準を発表しています:

  • ソフトウェアをダウンロードするのは、本当に信頼できるレポジトリからにすること
  • 脆弱性を修正するセキュリティ・アップロードを行っていること
  • パッケージを維持・管理するエンジニア集団がいて、なおかつセキュリティ強化に取り組んでいること
  • OSの安全性を確認するために、コモンクライテリア証明書があること


     

 

 コンテナ1つとっても、脆弱性は深刻な問題です。

 運用するコンテナは、信頼できる出所のものにしましょう。
 どうしてもソースコードを手に入れて使わなくてはならない時は、なるべく以前インストールしてみて安全だった、よく知った開発元から手に入れてください。

  そのコードの開発元が信頼できるか、コードを配信している団体は何者かを、きちんと確かめた上でインストールする必要があります。

  いざ何かあってだめになるのは、コンテナだけではありません。ホスト側のシステムもです。 

 

  さらに注意すべきこと

  コンテナを使用する上で最大の問題が、すべてのLinuxに名前空間があるわけではないことです。Dockerでは現在、5つの名前空間を使用しています。(Process, Network, Mount, Hostname, Shared Memory)

  名前空間をわけることで、セキュリティの優先順位をつけ、ある程度のセキュリティ性を得ることができます。

  同様の対策を本格的に取っているものに、KVMが挙げられます。KVM環境は、仮想マシンの処理を、直接カーネルディレクトリを通じで行わないようにしています。KVMはカーネルファイルシステム(/sys, /sys/fs, /proc/*など)に直接アクセスできないようになっているのです。

  KVMでホストのカーネルが使えないのなら、どのように仮想マシンを動作させているのでしょう。
 そこで登場するのがデバイスノードです。これには仮想マシンを特権昇格させずに、動作に必要なカーネルを与える役割があります。
 もし、仮想化OSに欠陥が見つかった場合、SELinux Controls (sVirt)を介して停止させることができます。
  これにより、仮想マシンは、ホスト側のカーネルを守るという意味では、とても堅牢なつくりになっているのです。

 

  コンテナのセキュリティをなるべくこれに近づけるには、まず、ホストマシンのカーネルをよく知る必要があります。

 たいていのカーネル・サブシステムには名前空間はついていません:

 

  • SELinux
  • Cgroups
  • file systems under /sys
  • /proc/sys, /proc/sysrq-trigger, /proc/irq, /proc/bus

 

  デバイスの場合、次の表示があると名前空間がついていません:

  • /dev/mem
  • /dev/sd* file system devices
  • Kernel Modules

 

  このうちのどれかを確認できれば、自分が使っているシステムの形態を把握できるかもしれません。 

 (第2部につづく

 

PDF
更新日:2017-06-28 20:53:19 Hnoss 0  del.icio.usに追加   はてなブックマークに追加   twitterに投稿   facebookでshare
[ 原文 ] https://opensource.com/business/14/7/docker-security-selinux Creative Commons License この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
クリエイティブ・コモンズ・ライセンス
翻訳者ページをみる

この記事の翻訳者

Hnoss さんの翻訳記事

オープンソース・ホームオートメーションシステム5選 | from Opensource.com

  「 ユビキタス・ネットワーク(Internet of Things) 」と聞いても、みなさんピンとこないでしょう。ですが、それを実生活に取り入れることは、だんだんと簡単になってきています。た…2017-07-19 15:08:40

実際このように使う。Linux検索コマンド35選 | from Tecmint.com

 検索コマンドはLinuxシステムを管理する上でかなり重要な、使用頻度も高いコマンドだ。検索コマンドは文字通りファイルを「検索」するだけでなく、ファイルやディレクトリのリストを探…2017-07-16 18:02:39

オープンソースな「マーケティング・スタック」を7つ紹介 | from Opensouce.com

 マーケティングで便利なオープンソースソフトウェアを紹介します。人によっては、プロプライエタリ・ソフトである必要がなくなるかもしれません。 2017年6月28日 |  Thomas Carn…2017-07-14 12:56:07

ラズパイを電子書籍サーバーにする方法があります! | from Opensource.com

 Calibreという電子書籍管理ソフトウェアがありますが、セットアップの方法次第では、Raspberry Pi3を電子書籍サーバーに変身させられます。  ちょっと意外な気がするかもしれません…2017-07-14 12:55:02