@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

「コンテナセキュリティ」を読んだ

当たり前のように使用できるのであまり考えずに使用することが多かったが、立ち位置的にそろそろセキュリティのこととか考えなきゃいけないのかなと思い立つことがあったので読んでみた。

目次は以下。

Chapter 1 コンテナセキュリティの脅威
Chapter 2 Linuxシステムコールパーミッション、capability
Chapter 3 コントロールグループ
Chapter 4 コンテナの分離
Chapter 5 仮想マシン
Chapter 6 コンテナイメージ
Chapter 7 イメージに含まれるソフトウェアの脆弱性
Chapter 8 コンテナ分離の強化
Chapter 9 コンテナエスケープ
Chapter 10 コンテナネットワークセキュリティ
Chapter 11 TLS によるコンポーネントの安全な接続
Chapter 12 コンテナへのシークレットの受け渡し
Chapter 13 コンテナのランタイム保護
Chapter 14 コンテナとOWASP トップ10
付録 A セキュリティチェックリスト

コンテナを構成するLinux の要素技術から解説されており、コンテナの仕組みの説明を理解し、セキュリティ強化を行う方法が説明されている。Kuberenetes のセキュリティについても記載されている。

Chapter 1でコンテナベースのデプロイメントに影響を与える可能性のある攻撃方法について大まかに説明されている。またセキュリティの原則として以下が紹介されているし、コンテナへの定期用方法についても記載されていた。

  • 最小権限
  • 多層防御
  • 攻撃対象領域の縮小
  • 影響範囲の制限
  • 職務分掌

Chapter 2ではLinux の基本的な機能についての説明がされている。このあたりについてはちょうど前日に「入門 モダンLinux」を読んだばかりだったので理解していることが多かった。システムコール、ファイルパーミッション、capability での権限管理方法について説明されている。これらを使用してセキュリティ制御がされているのだろうから理解をしておきたいところである。

hihihiroro.hatenablog.com

Chapter 3ではコンテナでも使用されているcgroup について説明されている。cgroup でコンテナがアクセスできるリソースの制御を行うことでリソースの分離がされている。Chapter 4ではリソースの制御を行うnamespace について説明されている。こちらで説明されているものは以下。これらを利用してプロセスが参照できる範囲を制限している。

  • Unix Timesharing System(UTS)
  • PID namespace
  • mount namespace
  • network namespace
  • user namespace
  • IPC namespace
  • cgroup namespace

また、root ディレクトリを変更することでコンテナから参照できるファイルやディレクトリの制御が行われている。実際にいくつか試すこともできたので面白かった。  

Chapter 6ではコンテナイメージに含まれるものについての説明がされている。そのうえでイメージのビルド、格納、取得時のセキュリティベストプラクティスについて説明されている。Chapter 7では脆弱性への説明と脆弱性への対策について説明されている。

Chapter 9ではコンテナの分離を無効化するための方法が説明されている。コンテナをroot で実行することや、--provoleged オプションの利用をすること、コンテナとホスト間でのnamespace の共有などが紹介されている。攻撃手段がわかれば防ぐ方法を考える、実行しないようになるとのことで紹介されていた。

Chapter 10と11ではネットワークについての説明がされていた。Chapter 10ではネットワークの説明からコンテナファイアウォールとサービスメッシュを組み合わせることで深層防御の実現を説明している。またChapter 11では、セキュアな通信について鍵や証明書の仕組みについて記載されている。ここはコンテナに特化してないが、セキュリティに関する部分が自分は弱いので理解するために読んだがわかりやすかった。

Chapter 12ではシークレット情報を扱うための方法が紹介されている。以下に他からアクセスなくうまく扱うかを説明している。このあたりもなんとなくで実装している部分が多かったのでちゃんと考えての実装が必要だなと思った。
最後のChapter 13ではセキュリティを守るためのプロファイル、セキュリティツールについて説明がされていた。

本書は、コンテナセキュリティの概念をシンプルに説明していた。初心者でも理解できるように、コンテナ技術の基本から、コンテナのセキュリティ上の課題、ベストプラクティス、そして実践的な対策までを幅広くカバーしていたので面白かったし役立ちそうだなと思った。

まとめ

  • 難しい内容は少なめだったので今使っている人だったらサクサクと読める内容だった
  • コンテナに絞られてない話も多くあるのでセキュリティを考えてみるのに良かった
  • やはり最小権限や範囲の制限をするっていうのは基本だよなと思った