Japan
サイト内の現在位置
安全なコンテナイメージレジストリIron Bankの紹介
NECセキュリティブログ2023年6月23日
NECサイバーセキュリティ戦略統括部 セキュリティ技術センターの森本です。
本ブログでは、安全性の高いコンテナイメージを公開するIron Bank [1]について紹介したいと思います。
コンテナ技術では、実行コンテナの雛形となるコンテナイメージに必要なソフトウェアが事前にインストールされています。そのため、既存のコンテナイメージ(ベースイメージ)を利用することで開発コストの削減が期待できます。一方、第三者が作成したイメージを利用する場合、マルウェアや脆弱性のあるコンポーネントを成果物に取り込んでしまうリスクも考えられます。そのため、安全なベースイメージを選択することはコンテナのセキュリティを担保する上で重要なステップといえます。具体的には、ベースイメージの導入前に脆弱性、構成不備、マルウェアの混入などのリスクが対処されていることが理想といえます。しかし、Docker Hub [2] のように著名なレジストリで公開されるイメージであっても、これらの要件が十分に満たされていないケースがあります。今回はベースイメージの安全性に関する考え方や、より安全性の高いコンテナイメージを提供する米国防総省のIron Bankについて紹介します。なお、コンテナイメージのセキュリティについては以前の記事[3]でも取り上げていますので、こちらもご参考ください。
Docker Hubで提供されるコンテナイメージの安全性
表1: Docker Hubで公開されるコンテナイメージ
イメージの区分 | 特徴 |
Community | 不特定の個人によって公開可能なイメージ。 |
Official | 公式コミュニティでレビューされたイメージ。 |
Verified | 提供元が検証されたイメージ。 |
そのため、Officialイメージであったとしても利用者側においてメンテナンス状況の確認や脆弱性診断の十分な実施が求められる状況といえます。
Iron Bank
Docker Hubよりも厳格なセキュリティ要件が考慮されたコンテナイメージのレジストリとして、米国防総省がホストするIron Bankを紹介します。Iron Bankは、米国防総省や商用ベンダを主な利用者としていますが、アカウント作成した方であればライセンスの範囲で利用することが可能です。
Iron Bankは、利用可能なコンテナの一覧、セキュリティ要件 [9]の準拠状況、セキュリティスキャン結果のレポートなど、利用者が信頼性の高いコンテナを入手してそれらを検証するための機能をWeb UI(図2)として提供しています。
Iron Bankで提供されるコンテナイメージは、以下のとおり、マルウェア検知や脆弱性診断といった対応に加えて、コンテナイメージ、Dockerfile、コンテナ内OS等のコンプライアンス対応(適切な構成や設定等)など、コンテナイメージで考慮されうるセキュリティ要件を幅広くカバーしています。
- マルウェア検知
- 脆弱性対応
- コンテナイメージの推奨構成
- Dockerfileの推奨構成
- 依存パッケージの構成情報
- OSイメージの推奨構成
- 不要なパッケージの削除
- シークレット管理
- ライセンス情報
- 署名の付与
表2. 検出された脆弱性のカテゴリ
ラベル | 概要 |
False Positive | 診断ツールがパッケージやバージョンなどを誤って識別 |
Disputed | NVDにおいて、他のCVE番号への統合や係争中等の理由により将来削除される、または削除される可能性がある |
Won't Fix | アップストリーム開発元で修正の意思がない |
Distro - Won't Fix | ディストリビューション開発元で修正の意思がない |
No Fix Available | 利⽤可能なパッチが存在しない |
Distro - Pending Resolution |
最新版パッケージにおいて解決されていない |
Mitigated | 緩和策が存在している |
Not Vulnerable | アプリケーション内では悪⽤できない |
Unreleased | 修正がリリースされていない |
Pending Resolution | 修正が対応中である |
True Positive | 検出直後のデフォルト状態 |
このような情報が提供されることで、本来利用者側で実施すべき脆弱性の検出や対処のコストが削減できます。
次に、コンテナイメージのコンプライアンス対応については、コンテナ技術固有の設定や従来環境(ベアメタル環境や仮想環境)も適用されるOSやミドルウェア等の設定も含まれます。特に、OSやミドルウェアのセキュリティ設定の参考となるものは、CIS(Center For Internet Security)が発行しているCIS Benchmarks [12]や 米国国防総省(DoD)の国防情報システム(DISA)が発行しているSecurity Technical Implementation Guides(STIGs)[13]があります。ただし、これらのガイド類が対象としているのはあくまでベアメタル環境や仮想環境にインストールされた際の推奨構成であり、GUI構成や特定機能を含まないコンテナ内コンポーネントには適用されないケースが存在します。つまり、関連する診断ツールで検査した場合は多数の誤検知が想定されます。例えば、STIGs要件において通常のRHEL7 OSに適⽤される構成設定は 363項目ありますが、コンテナ内において93項目は対象外とされています。コンテナイメージの利用者側においてこのような判断を一から実施するのはコストがかかるため、脆弱性対応と同様に、診断結果や見解が文書化されている点は有益といえます。なお、CIS BenchmarksやSTIGsが提供されているOSがコンテナ内で利用できない場合は、アプリケーションの実行に必要な最小限のファイルのみを含む軽量なコンテナイメージから構築するアプローチも取られています。
Iron Bankで公開されるコンテナイメージでは、ソフトウェアサプライチェーンの観点も考慮されています。例として、コンテナイメージの構築に必要となる依存パッケージは事前にインターネット経由でダウンロードされ、安全であることが検証されたうえで、オフラインのビルド環境で取り込まれます。このアプローチによって、ビルド工程で予期せずに安全性が担保されてないモジュールが成果物に組み込まれることを防止しています。また、コンテナイメージの構成情報はSBOMとしても提供され、チェックサムや署名も付与されているため、改ざんや提供元の検証も可能となっています。
上述のとおり、Iron Bankでは、十分なセキュリティ要件を満たしたコンテナイメージが利用者側で検証できる形で提供されています。そのため、第3者が提供するベースイメージを採用したとしても、利用者はセキュリティ対応コストを抑えることができます。
まとめ
今回は著名なパブリックレジストリであっても手放しで信頼できないことや、より信頼性の高いコンテナイメージを提供するIron Bankを紹介しました。Iron Bankで提供されるコンテナイメージを利用することで、利用者側でのセキュリティ対応コストを抑えることが期待できます。また、Iron Bankのコンテナイメージを採用しない場合であっても、類似の機能を持つコンテナイメージのセキュリティ対応(脆弱性対応やコンプライアンス対応)の参考とする扱いも可能です。
コンテナのベースイメージは、開発やアプリケーションの動作に必要な機能が提供されていることも重要ですので、必ずしもセキュリティ要件のみで選択すべきものではありませんが、今回ご紹介した内容がコンテナ開発時の参考になれば幸いです。
参考資料
- [1]『IRON BANK』DoD Platform One
https://p1.dso.mil/services/iron-bank - [2]『Docker Hub』Docker Inc.
https://hub.docker.com/ - [3]『コンテナイメージのセキュリティ』NECセキュリティブログ
https://jpn.nec.com/cybersecurity/blog/220128/index.html - [4]『Docker Official Images』Docker Inc.
https://docs.docker.com/docker-hub/official_images/ - [5]『Docker Verified Publisher Program』Docker Inc.
https://docs.docker.com/docker-hub/publish/ - [6]『Docker-Sponsored Open Source Program』Docker Inc.
https://docs.docker.com/docker-hub/dsos-program/ - [7]『Analysis on Docker Hub malicious images: Attacks through public container images』sysdig
https://sysdig.com/blog/analysis-of-supply-chain-attacks-through-public-docker-images/ - [8]『A Security Review of Docker Official Images: Which Do You Trust?』Aqua Security
https://blog.aquasec.com/docker-official-images - [9]『Iron_Bank_-_Acceptance_Baseline_Criteria』DoD Platform One
https://repo1.dso.mil/dsop/dccscr/-/blob/master/ABC/ORA%20Documentation/Iron_Bank_-_Acceptance_Baseline_Criteria.pdf - [10]『NIST Special Publication 800-190』NIST
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf - [11]『Container Hardening Process Guide』DISA
https://dl.dod.cyber.mil/wp-content/uploads/devsecops/pdf/Final_DevSecOps_Enterprise_Container_Hardening_Guide_1.2.pdf - [12]『CIS Benchmarks』Center of Internet Security
https://www.cisecurity.org/cis-benchmarks/ - [13]『Security Technical Implementation Guides (STIGs)』DISA
https://public.cyber.mil/stigs/
執筆者プロフィール
森本 康太(もりもと こうた)
セキュリティ技術センター 実装技術アーキテクチャグループ
NECグループのセキュア開発・運用を推進。
執筆者の他の記事を読む
アクセスランキング