Spring Health Assessmentで始めるアプリケーションの健康診断
はじめに
こんにちは、株式会社カサレアルの平塚と申します。このブログでは、Spring Health Assessmentを使ってSpring Bootアプリケーションに含まれる脆弱性を検出する方法について説明します。
突然ですが、みなさんはSpring Bootで構築したアプリケーションのバージョンを把握していますか? 現在リリースされているバージョンと同じでしょうか。それとも、最初に構築したきりでしょうか。
今回は、Spring Bootのバージョンアップに役立つ「Health Assessment」サービスについて紹介します。このサービスを使って、今のアプリケーションの状態を診断してみましょう。
Spring Bootとは
サービスを紹介する前に、基礎知識のおさらいです。
Spring Bootとは、Spring FrameworkというJavaベースのフレームワークをさらに使いやすくしたものです。アプリケーションを構築する時に必要な初期設定などがあらかじめ用意されているので、快適に開発を始められます。
Spring BootとそのベースとなるSpring Frameworkは、どちらもSpringコミュニティによって開発されています。それぞれ決まった間隔でリリースが行われており、サポート期間も一定です。
▼2024年10月現在の開発サイクル
|
Spring Framework |
Spring Boot |
リリースタイミング |
年1回(11月) |
年2回(5月・11月) |
OSSサポート(無償) |
1年半 |
1年 |
エンタープライズ |
3年 |
2年 |
フレームワークで用いられているJava言語と異なり、Spring Bootは後方互換性を考慮しないアップデートが行われることがあります。ただライブラリのバージョンを上げただけではアプリケーションが動作しなくなるかもしれません。
Spring Health Assessmentとは
とはいえ、動作を検証する時間が取れないからといってアップデートせずにいると、今度は脆弱性が入り込んだままとなってしまいます。安全な運用のためにも、Spring Bootのバージョンは定期的に上げなければなりません。
ここで役立つのが「Health Assessment」です。このサービスは、既存のSpring Bootアプリケーションの依存関係を分析し、アップデートすべきライブラリを特定します。膨大なリリースノートを確認する前におおよその目星がつけられるため、アップデート作業の負荷を減らすことができます。
実践! Spring Health Assessment
では、実際にサービスを使ってみましょう。
まずはサービスのWEBページ(https://tanzu.vmware.com/jp/spring-health-assessment)にアクセスします。「診断する」ボタンを押して次へ進みましょう。
依存関係をテキストファイルに出力します。表示されているコマンドをコピーして、アプリケーションのルートフォルダで実行します。必要に応じて実行権限を付与してください。
出力結果をアップロードし、必要な項目を入力します。なお、入力された個人情報はメールマガジンの送付などに利用されます。
「レポートを生成」ボタンを押すと、1分程度で結果が出力されます。
レポートを読み解く
試しに、弊社カサレアルが提供する研修コースの教材プロジェクトを分析してみました。その結果を読み解いていきます。
レポートは大まかに2つのパートで分けられます。OSS Support Status(OSSサポート状況)とLibraries(ライブラリ)です。
OSS Support Statusは、依存関係にあるライブラリのサポート期間を表しています。Opensource(無償)、Commercial(有償)、Unsupported(期限切れ)の3種類があり、またサポート期間が切り替わるタイミングもグラフで表示されます。Unsupportedが多い場合は早めにアップデートを検証しましょう。
Librariesでは、具体的な脆弱性やアップデート推奨状況が一覧できます。Vulnerability Status(脆弱性の危険度)がHIGHのものを優先して確認しましょう。CVEのリンクはNIST(米国国立標準技術研究所)のセキュリティ文書に繋がっています。
このプロジェクトは、OSS Support Statusはすべて無償期間ですが、脆弱性を含んだままのライブラリが11個あるようです。11月には新たなバージョンもリリースされるので、そのタイミングで改めて検証・アップデートしておきます。
ちなみに、同じプロジェクトの過去のバージョン(2022年11月頃)を分析した結果がこちらです。
定期的にアップデートしないと、このように脆弱性だらけの危険なアプリケーションが生まれてしまいます。アップデートも運用の一部ととらえ、Health Assessmentサービスを使って効率よく更新していきましょう。
おわりに
もちろん、Spring Bootのリリースには、脆弱性対応以外にも様々な変更が含まれます。Springプロジェクトの公式GitHubでは、アップデートに伴う変更点をまとめたページが公開されています。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide
弊社カサレアルのSpring Migrationコースでは、これらの変更点を分かりやすく整理し、一歩一歩着実にアップデートする方法をお伝えしています。脆弱性対応と合わせて最新の実装方法を学びたい方は、ぜひ受講を検討してください。お待ちしています。
オフライン(品川)実施 https://www.casareal.co.jp/ls/service/openseminar/java/j180
オンライン実施 https://www.casareal.co.jp/ls/service/openseminar/java/j180-online
関連リンク
DevOps Hubのアカウントをフォローして
更新情報を受け取る
-
Like on Facebook
-
Like on Feedly