Compliance & Regulationシリーズの一部
完全ガイドを読むオープンソース ライセンスのコンプライアンス: ソフトウェア会社のための実践ガイド
平均的な商用アプリケーションには 77% のオープンソース コードが含まれており、500 以上の依存関係にまたがっています。 各依存関係には、特定の義務を伴う独自のライセンスが適用されます。これらの義務に違反すると、会社は訴訟、コードの強制開示、風評被害にさらされることになります。しかし、ほとんどの企業には、オープンソース ライセンスを追跡または遵守するためのプロセスがありません。
このガイドでは、ライセンスの分類から自動スキャンと SBOM の生成に至るまで、オープンソース ライセンス コンプライアンスのための実践的なフレームワークを提供します。
重要なポイント
- すべてのオープンソース ライセンスが同じというわけではありません。寛容なライセンスではほぼすべてのものが許可されますが、コピーレフト ライセンスでは変更を共有する必要があります。
- ソフトウェア部品表 (SBOM) は政府調達における法的要件になりつつあります (米国大統領令 14028)
- CI/CD での自動ライセンス スキャンにより、非準拠の依存関係がコードベースに侵入するのを防ぎます
- コピーレフトの「感染」リスクは現実的です。1 つの GPL 依存関係により、アプリケーション全体をオープンソースにすることが義務付けられる可能性があります
ライセンス カテゴリ
許容ライセンス (低リスク)
| ライセンス | 義務 | 商用利用 | 修正 | 配布 |
|---|---|---|---|---|
| マサチューセッツ工科大学 | 著作権表示とライセンスを含める | はい | はい | はい |
| BSD 2 節 | 著作権表示とライセンスを含める | はい | はい | はい |
| BSD 3 節 | 同じ + 裏書きの主張なし | はい | はい | はい |
| アパッチ2.0 | 通知 + ライセンス + 州の変更 + 特許付与を含む | はい | はい | はい |
| ISC | 著作権表示とライセンスを含める | はい | はい | はい |
商用利用も安全です。 配布物にはライセンステキストと著作権表示を含めてください。さらに、Apache 2.0 では、元のコードへの変更に注意する必要があり、特許ライセンスが含まれています。
弱いコピーレフト (中リスク)
| ライセンス | 義務 | キーの制限 |
|---|---|---|
| LGPL v2.1/v3 | LGPL コードの変更を共有します。動的にリンクされた場合、コードは独自のままになります。静的リンクはコピーレフトを引き起こす可能性があります。 | |
| MPL2.0 | MPL ファイルへの変更を共有します。新しいファイルは独自のものになる可能性があります。ファイルレベルのコピーレフト | |
| EPL 2.0 | 変更を共有します。セカンダリ ライセンス オプションが利用可能 | モジュールレベルのコピーレフト |
注意して使用してください。 LGPL ライブラリは、静的にリンクされるのではなく、共有 (動的) ライブラリとして保持してください。 MPL ライセンスのコードは、独自のコードとは別のファイルに保管してください。
強力なコピーレフト (高リスク)
| ライセンス | 義務 | キーの制限 |
|---|---|---|
| GPL v2 | 派生作品には GPL ライセンスが必要です。リンクすると派生著作物が作成されます。 | |
| GPL v3 | v2 + アンチ Tivoization + 特許付与と同じ | より広範なコピーレフト |
| AGPL v3 | GPL v3 と同じ + ネットワーク使用トリガーサーバー側の使用数 | |
| SSPL | 「サービス」スタック全体をオープンソース化する必要があります。最も広範なコピーレフト |
商用ソフトウェアの場合、最も高いリスクがあります。 アプリケーションで GPL コードを使用すると、アプリケーション全体を GPL に基づいてリリースすることが必要になる場合があります。 AGPL はこれをサーバー側ソフトウェアに拡張します。バイナリを配布しない場合でも、ソフトウェアを Web サービスとして提供すると、コピーレフト義務が発生します。
コンプライアンスのワークフロー
ステップ 1: SBOM を生成する
# For Node.js projects (using CycloneDX)
npx @cyclonedx/cyclonedx-npm --output-file sbom.json --spec-version 1.5
# For Python projects
pip install cyclonedx-bom
cyclonedx-py environment --output sbom.json
# For multi-language projects (using Syft)
syft . -o cyclonedx-json > sbom.json
ステップ 2: ライセンス準拠をスキャンする
# Using license-checker for Node.js
npx license-checker --production --json --out licenses.json
# Using scancode-toolkit (comprehensive, all languages)
scancode --license --copyright --output-json scan-results.json .
ステップ 3: 分類と承認
承認されたライセンス リストを作成します。
{
"approved": [
"MIT", "BSD-2-Clause", "BSD-3-Clause", "Apache-2.0",
"ISC", "0BSD", "Unlicense", "CC0-1.0"
],
"conditional": [
"LGPL-2.1", "LGPL-3.0", "MPL-2.0", "EPL-2.0"
],
"prohibited": [
"GPL-2.0", "GPL-3.0", "AGPL-3.0", "SSPL-1.0",
"EUPL-1.2", "OSL-3.0"
]
}
ステップ 4: CI/CD の統合
# .github/workflows/license-check.yml
name: License Compliance
on: [pull_request]
jobs:
check-licenses:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: pnpm install --frozen-lockfile
- name: Check licenses
run: |
npx license-checker --production --excludePackages "" \
--failOn "GPL-2.0;GPL-3.0;AGPL-3.0;SSPL-1.0" \
--summary
SBOM (ソフトウェア部品表)
SBOM が重要な理由
- 米国大統領令 14028 では、米国政府に販売されるソフトウェアに SBOM が必要です
- EU サイバーレジリエンス法 により、EU 内で販売されるソフトウェアには SBOM が義務付けられます
- サプライ チェーン セキュリティ: SBOM により、脆弱性への迅速な対応が可能になります (log4j が発生すると、影響を受けているかどうかがわかります)
- 顧客の信頼: 企業のバイヤーは調達時に SBOM を要求することが増えています
SBOM規格
| 標準 | フォーマット | 管理者 | 養子縁組 |
|---|---|---|---|
| サイクロンDX | JSON、XML | オワスプ | 成長 (npm のデフォルト) |
| SPDX | JSON、RDF、タグ値 | Linux財団 | 確立 (ISO/IEC 5962:2021) |
| SWID | XML | NIST | 政府 |
推奨事項: ほとんどのソフトウェア会社向けの CycloneDX。これはよりシンプルで、ツールのサポートが優れており、業界のデフォルトになりつつあります。
一般的なコンプライアンス シナリオ
シナリオ 1: Node.js Web アプリケーション
一般的な node_modules ディレクトリには 500 ~ 2,000 のパッケージが含まれています。大多数は MIT または ISC ライセンスを使用します。よくある問題:
- GPL を使用した推移的な依存関係 (直接追加しませんでした)
UNKNOWNライセンス フィールドは手動調査が必要です- 単一パッケージ上の複数のライセンス (例: 「MIT OR Apache-2.0」)
アクション: npx license-checker --production を毎週実行します。許可されていないライセンスを調査します。 GPL の依存関係を寛容な代替案に置き換えます。
シナリオ 2: Odoo モジュールの開発
Odoo コミュニティ エディションは LGPL v3 です。 Odoo Enterprise は独自のものです。カスタム モジュール:
- コミュニティ モジュール: LGPL v3 または互換性がある必要があります (配布されている場合)
- プライベート内部モジュール: 配布されていないため、LGPL は適用されません
- エンタープライズ アドオン: Odoo Enterprise ライセンス条項に準拠する必要があります
シナリオ 3: AGPL 依存関係のある SaaS
SaaS アプリケーションが AGPL ライセンスのコード (SSPL に切り替える前の MongoDB など) を使用している場合は、次のいずれかを行う必要があります。
- アプリケーションのソース コード全体を AGPL に基づいてリリースします。
- AGPL 依存関係を削除し、代替手段を使用します。
- AGPL プロジェクトから商用ライセンスを取得します (利用可能な場合)
サーバー側で AGPL コードを使用すると、バイナリを「配布」しない場合でも、コピーレフトの義務が生じます。
よくある質問
API で GPL ライブラリを使用すると、API をオープンソースにする必要がありますか?
それは使い方次第です。 GPL ライブラリがアプリケーションに (静的または動的に) リンクされている場合、FSF の立場は、アプリケーションは「二次的著作物」であり、GPL に基づいてライセンスを取得する必要があるというものです。ネットワーク API を介して GPL ソフトウェアと通信する場合 (たとえば、GPL ライセンスのデータベース サーバーを使用する場合)、それは通常、二次的著作物とみなされません。特定の事件については弁護士に相談してください。
依存関係によってライセンスが変更された場合はどうなりますか?
あなたは、将来のライセンスの変更ではなく、コードを取得したときのライセンスに拘束されます。ただし、新しいライセンスを使用して新しいバージョンに更新すると、新しいライセンスがそのバージョンに適用されます。これが、バージョン固定の SBOM が重要である理由です。SBOM には、使用しているバージョン (およびライセンス) が正確に文書化されています。
「不明」ライセンスの依存関係はどのように処理すればよいですか?
パッケージのリポジトリで LICENSE ファイルを確認してください。ライセンスが指定されていない場合、コードは技術的に完全な著作権保護下にあります。コードを使用、変更、配布する権利はありません。ライセンスを見つけて (標準以外の場所にある可能性があります)、作成者にライセンスの追加を要求するか、依存関係を明確にライセンスされている代替のものに置き換えます。
MIT ライセンスのパッケージの帰属を示す必要がありますか?
はい。 MIT およびほとんどの寛容なライセンスでは、ソフトウェアを配布するときに著作権表示とライセンス テキストを含める必要があります。 Web アプリケーションの場合、これは通常、THIRD-PARTY-NOTICES ファイル、またはすべてのオープンソース コンポーネントとそのライセンスをリストしたページを含めることを意味します。
コンプライアンス プログラムの構築
四半期ごとのコンプライアンスレビュー
- すべてのプロジェクトの SBOM を再生成
- 前回のレビュー以降に追加された 新しい依存関係をスキャン
- 更新されたパッケージで ライセンスの変更を確認
- 表示された「不明」ライセンスを確認します
- 新しいライセンスが見つかった場合は、承認されたライセンス リストを更新します
- 監査証跡のために SBOM スナップショットをアーカイブ
コンプライアンスの役割
| 役割 | 責任 |
|---|---|
| エンジニアリングリーダー | PR での依存関係の追加をレビューする |
| 法務・コンプライアンス | 承認されたライセンスのリストを管理し、エッジケースをレビューします |
| セキュリティ | ライセンス スキャンと同時に脆弱な依存関係をスキャンします。 |
| プロダクトオーナー | 条件付きライセンスが製品に受け入れられるかどうかを決定します |
小規模なチームの場合、軽量なコンプライアンス プログラムは四半期あたり 2 ~ 4 時間かかり、製品の発売後またはデュー デリジェンス中にコンプライアンス問題を発見するためのはるかに大きなコストを回避できます。
次に何が起こるか
ライセンスのコンプライアンスはソフトウェア ガバナンスの 1 つの側面です。独自のコードの場合は IP 保護、ベンダー ソフトウェアの場合は SaaS 契約の要点、セキュリティ コンプライアンスの場合は サイバーセキュリティ規制要件 と組み合わせます。
オープンソースのコンプライアンス監査および SBOM 生成サービスについては、ECOSIRE にお問い合わせください。
ECOSIRE が発行 -- 企業が責任を持ってオープンソースを使用できるよう支援します。
執筆者
ECOSIRE Research and Development Team
ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。
関連記事
監査準備チェックリスト: ERP によって監査が 60% 高速化される方法
ERP システムを使用して監査準備チェックリストを完了します。適切な文書化、管理、自動化された証拠収集により、監査時間を 60% 削減します。
Cookie 同意実装ガイド: 法的に準拠した同意管理
GDPR、eプライバシー、CCPA、および世界的な規制に準拠した Cookie 同意を実装します。同意バナー、Cookie の分類、CMP の統合について説明します。
国境を越えたデータ転送規制: 国際的なデータ フローをナビゲートする
SCC、十分性決定、BCR を使用して国境を越えたデータ転送規制をナビゲートし、GDPR、英国、および APAC 準拠のための転送影響評価を行います。
Compliance & Regulationのその他の記事
監査準備チェックリスト: ERP によって監査が 60% 高速化される方法
ERP システムを使用して監査準備チェックリストを完了します。適切な文書化、管理、自動化された証拠収集により、監査時間を 60% 削減します。
Cookie 同意実装ガイド: 法的に準拠した同意管理
GDPR、eプライバシー、CCPA、および世界的な規制に準拠した Cookie 同意を実装します。同意バナー、Cookie の分類、CMP の統合について説明します。
国境を越えたデータ転送規制: 国際的なデータ フローをナビゲートする
SCC、十分性決定、BCR を使用して国境を越えたデータ転送規制をナビゲートし、GDPR、英国、および APAC 準拠のための転送影響評価を行います。
地域別のサイバーセキュリティ規制要件: グローバル ビジネス向けのコンプライアンス マップ
米国、EU、英国、APAC、中東にわたるサイバーセキュリティ規制をナビゲートします。 NIS2、DORA、SEC ルール、重要なインフラストラクチャ要件、コンプライアンスのタイムラインをカバーします。
データ ガバナンスとコンプライアンス: テクノロジー企業のための完全ガイド
コンプライアンス フレームワーク、データ分類、保持ポリシー、プライバシー規制、テクノロジー企業向けの実装ロードマップを網羅した完全なデータ ガバナンス ガイド。
データ保持ポリシーと自動化: 必要なものを保持し、必要なものを削除
法的要件、保持スケジュール、自動適用、GDPR、SOX、HIPAA のコンプライアンス検証を備えたデータ保持ポリシーを構築します。