脆弱性管理を大幅に削減する、安全で強化されたコンテナイメージ「Docker Hardened Images」

はじめに
Docker でソリューションエンジニアをしています、根本 征です。
本ブログでは Docker で新たにリリースされた、本番環境向けに構築されたデフォルトで安全なコンテナイメージ「Docker Hardened Images」を紹介します。
目次
コンテナイメージに含まれるセキュリティリスク
コンテナ技術が現在急速に広まっているのと同時に、それを狙った攻撃も深刻な課題となっています。
特にコンテナイメージには多くのオープンソース(OSS)のコンポーネントが含まれるため、それらに脆弱性が含まれる場合、自分たちが作ったコンテナイメージにも影響を受ける可能性があります。
現在様々なプログラミング言語、ライブラリ、フレームワークを開発者や企業が利用するようになった影響によって、脆弱性(CVEs)の数は近年急激に増加しており、今後も増加傾向が続くと予想されます。
近年のオープンソースソフトウェアに含まれる脆弱性(CVEs)の推移
また、この脆弱性を狙った攻撃(ソフトウェアサプライチェーン攻撃)も急激に増えています。
脆弱性の数が増えているのと同時に、一度攻撃手法が確立してしまえば、対応を行っていないアプリケーション・企業に効率的に攻撃できるのが背景にあります。
そのため、コンテナアプリケーション開発においてはそのイメージに含まれる脆弱性を常に監視・少ない状態に維持する必要があります。
イメージスキャンだけでは解決しづらいベースイメージの問題
このようなコンテナイメージにおける脆弱性・ソフトウェアサプライチェーン攻撃に対する対応として、イメージをスキャンして、脆弱性(CVEs)を検出・修正するのが一般的です。
オープンソースで公開されているツールだと Trivy や Grype などがあり、CLI を使ったスキャンが可能です。
Docker でも Docker Scout というツールを提供しており、ローカル環境(Docker Desktop・CLI)・CI/CD・コンテナレジストリでイメージをリアルタイム分析し、開発者が修正できます。
Docker Scout を使ったコンテナイメージに含まれる脆弱性(CVEs)の検出
しかし、ベースイメージに含まれる脆弱性はこれらイメージスキャンのみで取り除くのが困難です。
Docker Hub などで提供されている標準のベースイメージは、10年以上互換性を保ちながらメンテナンスされているため、その長期サポートによって多くの古いコンポーネントが含まれ脆弱性を内包しがちです。
また、これらベースイメージに対する脆弱性の修正は主にコミュニティによる自主的なものになっており、SLAなどは提供されておりません。
これらに対して、より安全で強化されたコンテナイメージをエンタープライズレベルのSLA・サポートで提供しようという思想で作られたのが「Docker Hardened Images」です。
Docker Hardened Images の紹介
Docker Hardened Images(以降 DHI) は標準のベースイメージとは異なり、本番環境向けのセキュリティ強化のためにゼロから構築されています。
主な特徴は3つあります。
Docker Hardened Images の特徴
イメージを最小構成にし、CVEs がほとんどない状態で提供
DHI は Distroless の思想に基づいて、アプリケーションの実行に必要な基本的なランタイム依存関係のみを含めており、シェル・パッケージマネージャーなどの不要なコンポーネントを極力取り除いています。
これによって攻撃対象領域を95%削減、既知の脆弱性(CVEs)がほとんどない状態でイメージを提供しています。
Critical / High の CVEs は SLA として 7日以内に修正
DHI は最小のコンポーネントで構成されていますが、それらにも将来的に脆弱性が発見される可能性はあります。
DHI ではイメージに含まれる全ての依存関係を Docker 社が常時監視しており、Critical / High の CVEs に対して 7日以内に修正することを SLA としてサポートしています。
これによって、脆弱性の少ないコンテナイメージの維持が簡単に実現できます。
柔軟な互換性・カスタマイズ性とシームレスな移行をサポート
DHI は Dockerfile の FROM 行を変更するだけで既存のコンテナイメージから移行できるように設計されています。
- Debian、Alpine などの広く使われている Linux ディストリビューションをサポート
- 追加のコンポーネント・証明書を GUI 上で簡単に追加・カスタマイズ
- Microsoft、Wiz、GitLab などの DevSecOps スタックとシームレスに連携
- Docker Debug を使って、シェル・パッケージマネージャーなどがない環境に対しても簡単にデバッグ
DHI の GUI からコンポーネントを追加し、イメージをカスタマイズ
その他、DHIには SBOM、provenance、SLSA が標準搭載されており、特にセキュリティ・コンプライアンス要件の高い環境において、透明性とサプライチェーンの可視化を向上させます。
DHI では現在多くのコンテナイメージを提供しており、今後さらに拡充予定です。
- 言語・フレームワーク: Node.js、Go、Python、Rust、Ruby、.NET、NET Core、Gradle、Maven
- データベース: MySQL、PostgreSQL、Redis、Valkey、ClickHouse、Apache Spark
- モニタリング・オブザーバビリティ: Prometheus、Grafana、Grafana Loki、Fluentd、ElasticSearch、OpenSearch、Kibana
- ネットワーク・ミドルウェア: Nginx、Traefik、Envoy、Tomcat、RabbitMQ、Keycloak、Zookeeper
実際に Docker 社内の主要なプロジェクトで DHI は検証されており、例えば Node.js の標準のベースイメージを DHI に移行することによって既知の脆弱性(CVEs)はゼロになり、依存パッケージも約98%削減されました。
DHI に移行することによる脆弱性(CVEs)と依存パッケージの減少
おわりに
今回は Docker で新たにリリースされた、本番環境向けに構築されたデフォルトで安全なコンテナイメージ「Docker Hardened Images」を紹介しました。
DHI は既存のコンテナイメージに含まれる脆弱性を大幅に削減し、エンタープライズレベルの SLA によって、安全なイメージを維持できます。
また、新たにコンテナアプリケーションを作る際にも、DHI を活用することでデフォルトで安全なコンテナイメージを初めから利用でき、今後の脆弱性管理・修正コストを大幅に削減できます。
Docker では DHI の無償トライアルも提供しておりますので、ご興味のある方はぜひお問い合わせください。
関連リンク
この記事の著者:根本 征 (Tadashi Nemoto)
Strategic Solutions Engineer
複数の日系企業でテスト自動化エンジニア・DevOpsエンジニアとして活動した後、プリセールスエンジニアとして DevOps、CI/CD、自動テストを中心にお客様の技術支援や技術発信を行ってきました。2024年日本拠点1人目のプリセールスエンジニアとして Docker に入社。

DevOps Hubのアカウントをフォローして
更新情報を受け取る
-
Like on Facebook
-
Like on Feedly