コンテナセキュリティ【container security】
コンテナセキュリティとは?

コンテナはアプリケーションと、その動作に必要なライブラリや設定をひとまとめにして、オペレーティングシステム(OS)上で独立した環境として動かす仕組みである。仮想マシンがOSごと分離されているのに対し、コンテナはホストOSのカーネルを共有する。この構造のため、一つのコンテナに脆弱性があると、同じホスト上の他のコンテナやホストOS全体へ影響が波及する可能性がある。
セキュリティ管理はコンテナの「イメージ」から始まる。イメージとはコンテナで動作するソフトウェアを一つにパッケージしたテンプレート(雛形)であり、古いライブラリや既知の脆弱性が含まれたまま使われると、起動した時点でリスクが顕在化する。信頼できる提供元のイメージを選び、不審なプログラムが混入していないか定期的にスキャンすることが基本的な対策となる。
コンテナの実行環境においては、最小限の権限で動作させることが求められる。必要以上の権限を与えると、侵害された際の被害が拡大しやすくなる。コンテナ間の通信も必要なものだけに絞り、不要なポートは閉じておく。実行中の挙動を常時監視し、異常なプロセスや想定外の通信を検知したら即座に対処できる体制も必要である。
複数のコンテナをまとめて制御する「Kubernetes」のようなコンテナオーケストレーションツールも管理対象となる。アクセス制御の設定が不十分であれば、意図しない利用者がコンテナを操作できてしまう恐れがある。認証や認可の設定、秘密情報の適切な保管、操作ログの収集と監査を組み合わせることで、不正操作や情報漏洩を防ぐ。
コンテナは使い捨て的に扱われることが多く、変更履歴の追跡が難しくなる場面もある。開発段階での設定ミスがそのまま本番環境へ持ち込まれやすい点も課題である。ビルドや配布の工程にセキュリティ検査を組み込み、早期に問題を発見する手法が広まっている。コンテナのセキュリティはイメージの作成から実行、破棄に至るまで、ライフサイクル全体を通じて継続的に管理されるものである。