コードの安全性・安定性を高める開発サイクル ~テスト管理の効率を上げ,脆弱性診断を自動で行う~

第3回 WhiteSource+Jiraの連携でDevSecOpsをやってみよう(前編)

この記事を読むのに必要な時間:およそ 2 分

はじめに

過去の連載業務を改善する情報共有の仕掛け第1回第2回では,DevOps実現のための基盤作りについてお話をしました。今年はDevOpsにセキュリティの観点を加えたDevSecOpsにフォーカスし,前回のDevOpsからDevSecOpsへの近道で,Sec領域を担うソフトウェアコンポジション解析注1ツールWhiteSourceについて紹介しました。今回は,WhiteSourceのコンポジション解析の流れを確認したあと,DevOpsを支援するツールとWhiteSourceの統合について紹介します。

注1)
開発するアプリケーションに含まれるオープンソースコンポーネントの脆弱性やオープンソースライセンスの法的チェックを行うこと。

WhiteSourceの解析のしくみ

WhiteSourceはバージョン管理システムやCIツールと連携し,さまざまなタイミングでコンポジション解析を実行できます。ここでは一番ベーシックな方法として,WhiteSourceが提供するUnified Agentと呼ばれるツールを使った解析の流れについて紹介します。

Unified AgentはJavaで実装されており,実行環境にはJRE 1.8系がインストールされている必要があります。アプリケーションと設定ファイルはGitHubで配布されており,curlをインストールしておけば次のコマンドで最新版を取得できます。

$ curl -LJO https://github.com/WhiteSource/unified-agent-distribution/releases/latest/download/wss-unified-agent.jar
$ curl -LJO https://github.com/WhiteSource/unified-agent-distribution/raw/master/standAlone/wss-unified-agent.config

取得したリソースを開発環境の任意のディレクトリに配置し,wss-unified-agent.configにWhiteSourceサーバのURL,APIKey,解析対象のリソースの拡張子などのパラメータを設定します。アプリケーションはJavaコマンドで実行でき,次のように-dオプションでスキャン対象のディレクトリパスを指定します。

$ java -jar wss-unified-agent.jar -c wss-unified-agent.config -d source/sample-software

Unified Agentは,指定されたディレクトリを再帰的にスキャンし,検出したコンポーネントのハッシュ値を算出します。開発環境のスキャンが完了すると,取得したハッシュ値をWhiteSourceサーバに送信します。WhiteSourceの特長は,ソースコードを外部に送信せずにハッシュ値だけを送信することにあります。

WhiteSourceのサーバでは,受け取ったハッシュ値を元にデータベース注2とマッチングし,オープンソースコンポーネントの情報をインベントリに登録します。WhiteSourceの利用者は,図1のようにインベントリに登録されたオープンソースコンポーネントのライセンス,脆弱性,バグなどに関するアラートや統計情報を確認できます。

図1 WhiteSourceのダッシュボード

図1 WhiteSourceのダッシュボード

WhiteSourceのサーバはSaaSとオンプレミスで提供されていますが,ソースコードなどの重要性が高い情報をWhiteSourceサーバに送信しない作りとなっているため,手軽に導入できるSaaS版が人気を集めています。

注2)
WhiteSourceは,オープンソースコンポーネントのライセンス,セキュリティ,品質に関する独自のデータベースを所有し,日々アップデートしています。

Prioritizeを使った脆弱性解析

Prioritizeは,WhiteSourceの脆弱性解析に関するオプション機能です。

従来の解析手法では,脆弱性が報告されているオープンソースコンポーネントを特定することはできますが,報告された脆弱性が内在するエンティティが,開発対象のソースコードからどのように参照されているかについては識別できませんでした。

Prioritizeでは,開発対象のソースコードをスキャンして,コードがオープンソースコンポーネントとどのように相互作用するかを分析し,オープンソースコンポーネントの脆弱性を含むソースコードが開発対象のソースコードからコールされているか明確にできます。これにより,報告された脆弱性が本当のリスクになるかどうかの確認が容易になり,脆弱性への対応に関する工数を大幅に削減し,開発プロセスを効率化できます。

現在は,次に示す環境における分析をサポートしており,今後のリリースでサポート環境の追加が検討されています。

  • Maven,Gradleを利用したJava,およびScala,Kotlin
  • JavaScript(npm)

Unified Agentの設定ファイルで,Prioritize解析の実行フラグ,Maven/Gradleなどの利用環境に応じたオプションを追加で設定します。ツールを実行する際,スキャン対象のディレクトリパスに加えて,次のように-appPathオプションでbuild後のアプリケーションを指定します。

$ java -jar agent/bin/wss-unified-agent.jar -c wss-unified-agent.config -d source/sample-software -appPath source/sample-software/target/SampleSoftware.jar

処理が完了すると,指定したWhiteSourceのサイトに解析の結果が表示されます。Prioritizeオプションが有効になっている環境では,図2のように脆弱性の影響を確認するうえでの指標となるシールドマークが表示されます。

図2 脆弱性の指標となるシールドマーク

図2 脆弱性の指標となるシールドマーク

また,図3のように脆弱性の詳細情報として,CVE(脆弱性情報)⁠脆弱性を含むソースコードのコールトレースなどが確認できます。

図3 脆弱性の詳細情報

図3 脆弱性の詳細情報

以上がWhiteSourceが行うソフトウェアコンポジション解析の大まかな流れです。後編では,診断結果に対するアクションを指定できるポリシー設定についてと,DevOpsを支援するツールとWhiteSourceとの統合について紹介します。

米国Atlassianから,2年連続で
「Top new business APAC」を受賞。
Atlassianセールスパートナーとして
アジアパシフィックで1位の証

米国Atlassianから,2年連続で「Top new business APAC」を受賞。Atlassianセールスパートナーとしてアジアパシフィックで1位の証

日本だけでなく,アジア圏でもアトラシアン製品販売のトップエキスパートであるリックソフトのWebサイトでは,各アトラシアン製品の体験版を提供しているほか,アトラシアン製品専用のコミュニティも運営しています。まずはアクセスしてみては!

Software Design

本誌最新号をチェック!
Software Design 2019年10月号

2019年9月18日発売
B5判/176ページ
定価(本体1,220円+税)

  • 第1特集
    “速い”Webアプリケーションの作り方[フロントエンド編]
    レンダリングのしくみからHTML/CSS/JavaScriptの書き方まで
  • 第2特集
    わかりやすい絵文字の講座
    絵文字をきっかけに振り返る文字コードの歴史
  • 特別企画
    快適な朝を創りあげる
    Ejectコマンド工作――職人の朝を支える技術の巻

著者プロフィール

古守花織(こもりかおり)

リックソフト株式会社

アトラシアン製品のプリセールスを担当。

アトラシアン認定プロフェッショナル(ACP)の資格取得のための勉強をしつつ,愛犬と一緒に登山を楽しんでます。

動物占いは「虎」ですが,そこまで肉は食べません。