In this article
オープンソースガバナンスがセキュリティの鍵となる理由
オープンソースガバナンスとは?
オープンソースガバナンスとは、オープンソースプロジェクトを導く、広く認められたルールや慣習です。OpenSource.comによると、ガバナンスの指針を定めるには、次の問いに答える必要があります。
プロジェクトの貢献者は、どのような役割を担えるでしょうか?
各役割には、どのような資格、職務、権限、特権が伴うでしょうか?
役割への任命や解任は、どのように行われるでしょうか?
役割の定義は、どのように変更できるでしょうか?
プロジェクト全体のポリシーや手順には、どのようなものがあるでしょうか?
通常は各開発者の活動に基づいてプロジェクト内の役割が定義されると、オープンソースプロジェクトにガバナンスを適用できるようになります。
6つのガバナンスモデル
オープンソースプロジェクトのルールを定め、役割を割り当てることを、ガバナンスモデルと呼びます。Red Hatによると、ガバナンスモデルは6種類あります。
1. Do-ocracy(実行主導型): 実際に作業を行う開発者が意思決定を担うという考え方に基づくガバナンスモデルです。この場合、ピアレビューがガバナンスにおいて大きな役割を果たします。一方で、より多くの指針を必要とする開発者にとっては、運営が難しい場合もあります。
2. Founder-leader(創設者主導型): 新しいプロジェクトや、貢献者が少数のプロジェクトで最もよく使われるオープンソースのガバナンスモデルです。このソフトウェアモデルでは、通常、最初に参加した個人や開発チームがガバナンスを担うため、責任の所在が明確です。ただし、創設者がソフトウェアのライフサイクル全体にわたってガバナンスを独断で決める、オープンソースの独裁体制につながるおそれもあります。
3. 自己任命型の評議会または委員会: このオープンソースソフトウェアのガバナンスモデルでは、プロジェクトの開発工程を監督するリーダーシップ委員会を設けます。欠点は、委員会がチームの他のメンバーの意見や参加を排除してしまう可能性があることです。
4. 選挙型: このモデルでは、選挙を通じてコミュニティがガバナンスの担い手を選びます。複数の開発者が同様のスキルや役割を持ち、コミュニティからの意見が多く寄せられるプロジェクトでよく採用されています。意思決定の公平性が最も高いモデルである一方、責任や気を散らす要素が増えたり、コミュニティのメンバーがリーダーの座を争うことで内部対立が起きたりすることもあります。
5. 企業支援型: このソフトウェアガバナンスモデルでは、企業や業界団体がオープンソースライセンス契約のもとでソフトウェアの配布を担います。ソフトウェア開発を管理できる一方、オープンソースプロジェクトに一般的な外部からの貢献が制限されます。
6. 財団支援型: このモデルは非営利団体が運営し、ガバナンスは多くの場合、単一の組織体制によって厳格に管理されます。これは、こうした団体の法人格に関する要件によるものです。
リーダーシップの役割を正式に定める方法
オープンソースソフトウェアプロジェクトは協業を前提に設計されていますが、ガバナンスはその方向性を示します。リーダーはプロジェクトを導き、期限を守り、ポリシーとガイドラインが遵守されるようにします。
各ガバナンスモデルには、リーダーを選ぶための独自のプロセスがあります。次のとおりです。
Do-ocracy(実行主導型): 実際に活動することでリーダーシップが築かれます。プロジェクトへの開発者の貢献が受け入れられるほど、プロジェクトのコミュニティ内で影響力が高まります。
Founder-Leader(創設者主導型): 多くの場合、プロジェクトを始めた人が自然とリーダーになります。
自己任命型: 成熟した長期運営のオープンソースプロジェクトでは、ガバナンスのプロセスを説明するドキュメントがすでに整備されていることがよくあります。貢献がどのようにリーダーの役割につながるかを学ぶため、自ら行動を起こすかどうかは開発者次第です。
選挙型: 選挙の手順が明確に定められており、選挙の実施時期や対象となる役割が決まっています。選挙結果は、プロジェクトに関するオンライン資料で簡単に確認できます。候補者は通常、リーダー職に立候補する前に、コミュニティ内で実績を築いています。
企業支援型: ガバナンスはプロジェクトを立ち上げた企業が担うため、リーダーシップはその企業と結びついています。
財団支援型: ガバナンスは財団が直接担うか、自己任命型の評議会が担います。
希望するすべてのプロジェクト貢献者に、ガバナンスの役割を担う機会を設けるべきです。ただし、その前に開発者はプロジェクトに参加する必要があります。参加を希望する開発者は、GitHubやプロジェクトの公式サイトで確認できるメーリングリストに登録しましょう。
プロジェクトへの貢献を始めたら、その内容を記録する必要があります。Open Source Contributions Logなどのツールを使って記録できます。貢献を追跡することで、オープンソースガバナンスにおけるリーダー職を目指す人は、自分の実績を証明できます。
オープンソースガバナンスにおける役割
オープンソースソフトウェアのガバナンスでは、プロジェクトの貢献者が正式な役割を担います。代表的な役割は次のとおりです。
メンテナー: オープンソースプロジェクトで多くのコードを書いた人や、プロジェクトのドキュメントを作成した人、さらにはプロジェクトの普及を推進する人が務める場合があります。プロジェクト全体の方向性に責任を持ち、プロジェクトをより良くするために必要なことを行います。
コントリビューター: 問題へのコメントからコードの作成まで、プロジェクトに貢献するすべての人を指します。プロジェクトに価値をもたらせば、コントリビューターとしての役割を担います。
コミッター: 特別なコミット権限を持ち、プロジェクトへの深く継続的な貢献を示してきた人です。
オープンソースプロジェクトを保護する4つの方法
オープンソースソフトウェアの魅力は、関わりたい人なら誰でも参加できることです。同時に、誰でも貢献できることが、オープンソースプロジェクトにとって最大のリスクでもあります。オープンソースガバナンスには、脅威からプロジェクトを守るための対策も含まれます。リスクを防ぐには、次のような手段があります。
ユーザーや貢献者の監督、プロジェクトのドキュメント管理など、セキュリティを考慮したプロジェクトのポリシーを策定します。リーダーの役割を担う人が、ポリシーを適用する権限を持つべきです。この役割には、メンテナーが適しています。
脆弱性をテスト、追跡し、修正します。ソフトウェア構成分析(SCA)ツールを使うと、開発者はソフトウェア内のオープンソースコンポーネントを管理、分析できます。SCAツールでは、ライセンスの確認や脆弱性リスクの評価などが可能です。
プルリクエストを作成できるユーザーを制限し、対応する前に内容を評価します。SCAツールや静的アプリケーションセキュリティテスト(SAST)ツールでプルリクエストをスキャンし、脆弱性を検出することもできます。
プロジェクトへの参加前に貢献者を審査し、信頼できるユーザーにのみアクセスを許可します。
オープンソースの依存関係をスキャンして脆弱性を検出
Snykを使って、脆弱性を自動で検出・優先順位付けし、無料で修正しましょう。
ガバナンスを導入するタイミング
オープンソースプロジェクトでは、できるだけ早くガバナンスを導入すべきです。ドキュメントの作成が早いほど、期待事項や目標を定めやすくなります。早期にガバナンスを導入すれば、役割も明確にできます。企業や財団が支援するプロジェクトの場合は、立ち上げ前に組織内で話し合い、プロセスを明確にして、プロジェクトの進行に応じた道筋を定めておきましょう。
企業からの貢献とガバナンスモデル
オープンソースソフトウェアは、さまざまなユーザーに利用されています。企業ごとにソフトウェアに求めるものが異なるため、企業からの貢献によってプロジェクトの範囲が変わることもあります。また、企業がプロジェクトの貢献者として参加させるために、開発者を雇用している場合もあります。
こうした貢献も、他の貢献と同様に扱うべきです。ガバナンスは、引き続き貢献の価値と参加状況に基づいて運営されます。
Snykレポート
オープンソースセキュリティの現状 2022
The Linux Foundationと共同で、ソフトウェアサプライチェーンの複雑さとリスクを分析します。
オープンソースガバナンスを始める
プロプライエタリソフトウェアの90%以上がオープンソースコンポーネントを使用しています。そのため、コードをオープンソースとして公開するすべての企業において、IT部門や経営幹部はオープンソースガバナンスを優先事項とすべきです。オープンソースガバナンス、プロジェクトの貢献者、リーダーシップに関するポリシーを明確に定め、十分に周知しましょう。また、オープンソースソフトウェアの開発に関わるすべての人が、プロジェクトでの役割を把握している必要があります。
オープンソースガバナンスのポリシーは、セキュリティリスクから運用リスクまで、起こり得る問題への対策となります。ガバナンスが不十分だと、ソフトウェア開発サイクルが遅れ、リリースが延期されたり、製品のリリース後に修正が必要になったりする可能性があります。
ガバナンスモデルを導入することで、法的な問題にも対処できます。たとえば、組織のガバナンスポリシーには、依存関係に潜む脆弱性やライセンスの問題を把握するためのSCAツールを含めるべきです。Snyk Open Sourceは、使用中のオープンソースパッケージを可視化し、ライセンスコンプライアンスと依存関係の管理を支援します。