コンテンツに移動
セキュリティ & アイデンティティ

Open Source Insights のデータを BigQuery に導入して、ソフトウェア サプライ チェーンの安全性を確保

2022年5月23日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 5 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。

本日、Open Source Insights より新しい Google Cloud データセットを発表いたします。これはデベロッパーの皆様が、使用しているソフトウェアの構造とセキュリティについて、より正確に把握できるようにするものです。このデータセットを使用することで、オープンソース ソフトウェアのデベロッパー、メンテナー、使用者の皆様が、重要なソフトウェア サプライ チェーン情報にアクセスできるようになります。

ユーザーは皆様が記述したコードを頼りにしていますが、それは同時に皆様のコードが依存するコード、そしてそのコードがさらに依存するコードへの依存関係が生じることをも意味します。この複雑に絡まり合った依存関係により依存関係グラフが形成され、グラフ内の各ノードではプロジェクトに有用な機能がもたらされます。一方、log4j 問題などの最近のイベントで示されたように、セキュリティの脆弱性、ライセンスの問題、または不意の事態などにつながる可能性もあります。コードを理解するには、依存関係グラフを正しく把握することが必要です。

npm、Go、Maven、PyPI、Cargo エコシステムの数百万ものオープンソース パッケージが、Open Source Insights プロジェクトによりスキャンされます。そのうえで依存関係グラフが計算され、セキュリティ アドバイザリ、ライセンス情報、注目度の高い指標、その他のメタデータを使用して、グラフにアノテーション付けが行われます。データセットは定期的に更新され、最新の状態と関連性が保たれるとともに、経時的な変更のスナップショット ビューが提供されます。このデータは、各パッケージの依存関係の制約を解決することで生成され、厳密かつ正確で実用価値のある依存関係グラフが提供されます。

オープンソース パッケージには高い頻度で変更が加わります。Google の分析によると、毎日 npm のパッケージの約 15% に、それぞれの依存関係セットにおける変更が生じています。また、これらのパッケージのうち 4 万個(npm のパッケージの 2%)については、結果的にライセンスまたはアドバイザリ セットが変更されています。このような変更を常に把握することは重要ですが、優れたツールなしでは困難です。

この新しいデータセットを使用すると、誰でも Google Cloud BigQuery を使用して、対応している複数のエコシステムにおけるオープンソース パッケージの依存関係、アドバイザリ、オーナー権限、ライセンス、その他のメタデータ、およびこのメタデータが時間の経過とともにどう変更されたか調査、分析できるようになります。

このデータがどのように使用されるのか大変楽しみにしています。ご自身の立場が開発者、セキュリティ エンジニア、または研究者かを問わず、この一般公開データセットを使用して、ご自身のソフトウェア サプライ チェーンの各コンポーネントを分析し、その情報を既存のツールやパイプラインに統合していただくことができます。

Open Source Insights データセットの仕組み

今回の取り組みは、Google の使命である「世界の情報を整理し、あまねくアクセスでき、有用なものにする」ことをオープンソース ソフトウェアで実践するものです。Open Source Insights は、npm、Go、Maven(Java)、PyPI(Python)、Cargo(Rust)など、対応しているパッケージ システムの各パッケージを調査します。依存関係とそのプロパティの詳細なグラフが作成され、セキュリティ アドバイザリ、ライセンス、所有者、リリース情報、その他のメタデータによるアノテーション付けが行われます。これにより、パッケージ管理言語のエコシステム全体を網羅する豊富なデータセットが作成されます。

データセットは定期的に更新されるため、経時的なエコシステム レベルの変更の追跡、問題の範囲と影響の分析、またはカスタム ダッシュボードやビルドシステムへの統合において貴重なリソースとなります。

Open Source Insights データセットのスタートガイド

これらの一般公開データセット テーブルを使い始めるにあたっては、まずスキーマを確認したうえで、次の例のようなサンプルクエリをお試しください。他のすべての Google Cloud データセットと同様に、BigQuery の無料枠を利用することで、クエリでは最大 1 TB/月、ストレージでは最大 10 GB/月まで課金なしでアクセスできます。これらのしきい値を超える SQL クエリには、通常の BigQuery の料金が適用されます。サンドボックスの制限と BigQuery の無料枠のしきい値までの範囲であれば、BigQuery サンドボックスを利用して BigQuery にアクセスすることもできます。その場合、Google Cloud アカウントの作成やクレジット カード情報の入力は不要です。

各エコシステム間で最も一般的なライセンスは何か?

各依存関係管理システム内のパッケージ間でライセンス データを集約することで、システムごとによく使われる上位 3 つのライセンスのリストを取得できます。これを行うには、まずデータセット内の最新のスナップショットを見つけます。次にそのスナップショット内で、各ライセンスを使用したバージョンが少なくとも 1 つある一意のパッケージ数をカウントします(パッケージのバージョンが複数の場合、重複してカウントしません)。

読み込んでいます...

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Open_Source_Insights.max-1200x1200.jpg

最も依存しているパッケージのバージョンは何か?

依存関係グラフを使用することで、Cargo エコシステムの中で最も依存されているパッケージのバージョンを特定できます。これを行うには、すべてのパッケージと利用可能なバージョンを、パッケージごとにセマンティック バージョン番号が最も大きいリリースのみにフィルタします。次に、各バージョンに依存する、このバージョン番号が最も大きいリリースのバージョン数を合計します。

読み込んでいます...

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Open_Source_Insights.max-1200x1200.jpg

ソフトウェア サプライ チェーン セキュリティの今後の展開は?

このデータセットによって、デベロッパーが依存関係に関するより多くの基本的な情報をもっと簡単に取得できるようになることを期待しています。最新のオープンソース ソフトウェアのインサイトと可視化に関しては、Open Source Insights ウェブサイトでも確認いただけます。また、5 月 17 日に開催予定の Google Cloud Security Summit では、オープンソース セキュリティとソフトウェア サプライ チェーン セキュリティのソリューションについて詳しく学べます。



- プロダクト マネージャー Nicky Ringland
- ソフトウェア エンジニア James Wetter

投稿先