Skip to main content

オープンソース ライセンス ポリシーの構成

オープンソース ライセンス ポリシーを作成して適用し、依存関係に使用を許可するライセンスを管理します。

この機能を使用できるユーザーについて

Organizations owned by a GitHub Enterprise account with GitHub Code Security enabled

メモ

オープン ソース ライセンスのコンプライアンスは パブリック プレビュー であり、変更される可能性があります。

前提条件

ライセンス ポリシーを構成する前に、次のことを確認します。

  • お客様の組織には GitHub Code Security があります
  • エンタープライズまたは組織のポリシーとルールセットを管理するアクセス権がある
  • 評価するリポジトリに対して依存関係グラフが有効になっている

ライセンスコンプライアンスについて

オープン ソース ライセンス コンプライアンスを使用すると、依存関係で使用できるライセンスを指定するポリシーを定義できます。

ポリシーがルールセットで適用されると、 GitHub はパッケージ マニフェストを変更するプル要求を評価し、直接的および推移的な依存関係をチェックし、検出されたライセンスをポリシーと比較します。 非準拠の依存関係を持つプル要求は、違反が解決されるまでブロックされたままになります。

通常、違反は次の方法で解決されます。

  • 準拠している依存関係を使用するように pull request を更新する
  • パッケージまたはライセンスの例外の承認
  • 必要に応じてライセンスを許可するようにポリシーを更新する

ライセンス ポリシーを作成する

  1. 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
  2. ページの上部にある [ポリシーの] をクリックします。
  3. サイドバーで[ ライセンスコンプライアンス]をクリックします。
  4. [ 既定のポリシー] をクリックします。
  5. [ ライセンス ポリシーの編集] ページで、[ ライセンスの追加 ] をクリックし、[ 一覧から選択] を選択します
  6. ライセンス ピッカーから、許可するライセンスを選択します。 この一覧のライセンスは、企業環境での使用に関する一般的なリスク レベルに基づいて分類されますが、これは純粋に情報提供であり、法的助言を構成するものではありません。 ポリシー ガイダンスについては、常に組織の法務チームに問い合わせてください
  7. 変更を保存。

または、別のツールから既存のライセンス ポリシーがある場合は、SPDX 式の一覧としてインポートできます。

  1. [ ライセンス ポリシーの編集] ページで、[ ライセンスの追加 ] をクリックし、[ 手動入力] を選択します。
  2. 1 つ以上の SPDX ライセンス識別子を新しい行に入力します。
  3. 変更を保存。

追加するライセンスは、ベースライン ポリシーを形成します。 後でアラートを処理するときに、パッケージ レベルの例外を追加できます。

Enterprise オープン ソース ライセンス マネージャーのアクセスを構成する

  1. 企業ページに移動してください。 たとえば、GitHub.com の [Enterprise] ページから。
  2. ページ上部で、 People をクリックします。
  3. 左側のサイドバーで、[エンタープライズ ロール クリックします。
  4. [ ロールの割り当て] をクリックします。
  5. [ ロールの割り当て] をクリックします。
  6. Enterprise Open Source License Manager ロールを選択します。
  7. ロールを割り当てるユーザーまたはチームを選択します。
  8. [ ロールの割り当て] をクリックします。

また、このロールを割り当てると、レビュー担当者は通知を要求し、却下要求に迅速に応答できるようになります。

必要に応じて、カスタム プロパティを使用してリポジトリごとのロールアウトを制御する

段階的なロールアウトが必要な場合は、リポジトリのカスタム プロパティを使用して、各リポジトリが非アクティブ、評価、またはアクティブの適用モードであるかどうかを制御します。

  1. GitHub で、organization のメイン ページに移動します。

  2. Organization 名の下で、[ Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    組織のプロファイルのタブのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で囲まれています。

  3. 左側のサイドバーの "Code, planning, and automation" セクションで [ Repository] をクリックしてから、[Custom properties] をクリックします。

    組織の設定ページのスクリーンショット。 サイドバーでは、[カスタム プロパティ] というラベルの付いたリンクがオレンジ色の枠線で囲まれています。

  4. open_source_license_complianceなど、単一選択のリポジトリ カスタム プロパティを作成します。

  5. inactiveevaluate、およびactiveの値を追加します。

  6. 既定値を inactive に設定します。

  7. プロパティ値を変更できるユーザーを決定します。

  8. ロールアウト ステージに基づいて、リポジトリにプロパティ値を割り当てます。

ルールセットを使用してプル要求にポリシーを適用する

評価モード用とアクティブ モード用の 2 つのルールセットを作成することをお勧めします。 ロールアウトを制御するカスタム プロパティを作成した場合は、ここでこれらのプロパティをターゲットにすることができます。

  1. 適用を有効にしたいスコープのルールセット ページに移動します。

  2. ブランチ ルールセットを作成します。

  3. ルール セット名の下で、 強制状態を設定します。

    • 最初のルール セットでは、[ 評価] を選択します。
    • 2 番目のルール セットで、[ アクティブ] を選択します。
  4. リポジトリをターゲットにする方法を選択します。

    • カスタム プロパティを使用する場合は、次の open_source_license_complianceでターゲットを指定します。
      • 評価モードルールセットの場合、プロパティ値が evaluateされているターゲット リポジトリ。
      • アクティブ モードルールセットの場合、プロパティ値が activeされているターゲット リポジトリ。
    • カスタム プロパティを使用しない場合は、リポジトリ パターンまたは明示的なリポジトリ選択によってリポジトリをターゲットします。
  5. マージする前に、[ライセンスコンプライアンスの結果を要求する] を有効にします。

  6. 変更を保存。

ルールセットの詳細については、 ルールセットについて組織内のリポジトリのルールセットを作成する を参照してください。

ポリシーの適用をテストする

  1. ターゲット リポジトリで、依存関係マニフェストを変更するプル要求を開きます。
  2. pull request 注釈にライセンス コンプライアンスの結果が表示されることを確認します。
  3. 依存関係がポリシーに違反している場合は、生成されたアラートを確認し、例外が必要な場合は無視を要求します。

違反が未解決の場合、プル要求はブロックされたままになります。

例外要求を確認して処理する

  1. エンタープライズ オープン ソース ライセンス マネージャーとして、エンタープライズ セキュリティ ビューで保留中のライセンス アラート要求の一覧を開きます。
  2. 各要求を確認し、拒否するか承認するかを決定します。
  3. 承認する場合は、例外をパッケージ、ライセンス、またはパッケージ パターンに適用するかどうかを選択します。
  4. リポジトリ スコープとエンタープライズ スコープのどちらで例外を適用するかを選択します。
  5. 例外を保存します。

要求が承認されると、他の必要なチェックが失敗しない限り、アラートは閉じられ、pull request はブロック解除されます。

リポジトリの有効なポリシーを確認する

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. サイドバーの [セキュリティ] で、[ ライセンス ポリシー] をクリックします。

  4. そのリポジトリに対して有効なポリシーと例外セットの組み合わせを確認します。

  5. 必要に応じて、エンタープライズ レベルまたはリポジトリ レベルのポリシーを更新します。

詳細については、次を参照してください。