2022年10月21日
「Mend SCA」でオープンソースのセキュリティ&コンプライアンス管理古守 komori
一般に業務用ソフトウェアでは、ソースコードの約80%をオープンソースソフトウェア(OSS)が担っているとも言われています。
OSSを利用することにより、開発の効率化やコスト削減など様々な恩恵を受けることができますが、一方で、ライセンスの遵守や脆弱性への対応など、利用上の課題も多数あります。脆弱性情報は日々変わるものなので、すべてを把握するのは困難です。
リックソフトは、このような課題を解決するツールとして、オープンソース・セキュリティ&コンプライアンス管理ソリューション『Mend SCA(旧:WhiteSource *1)』を提供しています。Mend SCAは、開発プロジェクトをスキャンし、利用されているOSSのライセンス、脆弱性、品質(バグ)を解析して可視化します。
今回は、Mend SCAが提供する解析ツールの基本的な実行方法の説明を通して、Mend SCAの便利さと手軽さをお伝えしたいと思います。
*1 WhiteSourceの名称が「Mend SCA」になりました
Mend SCAはSaaS、またはon-premises(オンプレミス)で利用できます。
サーバで機密性が高い情報を取り扱う場合、on-premisesを採用するケースが多くなりますが、その場合、サーバマシンの調達、構築に関して様々な手続きが必要となり、運用コストも嵩みがちです。
Mend SCAでは、解析時に機密性の高いデータを取り扱わないため、手軽に利用を開始できるSaaSを採用するケースが多いです。
では、どのようにして機密性の高い情報を扱わずに解析を実行するのか?
これについては次項で具体的な解析手順を通して説明します。
Mend SCAは様々な開発ツールと統合して解析を実行することができますが、ここでは、Unified Agentという汎用的なツールを使って、開発プロジェクト内のリソースをスキャンする手順を紹介します。
参考:MEND:Scanning with the Unified Agent
以下、Step1〜4までの手順は30分程度で実行できます。
前提
ツールの実行環境には、以下のいずれかのバージョンのJavaがインストールされている必要があります。
Terminalやコマンドプロンプトから以下のコマンドを実行することで、インストールされているJavaのバージョンを確認できます。
$ java -version |
Javaがインストールされていない場合、下記のサイトからインストーラ(またはアーカイブ)を取得してインストールしてください。
以下の手順でMend SCAサーバにプロジェクトを作成します。
以下のURLからUnified Agentを取得し、任意のディレクトリに配置します。
以下のURLから設定ファイルを取得し、任意のディレクトリに配置します。
エディタでwss-unified-agent.configを開き、以下のパラメータを編集します。
パラメータ |
設定値(例) |
補足 |
---|---|---|
apiKey |
※Mend SCAサーバにて確認 |
API Key、Mend SCA Server URLはMend SCAサーバのIntegrateメニューから確認できます。 |
wss.url |
https:// {Mend SCA Server URL} /agent |
|
projectToken |
※Mend SCAサーバにて確認 |
projectTokenはMend SCAサーバのproject>設定メニュー(歯車アイコン)から確認できます。 |
includes |
**/*.jar **/*.java |
GLOBパターンを使用してスキャン対象とするファイルの拡張子を指定します。 Configファイルにて、includesが#でコメントアウトされている場合は、#を消してコメントを解除してください。 |
Unifide AgentはTerminalやコマンドプロンプトなどからコマンドラインで実行できます。
オプション |
設定値 |
---|---|
-jar |
unified agentを配置したパスを含めて指定します。 |
-c |
設定ファイルを配置したパスを含めて指定します。 |
−d |
スキャン対象のソースコードのディレクトリパスを指定します。 |
java -jar wss-unified-agent.jar -c wss-unified-agent.config -d source /sample-software |
処理が正常終了すると「Process finished with exit code SUCCESS (0)」と表示され、Mend SCAサーバのProject画面に解析結果が反映されます。
Unified Agentでは、指定されたディレクトリを再帰的に読み込んで、検出されたOSSのハッシュ値(所定のアルゴリズムで算出した規則性の無い文字列)を取得してサーバに送信します。Mend SCAのサーバは独自データベースでOSSのライセンス、脆弱性に関する情報を管理しており、このデータベースと受信したハッシュ値をマッチングし解析結果を表示します。このように、Mend SCAではソースコードなどの機密性が高い情報をサーバに送信すること無く解析ができるようになっています。
解析が完了すると、Mend SCAサーバのプロジェクトに解析結果が表示されます。
検出された脆弱性(High Medium Low)や利用されているライセンスの割合を円グラフやリストで表示します。
また、個々のOSSの詳細情報として、開発元のHP、ライセンス、CVE番号(脆弱性識別子)、影響バージョン、修正バージョンなどが確認できるようになっているので、脆弱性を持つOSSが検出された場合、どのように対処するか検討する際の助けになります。
会社で許可されていないOSSライセンスの利用や深刻な脆弱性が検出された場合、ポリシー違反としてアラートをあげたり、Jiraに課題を起票したりできます。
ポリシー定義は、ライセンスの種類やOSSライブラリの名称(正規表現で指定)、脆弱性やバグの高低(High ・Medium・Low)で指定することができます。
世界10万社が使うプロジェクト管理ツール
\アジャイル開発チームの利用実績 No.1/
アジャイルプロジェクト管理ツールです。
ソースコード管理Gitツールの「BitBucket」と統合し、継続的デリバリーを実現させます
リリース直前になって、ライセンスやセキュリティ上の問題が発覚して大慌て...なんて経験はありませんか?
Mend SCAは様々な開発ツールと統合できますが、その中でも特に効果的なのはBamboo、Jenkins、CircleCIなどのCIツール(継続的インテグレーションツール)との統合だと思います。
CIツールのジョブと併せてOSSの解析を実行するようにしておけば、開発サイクルの中でいち早く問題を検知し、対策を講じることができます。
Bamboo、CircleCIはジョブ実行時にUnified Agentを呼び出して解析を実行します。
JenkinsはMend SCAから専用のプラグインが提供されています。
いずれの場合も基本的な解析のロジックは同じです。
OSSのコンプライアンス管理、セキュリティ脆弱性対策に課題をお持ちの方は是非お試しください。
本ブログは2019年07月29日年に執筆したものを、2022年10月19日に再編集したものです
リックソフトのカスタマーサクセスチームは
Jira Cloudの「基本機能ご紹介セミナー」を
毎月開催しています!
▶対象:
リックソフトからJira Cloudおよび Confluenceを導入された企業・組織のエンドユーザー様すべて。
内容:
無料のJiraの使い方セミナーです。リックソフトから、各企業担当者に案内しています。
エンドユーザーは製品管理者の方にご確認ください。
▶無料セミナーに関心があるJira製品担当者の方へ:
「新入社員・中途メンバー教育に困っている」「他部署展開のときに話がはやくなる」と好評です。
リックソフトにお問い合わせください。
本情報はブログを公開した時点の情報となります。
ご不明な点はお問い合わせください。
アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのサポートではサポートします。
リックソフトのサポートは開発元が提供するサポート以上の価値があります。
ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。
リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。
ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。
日本随一の生産性向上にも効果のある研修サービスです。
リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。