Skip to main content

オープンソースコンポーネントを管理するための6つのヒント

著者

2022年4月26日

0 分で読めます

オープンソースソフトウェア(OSS)はソフトウェア開発を効率化します。そのため、90%以上の組織がアプリケーションにオープンソースコンポーネントを利用しています。つまり、コードベースに含まれるカスタムコードよりもオープンソースコードのほうが多いアプリケーションが増えつつあります。

オープンソースソフトウェアのメリットとリスク、そしてオープンソースコンポーネントを安全に利用するための6つのヒントをご紹介します。

オープンソースのメリットとは?

オープンソースコンポーネントは、ソフトウェア業界を大きく変えました。この利用が拡大している理由は明らかです。オープンソースコンポーネントを使えばアプリケーション開発を迅速化でき、開発者の効率と生産性が向上します。

さらに、オープンソースコンポーネントを使えば、開発者はコードを簡単に構築し、オープンソースコミュニティの共同作業の成果を活用できます。これにより、開発チームは車輪の再発明を避けるためにオープンソースのツールやライブラリを使いながら、組織独自のカスタムコードに集中できます。

オープンソースコンポーネントのセキュリティリスクとは?

オープンソースコードの普及に伴い、セキュリティリスクも高まっています。さらに、当社の調査では、オープンソースの脆弱性は間接依存関係(「推移的依存関係」とも呼ばれます)に見つかることが少なくないと判明しました。多くのオープンソースコンポーネントは古く、ライセンスが変更されていたり、ライセンス情報が欠落していたりします。こうした問題は、オープンソースプロジェクトに含まれる間接依存関係で特に発見しにくくなります。

オープンソースコンポーネントには、次のようなリスクがあります。

  1. ソフトウェアの品質 – オープンソースのコードモジュールを使うと、コードに貢献する開発者のばらつきが大きくなり、サードパーティコードに適用される品質保証(QA)プロセスを管理しにくくなります。

  2. 長期的な持続可能性 – オープンソースモジュールが保守されていない場合、ソフトウェア開発者がその不足を補わなければなりません。その結果、開発者の負担が増し、脆弱性への対応に割ける時間も限られます。

  3. ソフトウェアライセンス – オープンソースコンポーネントの最終的な利用方法によって、オープンソースライセンスの遵守に必要なライセンスの種類(パーミッシブまたはコピーレフト)が決まります。パーミッシブライセンスでは、ソフトウェアの実装や配布が認められます。一方、コピーレフトライセンスでは、OSSコンポーネントを使って開発したソフトウェアも自由に利用できるようにする必要があり、専有情報の開示につながるリスクがあります。各モジュールの著作権の状態と利用制限を必ず確認しましょう。大規模なアプリケーションではオープンソースの依存関係が増えるため、確認が難しくなることがあります。

  4. オープンソースソフトウェアのセキュリティ – 品質面のリスクと同様に、共同開発者がセキュリティに適切に対処していない場合、オープンソースコンポーネントの導入によってセキュリティリスクが生じる可能性があります。

オープンソースのリスクを軽減するには?

ソフトウェアプロジェクトに適したオープンソースコンポーネントを選ぶことで、品質、ライセンス、著作権侵害に関するリスクを軽減できます。「ソフトウェアの詳細を企業秘密として保護すべきか」「このコンポーネントの利用方法は、オープンソース提供元との契約に抵触しないか」といった点を確認することが重要です。

オープンソースコンポーネントを安全に管理するための6つのヒントをご紹介します。上記のセキュリティリスクへの理解を深め、セキュリティを損なうことなくオープンソースコンポーネントのメリットを活用するのに役立ちます。

Snykレポート

オープンソースセキュリティの現状 2022

The Linux Foundationと共同で、ソフトウェアサプライチェーンの複雑さとリスクを分析します。

オープンソースコンポーネントを安全に利用するための6つのヒント

1. ソフトウェアサプライチェーンを保護する

オープンソースソフトウェアを採用しても、安全性が保証されるわけではありません。ソフトウェアサプライチェーンのどこかで脆弱性が入り込めば、ソースコードに悪影響が連鎖的に広がります。さらに、現代のアプリケーションはモジュール式に構築され、相互に接続された社内外のモジュールを組み合わせています。そのため、本格的なコード開発に入る前に、ソフトウェアサプライチェーン内のモジュールを繰り返し自動でテストし、セキュリティ上の問題がないか確認する必要があります。

2. 自動適用するポリシーを策定する

外部開発のソフトウェアモジュールを追加すると、その管理がオープンソースプロジェクトの貢献者に委ねられるため、リスクが生じます。そのため組織は、リスク許容度に合わせた基準を定め、ソフトウェア開発ライフサイクル(SDLC)のさまざまな段階で徹底する必要があります。オープンソースコンポーネントを評価する社内ポリシーを策定することは、セキュリティ上の脅威となるモジュールの追加を防ぐ有効な方法です。

3. SCAを重視する

ソフトウェアコンポジション解析(SCA)は、オープンソースコンポーネントを利用するアプリケーションを保護する手法です。SCAの重要性は、開発チームがサポートライブラリ、依存関係、ライセンス、セキュリティ脆弱性などの外部コンポーネントを追跡・分析するスピードを高められる点にあります。

4. アプリケーションセキュリティテストツールキットにSCAツールを導入する

SCAツールを使えば、コンポーネントを追跡してライセンスやセキュリティの問題を迅速に発見し、対処できます。そのため、オープンソース戦略や既存の開発ワークフローに欠かせないものです。SCAツールは例外ではなく、標準として導入しましょう。

5. 外部ソースコードをフォークする

「フォーク」とは、開発者がオープンソースコードを複製してから変更を加えるプロセスです。フォークすれば、コードの変更履歴を追跡できるだけでなく、元のコードと変更後のコードを分離できます。また、既存モジュールのソースコードを特定のアプリケーションに合わせてカスタマイズできるという、OSSの大きなメリットも活用できます。

6. オープンソースコンポーネントのスキャンにSnykが役立つ方法

オープンソースコンポーネントを管理する最善の方法の1つは、Snyk Open Sourceのような堅牢なセキュリティ管理ツールを選ぶことです。プロジェクト内のすべてのオープンソースコンポーネントと依存関係を「ソフトウェア部品表」として可視化できるため、開発者はオープンソースライブラリによってプロジェクトに持ち込まれた脆弱性を修正できます。さらに、Snyk Open Sourceは実行時のセキュリティ監視も提供します。

Snyk Open Sourceはオープンソースライセンスのコンプライアンスツールでもあり、ユーザーをさらに支援します。プロジェクトの成長に伴い、開発者は新しいライブラリや依存関係を継続的に追加しますが、それによってコンプライアンスに違反するコードが持ち込まれる可能性もあります。こうしたライセンスを追跡・管理することで、組織は利用するオープンソースコードが独自に定めたポリシーに準拠していることを確認できます。

Snyk Open SourceはVSCodeやJetBrainsなど、多くの開発者向けツールで利用できます。これにより、開発者はコードの作成中に、導入しようとしているコンポーネントの詳細を簡単に確認できます。

「Snykを使い始めた当初、利用していたサードパーティ製オープンソースパッケージに多数の脆弱性があることがわかりました。数週間で、脆弱性の数をより適切な水準まで減らすことができました。しかし、数週間、あるいは1か月前と比べて脆弱性が大幅に減ったことは、本当に驚くべきことです。」

Dan Godley、Origo 開発責任者、Snyk Open Sourceの利用について

オープンソースの脆弱性をスキャン

Snykで脆弱性を自動で検出し、優先順位を付けて、無料で修正できます。

オープンソースコンポーネントの管理:まとめ

オープンソースコンポーネントは、コードを迅速かつ効率的に開発する優れた方法です。しかし、開発スピードが向上しても、コードの作成中にセキュリティ脆弱性へ対処することは欠かせません。オープンソースコンポーネントのリスクを理解し、管理のための6つのヒントを実践すれば、開発スピードや開発者の時間を犠牲にすることなく、安全なコードを提供できます。

オープンソースプロジェクトへの還元も忘れないでください。オープンソースコミュニティは素晴らしい活動をしていますが、その強さは貢献によって支えられています。オープンソースコンポーネントを利用する組織は、こうしたプロジェクトを支援するべきです。最近のLog4Shell脆弱性では、コミュニティが力を合わせて問題を解決し、修正方法を広く共有し、影響を評価しました。

よくある質問

オープンソースコンポーネントとは?

オープンソースソフトウェア(OSS)コンポーネントとは、他のアプリケーションでの配布や利用が許可されたソフトウェアです。明確に定義されたインターフェースと依存関係を持ち、ソースコードを含めるライセンスが適用され、オープンソースに関するOpen Systems Interconnection(OSI)の定義に準拠しています。

オープンソースコンポーネントを管理するには?

オープンソースモジュールをうまく導入するには、サプライチェーンを保護してください。外部コンポーネントの採用に関するポリシーを策定し、SCA手法を導入することで、オープンソースモジュールを利用するチームを成功に導けます。さらに、既存のサードパーティコードの変更をフォークし、オープンソースの脆弱性スキャンを実施することで、統合されたコード全体のセキュリティを保護できます。

Snykが提供する革新的なオープンソースコンポーネントの管理・保護ソリューションについて、Snyk Open Source Security Managementのページをご覧ください。