‫1つ目は､ 基本的に読書をすることです｡
‫このトップページのように､ 自分自身に基本的な教育を与えることを中心に､
‫... Dockerはどのように機能するのですか？
‫Dockerの基本的なセキュリティとは？
‫Dockerは､ その､ コンテナをどうやって保護しているのですか？
‫そういうことです｡
‫基本的に制作トークはこちらでご覧いただけます｡
‫今は見ないことにしています｡
‫Dockerのセキュリティガイドへのリンクはこちらです｡
‫さて､ このDockerセキュリティガイドで興味深いのは､ 本当にDockerセキュリティがどのように機能するのか､
‫ということなのです｡
‫あるいは､ Docker自体の仕組みはどうなっているのでしょうか｡
‫私のコースにはもっと良いビデオがあります｡
‫他にも､ Dockerの下地について丸々1時間かけて解説した参考ビデオのリンクを貼っています｡
‫気になるのは､ カーネルの名前空間とCgroupsです｡
‫名前空間については､ その仕組みの概要を説明しています｡
‫つまり､ Dockerを可能にするLinuxの主な機能は2つあるということです｡
‫カーネルの名前空間は､
‫カーネルがアプリケーション､ またはアプリケーションの集合を受け取り､
‫それらを名前空間化するための方法である｡
‫名前空間は､ 基本的に､ ネットワーク､
‫メモリ内の他のプログラム､ ディスク上のファイルなど､
‫あらゆるリソースへの視野やアクセスを制限し､
‫プログラムごとにその範囲を限定します｡
‫そのため､ 個々のプログラムごとになることもあり､ それらを今コンテナとして把握しています｡
‫なぜなら､
‫名前空間はDockerに特化したものではないからです｡ Dockerの歴史よりずっと長いんですよ｡
‫10年以上前から､
‫さまざまなUnixディストリビューションのコンセプトとして実際に存在していた｡
‫Solaris Jailsなどで耳にしたことがあるかもしれませんが､ このようなテクノロジーでは､
‫基本的に自分のサーバーにいるように思わせておいて､ 実際には他の多くの人や他の多くのアプリケーションと一緒にサーバーの中に入っているわけですね｡
‫Linuxやホスティングプラットフォームで散々やってきたことですからね｡
‫名前空間はその機能です｡ コンテナに自分のNICを持たせることができます｡
‫そのコンテナのためだけの仮想NICなんです｡
‫そのコンテナには､ 後続のファイルシステムの残りを見ることができない独自のファイルスペースが与えられ､ そのコンテナの外で実行されている他のプログラムを見ることができないようにします｡
‫つまり､ そのアクセスや見え方のことですね｡
‫それがネームスペースです｡
‫それだけでアウトオブボックスとして機能します｡
‫Dockerはこのようにして､ システム上の他のすべてを見ることなくコンテナを実行させるのです｡
‫もう一つの大きなポイントは､ コントロールグループ､
‫略してCグループと呼んでいます｡ コントロールグループは､
‫リソースの使用量を制限することが主な目的です｡
‫コンテナには､ 1GBのRAMと1つのCPUしか使えないと伝えることができます｡
‫また､ いくつかのメトリクスを使えば､
‫その辺りのことを測定することも可能です｡
‫コンテナは､
‫デフォルトで､ すべてのファイル領域､ すべてのCPU､ すべてのメモリを使用することができますので､
‫すべてのリソースにアクセスできることを忘れないでください｡
‫これは標準的なコンテナですが､ docker runやSwarm､ Kubernetesでオプションを設定することができます｡
‫そのどれもが､
‫リソースをコントロールする能力を持っているのです｡
‫ただ､ デフォルトではありませんよね｡ デフォルトでは､ どのコンテナもすべてを取得します｡
‫制作に入るとき､ これは絶対にやるべきことリストに入っています｡
‫コントロールグループは､
‫特定のアプリケーションが本来あるべきでないものをすべて占有してしまい､
‫他のものが実行できなくなることを除けば､ 必ずしもセキュリティ上の機能とは言えませんね｡
‫それは... 直接的なセキュリティとして見ているわけではありません｡
‫アプリがサーバーのリソースを使い果たすことで､
‫誰かが技術的にサービス拒否をする可能性があるため､
‫セキュリティと半々で考えています｡
‫つまり､ そういうことです｡
‫それが基本です｡
‫基本を理解した上で､ 様々な種類のセキュリティ・ツールについて､
‫このブログでいくつか紹介されています｡
‫ツールは山ほどありますからね｡
‫今日はそのすべてに言及するつもりはない｡
‫もちろん､ いろいろなものがありますが､ その多くは複雑で､
‫プロジェクトが必要です｡
‫導入するか､ 購入するか､ そのための専用サーバーを用意する必要がありますよね｡
‫監査や､ PCIクレジットカードのセキュリティ､
‫政府規制のセキュリティなど､ 特定の資格に合格することを確認するための大きな製品です｡