KAKEHASHI Tech Blog

カケハシのEngineer Teamによるブログです。

EOL 管理入門(AWS、OSS ライブラリ、コンテナイメージ)

「このライブラリのサポートいつまでだっけ?」「Lambda ランタイムの EOL っていつだったかな?」

システム運用をしていると、こんな疑問がよく浮かびますよね。サービス・ライブラリの EOL を皆さんはどうやって管理しているでしょうか。

なぜEOLチェックが重要なのか

EOL(End of Life)を放置すると、セキュリティ・運用・ビジネスのリスクが高まります。

  • セキュリティ: サポート終了によりセキュリティパッチが止まり、新規脆弱性が修正されなくなる可能性があります。
  • 運用: サポート切れでトラブル対応が困難になり、互換性やテストコストが増えます。
  • ビジネス: インシデントやサービス停止は機会損失や信頼低下につながります。

EOL と脆弱性の違い

EOL(End of Life)と脆弱性は混同しやすいので簡潔に違いを示します。

  • EOL(End of Life): ソフトウェアやサービスのサポート期間が終了すること。セキュリティパッチや公式サポートが受けられなくなる点が問題です。例: OS の LTS 終了、ランタイムのサポート終了。
  • 脆弱性(Vulnerability): 実際に発見されたセキュリティ上の欠陥で、修正やパッチが必要なもの。例: ライブラリの CVE、コンテナ内パッケージの脆弱性。

運用上の扱い方:

  • EOL: 計画的な移行(バージョンアップや代替検討)をスケジュールに落とし込み、長期的に管理する
  • 脆弱性: 緊急度(severity / EPSS)で優先度をつけて即時対応することが多い(Dependabot / Inspector の検出に基づく)

実務では EOL と脆弱性をセットで確認することが多く、両方を併せて運用フローに組み込むと効果的です。下記で紹介する一部のツールでも、両方のチェックを行うことができます。

EOL確認をしたい

プロダクトで利用している様々な技術スタックの EOL を確認したいのですが、実際のところ大変です。ここでは主要な要素について、どのようにEOLを確認できるかを一度整理します。

コンテナイメージ

コンテナ化されたアプリケーションでは、ベースイメージのOSやその中に含まれるパッケージのEOL状況を把握する必要があります。特にECRで管理しているイメージは、定期的にスキャンして古いコンポーネントを特定することが重要です。

確認手順

方法1: Amazon Inspector

Amazon Inspectorは脆弱性管理を行うツールですが、ECR に保存されたコンテナイメージの EOL を検知可能です。

  1. Inspector 委任管理者アカウントから Inspector へアクセス
  2. 脆弱性タブを選択
  3. フィルターを追加
    • title : Platform End Of Life
  4. 一覧を確認

方法2: Security Hub

Security Hub と連携して簡易的なダッシュボードを作ることも可能です。 情報ソースは Amazon Indpector であるため、確認できる情報はいっそですが Security Hub のほうがダッシュボードとして確認しやすいのではないでしょうか。

  1. Security Hub にアクセス
  2. フィルターで以下を追加
    • 製品名 : Inspector
    • title : Platform End Of Life

※アカウントIDは念の為削除

現在の運用課題

  • AWS アカウントが100近くあり横断での確認が大変

AWSサービスのEOL(ライフサイクル)

クラウドサービスを利用していると、AWSが提供するサービスのバージョンアップや廃止予定を把握することが重要になります。Lambda ランタイムや Aurora のバージョンなど、事前の情報収集と計画的な移行が必要です。

確認手順

方法1: AWS Health Dashboard

AWS Health Dashboardでは バージョンアップ予定の AWS サービス(Lambda, Auroraなど)、終了予定の AWS サービスが確認可能です。

  1. management アカウントの Health Dashboard へアクセス
  2. 「組織の状態」を選択
  3. 「スケジュールされた変更」をクリック
  4. LIFECYCLE 系のイベントをチェック

方法2: メール通知

正直にいえば上記の AWS Health Dashboard コンソールへアクセスしてのチェックは大変なため、AWS からの EOL のメール通知を元に対応しています。

現在の運用課題

  • メールでの通知を目視で確認するため、見落としリスクあり
  • Health の情報はアカウント単位で表示されるため、Organizations横断での横断確認が手作業になっている
  • 集計やレポートが手作業(Config クエリ→スプレッドシート等)で運用コストが高い

OSS ライブラリ(GitHub Dependabot Dashboard)

カケハシでは Github Dependabot + Renovate で OSS ライブラリの脆弱性管理を行っています。

本格的に OSSライブラリの EOL を管理したい場合は SBOM を作成して endoflife.date 等で突き合わせる必要があります。今回は Github Dependabot Dashboard で脆弱性パッチ適用状況を確認し、簡易的な EOL 管理の代替とします(今後の課題)。

確認手順

  1. GitHub Dependabot Dashboard にアクセス
  2. プロダクトごとにリポジトリをフィルタリング
    • 私は Github Teams で開発チームごとにフィルタリング
    • さらに不要なリポジトリを -repo: でフィルタリング
  3. 優先度(has:patchseverityepss_percentage)ごとの件数を確認する
    • 特に epss_percentage:>=0.01 のアラートを確認
    • ※EPSS とは、その脆弱性が実際に攻撃で悪用される可能性を示すスコア

現在の運用課題

  • 量が多くアラートが減らない
    • AIを活用して改善の動きあり
  • 本格的な OSS ライブラリの EOL 管理
    • 特に言語、フレームワークなどの

おわりに

EOL管理は一度設定すれば終わりではなく、継続的に監視していく必要があります。今回紹介した手法を組み合わせることで、以下のような包括的なEOL管理が可能になります:

  • コンテナイメージ: Amazon Inspector / Security Hub での自動検知
  • AWSサービス: Health Dashboard での計画的な情報収集
  • OSSライブラリ: GitHub Dependabot での継続的な脆弱性管理

しかし現在は手動・目視での確認が中心で、運用負荷が高い状況です。今後はこれらの課題を改善していき、より効率的で漏れのないEOL管理を実現していきたいと考えています。

皆さんの組織ではどのような EOL 管理をしていますか?より良い手法があれば、ぜひ教えてください!

文責:西山