2024.04.25

解説:Spring Health Assessmentの利⽤⽅法

Hiroki Matsubara
プリンシパル ソリューション アーキテクト
Tanzu 事業部 - ⽇本担当
このエントリーをはてなブックマークに追加

はじめに

アプリケーションの健全性とセキュリティ確保は安定したサービスを提供する上で重要な要素です。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 を選択します。実⾏者のお名前、役職、会社名、メールアドレス、国を選択いただき "レポートを⽣成" ボタンを押します。

dependencyfileup.png

実⾏後、数秒でレポートの画⾯が出⼒されます。レポートをローカルファイルに保存するには画⾯右上の「印刷」ボタンにて PDF にて保存してください。

Spring Health Assessment Report の診断結果を解説

出⼒されたレポートをみていきたいと思います。

こちらをクリックしてサンプルのPDFを確認

診断結果概要

レポートの最初に記載された数字は診断対象となったライブラリの個数が表⽰されます。ここでは Spring Project の OSS ライブラリが 23個 検出されたことを⽰しています。その下の3つの円グラフは、左から OSS のサポート状況、セキュリティ脆弱性、ライブラリア ップグレードの労⼒の⽬安を表⽰しています。

・OSSのサポート状況 (OSS Support Status)

OSSsuport指標.png

ポイントは Unsupported (橙⾊)および Commercial (オレンジ⾊)の部分で、バージョンアップなど何らかの対処が必要な状態を⽰しています。

・セキュリティ脆弱性 (Security Vulnerabilities)

ここではこちらの5段階の指標があります。

SecurityVul指標.png

Spring Health Assessment サービスのバックエンドには脆弱性データベースを持っておりそれに基づいて脆弱性が判断されています。

脆弱性データベースは外部のソースと連携し、3 時間ごとの間隔で更新されます。脆弱性の評価⼿法は現時点では CVSS_V3 をベースにした深刻度レベル分けとなっています。CVSS をベースとしているため、CVSS スコア 7.0 以上に当たる Critical (⾚) および High (橙⾊)を対象に被害を防ぐために迅速な対応が必要になると⾔われています。CVSS についてはこちらのサイトをご参考ください。これらをどう評価し対処していくか組織の評価基準や⽅針等と合わせ、⼀つの判断材料として活⽤いただければと思います。

・ライブラリアップグレードの労⼒の⽬安 (Upgrade Effort)

ここではこちらの4段階の指標があります。

UpgradeEffort指標.png

こちらの指標に関しては注意する必要があるのですが、指標の⽬安は単純にライブラリのバージョンの違いに基づいて判断されています。お客様にてご利⽤されているコードの状況によっては実際の労⼒が診断結果の指標と⼀致することを保証するものではないので⼀つの⽬安としてご参考ください。

・診断結果サマリ (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/jp/spring-health-assessment

関連リンク

5/16(木) 14:00- Spring Health Assessment 春の健康診断セミナー開催!

今回のBlog の内容を実際に⾒ていただくセミナー 「春の健康診断セミナー 無料で出来るSpringアプリの健康チェック」 (SB C&S 株式会社主催) を5/16 14:00 オンラインで実施します。 Q&A の時間もありますので、ぜひご参加ください。

セミナーの詳細、お申込みはこちらから

VMware Tanzu Spring Runtime のお問い合わせ

Springの商用サポートに関するご質問・お見積もりなどのご相談は
「お問い合わせ」ボタンより、お気軽にお問い合わせください。

この記事の著者:Hiroki Matsubara

プリンシパル ソリューション アーキテクト
Tanzu 事業部 - ⽇本担当

VMware Tanzu の技術担当として営業⽀援活動に従事


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

  • Like on Feedly
    follow us in feedly

関連記事

このエントリーをはてなブックマークに追加

お問い合わせ

DevOpsに関することなら
お気軽にご相談ください。

Facebook、TwitterでDevOpsに関する
情報配信を行っています。