アプリケーションの健全性とセキュリティ確保は安定したサービスを提供する上で重要な要素です。Spring Health Assessment は、Spring アプリケーションに関する洞察を提供することで、既存の Spring アプリケーションをどのように強化していくかを診断してくれるツールです。どのような診断をしてくれるかの概要はこちらのブログにもまとまっていますので合わせてご覧ください。
ここでは、Spring Health Assessment はどのようなものかを少し掘り下げて説明し、ツールの具体的な利用方法と作成されたレポートの見方を説明していきます。
Spring Health Assessment とは?
Spring Health Assessment は、既存の Spring アプリケーションのライブラリ依存関係ファイルを弊社のアセスメントサービスサイトへアップロードすることにより即座にレポートしてくれるシンプルな WEB ツールです。また、お客様の大事なソースコードの内容を解析したりアップロードするものではないのでご安心ください。
このレポートには、現在サポートされている依存関係の詳細、セキュリティ脆弱性の可能性、依存関係をアップグレードする際の影響度合いの評価などが含まれます。
Spring Health Assessment 利用方法
Spring Health Assessment の利用方法について説明します。レポートが出力されるまで大まかに2ステップで数分で完了します。
準備:
診断対象のSpringアプリケーションのソースコード準備
診断サービスにアクセスするための Web ブラウザ
ステップ1:
こちらのサイトにアクセスしてください。
https://tanzu.vmware.com/jp/spring-health-assessment
“診断する” のボタンを押します。
次に診断サービスに必要な依存関係ファイルを出力するコマンドが表示されます。コマンド実行はお使いのビルドツール (Maven, Gradle)・ OS 環境 (Windows, Mac, Linux) に合わせたコマンドを選択できるようになっています。
・ビルドツール Maven / 実行環境 Mac or Linux の例
./mvnw dependency:tree | grep -E '(org.springframework|io.micrometer)' > spring-dependencies.txt
このブログで使用しているサンプルは、Spring Boot 2.7 のソースコードを用意しました。コマンドは診断対象のソースコードのルートディレクトリから実行します。
.
├── mvnw
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── springboot
│ │ ├── Application.java
│ │ └── HelloController.java
│ └── resources
│ └── application.yml
└── test
└── java
└── com
└── example
└── springboot
└── HelloControllerTest.java
コマンドプロンプトが返ってきたら、ルートディレクトリに spring-dependencies.txt が作成されます。
ファイルの中身はこちらのイメージのように org.springframework 関連ライブラリの依存関係が出力されています。
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.7.1:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.7.1:compile
[INFO] | | +- org.springframework.boot:spring-boot:jar:2.7.1:compile
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.7.1:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.7.1:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.7.1:compile
・・・省略
ステップ2:
2の “ファイルをアップロードし、レポートを見る” で “CHOOSE FILE” ボタンを押し、 spring-dependencies.txt を選択します。
実行者のお名前、役職、会社名、メールアドレス、国を選択いただき “レポートを生成” ボタンを押します。
実行後、数秒でレポートの画面が出力されます。レポートをローカルファイルに保存するには画面右上の印刷ボタンにて PDF にて保存してください。
Spring Health Assessment Report の診断結果を解説
出力されたレポートをみていきたいと思います。
診断結果概要
レポートの最初に記載された数字は診断対象となったライブラリの個数が表示されます。ここでは Spring Project の OSS ライブラリが 23個 検出されたことを示しています。その下の3つの円グラフは、左から OSS のサポート状況、セキュリティ脆弱性、ライブラリアップグレードの労力の目安を表示しています。
・OSSのサポート状況 (OSS Support Status)
ここではこちらの3段階の指標があります。
ポイントは Unsupported (橙色)および Commercial (オレンジ色)の部分で、バージョンアップなど何らかの対処が必要な状態を示しています。
・セキュリティ脆弱性 (Security Vulnerabilities)
ここではこちらの5段階の指標があります。
Spring Health Assessment サービスのバックエンドには脆弱性データベースを持っておりそれに基づいて脆弱性が判断されています。
脆弱性データベースは外部のソースと連携し、3 時間ごとの間隔で更新されます。脆弱性の評価手法は現時点では CVSS_V3 をベースにした深刻度レベル分けとなっています。CVSS をベースとしているため、CVSS スコア 7.0 以上に当たる Critical (赤) および High (橙色) を対象に被害を防ぐために迅速な対応が必要になると言われています。CVSS についてはこちらのサイトをご参考ください。これらをどう評価し対処していくか組織の評価基準や方針等と合わせ、一つの判断材料として活用いただければと思います。
・ライブラリアップグレードの労力の目安 (Upgrade Effort)
ここではこちらの4段階の指標があります。
こちらの指標に関しては注意する必要があるのですが、指標の目安は単純にライブラリのバージョンの違いに基づいて判断されています。お客様にてご利用されているコードの状況によっては実際の労力が診断結果の指標と一致することを保証するものではないので一つの目安としてご参考ください。
・診断結果サマリ (Findings)
ここでは OSS サポート面でのリスクを記載しています。あと何ヶ月で OSS コミュニティサポートを受けることができなくなるのか?また、セキュリティ脆弱性の可能性があるライブラリの数を記載しています。
・推奨事項 (Recommendations)
診断結果からの推奨事項を記載しています。OSS コミュニティサポートが終了した後、 Spring Runtime を購入することによりどれだけのライブラリが延長サポートを受けられるのかを記載しています。
・OSS サポート状況 (OSS Support Status)
右のタイムラインの表はコミュニティサポートと比べて Spring Runtime に よりどれくらいの延長サポート期間を受けれるかを視覚的に判断できます。
・セキュリティ脆弱性およびライブラリアップグレードの労力の目安詳細 (Security Vulnerabilities, Upgrade Effort)
こちらはライブラリ単位で脆弱性深刻度レベル、労力の目安ごとに数が記載されています。
ヘルプ情報 (Get Help)
・VMware Tanzu Spring Runtime のご紹介
こちらは 診断結果の中でも記載されている Spring の商用サポートに関する紹介です。Spring Runtime の日本語紹介ページはこちらです。商用サポートをご検討の方は弊社 Broadcom 営業担当にご連絡ください。
・VMware Tanzu Spring Consulting のご紹介
Spring に関する様々なご支援を提供するサービスです。Spring のバージョンアップのご支援や既存レガシーコードを最新の Spring 技術でモダナイズする支援などを提供しています。こちらも日本での提供も可能となっていますのでご興味がある方は弊社 Broadcom 営業担当までご相談ください。
ライブラリ詳細
・ライブラリ詳細 (Libraries)
こちらは診断された各ライブラリの詳細が見れるリストとなります。ライブラリ単位で OSS コミュニティサポートの終了日、商用サポートの終了日、診断された脆弱性の個数と脆弱性深刻度レベル、最新バージョンへアップグレードする場合の労力の目安が記載されています。
また、表示された Web 画面上で各ライブラリの囲みの右上に+で展開して保存したものに関してはその詳細が表示されます。
具体的に何の CVE に該当するのか?対象ライブラリを最新バージョンにアップグレードを前提としてその最新バージョンを含む Spring Project への Github release ページへのリンクが表示されています。
・その他のレポートの項目
Understanding Effort & Support Levels に関しては診断結果の指標に関する説明です。このブログのレポートの解説にて説明していますので必要に応じてご確認ください。Disclaimer and Known Limitations では制限事項等について記載しております。こちらも合わせてご確認ください。
まとめ
以上、Spring Health Assessment のレポートでどのような内容が確認できるのか?どのようにレポート内容の指標を判断すれば良いかをご説明させていただきました。
まずは、現在、お客様が運用されている Spring アプリケーションのソースコードから Spring 関連のライブラリ依存関係のみをツールで自動出力、提供いただくことによりエンタープライズとして必要なサポート、セキュリティ脆弱性への対処、マイグレーションの3つの観点についてレポートしお客様の将来的な Spring アプリケーションを安定的に運用していくための検討の入り口を提供します。
ソースコードさえあれば、簡単にはじめられますので、是非、下記にアクセスしていただきお試しください。
https://tanzu.vmware.com/spring-health-assessment
セミナー情報
今回のBlog の内容を実際に見ていただくセミナー 「春の健康診断セミナー 無料で出来るSpringアプリの健康チェック」 (SB C&S 株式会社主催) を5/16 14:00 オンラインで実施します。 Q&A の時間もありますので、ぜひご参加ください。申し込み はこちら