🐩

Container Security 本の要約

2023/04/22に公開

はじめに

  • Container Security By Liz Rice という本は、コンテナとオーケストレーションを使ってクラウドネイティブな環境でアプリケーションを実行する多くの組織が、そのデプロイメントが安全かどうかを判断するために必要な基礎技術を解説した本です。

https://learning.oreilly.com/library/view/container-security/9781492056690/

  • Linuxで構築されたコンテナベースのシステムの構成要素について詳しく説明し、コンテナをデプロイするときに何が起こっているかを理解し、デプロイメントに影響を与える可能性のあるセキュリティリスクを評価する方法を学ぶことができます。
  • kubectlやdockerなどのコンテナアプリケーションを実行したり、psやgrepなどのLinuxコマンドラインツールを使用した実装例が多く含まれています。

それぞれの章を簡単に要約していきます。

第1章 コンテナセキュリティの脅威

  • コンテナデプロイメントに影響を与える攻撃について探ります。
  • コンテナの脅威モデルとセキュリティ境界について説明します。
  • コンテナのマルチテナンシーと仮想化について比較します。
  • コンテナに適用できるセキュリティ原則について紹介します。

第2章 Linuxシステムコール、パーミッション、およびケイパビリティ

  • Linuxシステムコールとファイルパーミッションについて解説します。
  • setuidとsetgidによる特権昇格について説明します。
  • Linuxケイパビリティとその制限について紹介します。

第3章 コントロールグループ

  • コントロールグループ(cgroup)の階層構造と作成方法について説明します。
  • cgroupでリソース制限を設定する方法について解説します。
  • プロセスをcgroupに割り当てる方法について紹介します。
  • Dockerがcgroupを使用する方法について説明します。
  • cgroup v2の特徴と利点について解説します。

第4章 コンテナの分離

  • Linuxネームスペースとその種類について紹介します。
  • ホスト名、プロセスID、ルートディレクトリ、マウントポイント、ネットワークインターフェース、ユーザーIDなどを分離する方法について解説します。
  • ネームスペース間で通信する方法について説明します。
  • Dockerでユーザーネームスペースを使用する際の制限事項について紹介します。
  • ホストから見たコンテナプロセスとコンテナホストについて説明します。

第5章 仮想マシン

  • マシンの起動プロセスと仮想マシンモニター(VMM)の役割について説明します。
  • ハイパーバイザー型とコンテナ型のVMMの違いについて解説します。
  • KVMとQEMUを使って仮想マシンを作成する方法について紹介します。
  • FirecrackerとgVisorを使って軽量な仮想マシンを作成する方法について解説します。

第6章 コンテナイメージ

  • コンテナイメージとレイヤーの概念について紹介します。
  • Dockerfileの書き方とビルド方法について解説します。
  • マルチステージビルドを使ってイメージサイズを小さくする方法について説明します。
  • BuildKitとKanikoを使って高速かつ安全にイメージをビルドする方法について紹介します。

第7章 イメージのソフトウェアの脆弱性

  • イメージに含まれるソフトウェアの脆弱性のリスクと対策について説明します。
  • イメージスキャナーを使ってイメージの脆弱性を検出する方法について解説します。
  • イメージの更新やパッチ適用を自動化する方法について紹介します。
  • ベースイメージやパッケージマネージャーの選択によってイメージの脆弱性を減らす方法について解説します。

第8章 コンテナ分離の強化

  • コンテナ分離を強化するための技術や手法について紹介します。
  • セキュリティコンテキストとポリシーを使ってコンテナのアクセス制御を行う方法について解説します。
  • SELinuxとAppArmorを使ってコンテナのハードニングを行う方法について紹介します。
  • seccompを使ってコンテナが実行できるシステムコールを制限する方法について解説します。

第9章 コンテナ分離の中断

  • コンテナ分離が崩れる原因となるミスコンフィグレーションや脆弱性について紹介します。
  • コンテナからホストや他のコンテナにアクセスする方法について解説します。
  • コンテナエスケープの例と対策について説明します。

第10章 コンテナネットワークセキュリティ

  • コンテナネットワークの仕組みと種類について紹介します。
  • iptablesとnftablesを使ってコンテナネットワークのパケットフィルタリングを行う方法について解説します。
  • ネットワークポリシーを使ってコンテナ間の通信を制限する方法について紹介します。
  • eBPFとCiliumを使ってコンテナネットワークのパフォーマンスとセキュリティを向上させる方法について解説します。

第11章 TLSを使用したコンポーネントの安全な接続

  • TLSとその仕組みについて紹介します。
  • 証明書と秘密鍵の生成と管理について解説します。
  • コンテナ間やコンテナと外部サービスの間でTLSを使って通信を暗号化する方法について紹介します。
  • mTLSとIstioを使ってコンテナ間の通信を相互認証する方法について解説します。

第12章 コンテナへのシークレットの受け渡し

  • シークレットとその種類について紹介します。
  • シークレットをコンテナに渡す方法とそのリスクについて解説します。
  • KubernetesのSecretオブジェクトを使ってシークレットを管理する方法について紹介します。
  • VaultやSealed Secretsなどのツールを使ってシークレットを暗号化する方法について解説します。

第13章 コンテナランタイム保護

  • コンテナランタイム保護とその目的について説明します。
  • FalcoやSysdigなどのツールを使ってコンテナの動作を監視する方法について紹介します。
  • OPAやGatekeeperなどのツールを使ってコンテナのポリシー適合性を検証する方法について解説します。
  • AquaやTwistlockなどのツールを使ってコンテナのセキュリティ全体を管理する方法について紹介します。

第14章 コンテナとOWASPトップ10

  • OWASPトップ10とその内容について紹介します。
  • コンテナアプリケーションにおけるOWASPトップ10の脆弱性と対策について解説します。
  • コンテナアプリケーションのセキュリティテストの方法とツールについて紹介します。

まとめ

以上が、Container Security の本の各章の概要です。この本は、O’Reilly Mediaから出版されており、Amazonやebooks.comなどで購入できます。
また、コンテナセキュリティに関するブログ記事を著者のLiz Riceさんが書かれれており、こちらも参考になります。

https://www.lizrice.com/

https://github.com/lizrice

GitHubで編集を提案

Discussion