Skip to main content

ワークフロー実行の保護

ワークフロー実行保護を使用すると、 GitHub Actions ワークフローをトリガーできるユーザーと、組織全体で実行できるイベントを制御できます。

メモ

ワークフロー実行保護は パブリック プレビュー であり、変更される可能性があります。

ワークフロー実行の保護について

ワークフロー実行保護を使用すると、 GitHub Actions ワークフローをトリガーできるユーザーと、ワークフローの実行を許可するイベントを制御する許可リストを定義できます。 以前は、ワークフローをトリガーしたコミット内のワークフロー ファイルに基づいてワークフローが実行され、リポジトリアクセス権を持つ攻撃者がそのファイルを変更して悪意のあるコードを実行する可能性があります。 ワークフロー実行保護は、そのギャップを埋めます。 管理者はルールを定義し、 GitHub Actions はワークフローの実行前にそれらを評価するため、承認されていないアクターやイベントが実行に到達することはありません。

ワークフロー実行保護は、エンタープライズ、組織、リポジトリのレベルで使用できます。

ルールセットによってサポートされる

ワークフロー実行保護は GitHub ルールセット フレームワーク上に構築されているため、ルールセットから既に知っているターゲット設定もここで動作します。 ルールセットを使用して保護を適用し、リポジトリのカスタム プロパティを使用して特定のリポジトリにスコープを設定できます。 つまり、各ワークフロー ファイルを個別に構成するのではなく、1 か所から広範な保護を適用できます。 ルールセットの一般情報については、「ルールセットについて」をご覧ください。

評価モードを使用して、ルールを適用せずにルールを実行することもできます。 評価モードでは、ルールを適用する前にブロックするルールが正確に表示されるため、既存のワークフローを中断することなくポリシーをロールアウトできます。

使用できる規則

イベントとアクターは最初の 2 つのルールであり、 GitHub 時間の経過に伴ってさらにルールを追加する予定です。

  • アクター ルール は、個々のユーザー、読み取り、保守、管理者などのリポジトリ ロール、 GitHub Apps、 Copilot、 Dependabotなど、ワークフローをトリガーできるユーザーを制御します。
  • イベント ルール は、 pushpull_requestpull_request_targetworkflow_dispatchなど、許可されるイベントを制御します。

既定では、リポジトリへの書き込みアクセス権を持つすべてのユーザーがワークフローをトリガーできます。 アクター ルールを使用すると、コードを提供するユーザーと CI を実行するユーザーを分離できるため、共同作成者にワークフローを実行する権限を付与せずに書き込みアクセス権を付与できます。

一般的な攻撃者の手法を阻止する

ワークフロー実行の保護により、いくつかの実際の攻撃パターンが中断されます。

  • プルリクエストによる汚染されたパイプライン実行。 最も頻繁に悪用されるパブリック リポジトリを含め、 pull_request_targetを制限または禁止します。
  •           **手動トリガーによる不正使用。** 信頼されていない ID がワークフローを開始できないように、 `workflow_dispatch` を保守担当者に制限します。
    
  • 信頼されていないアクターの実行。 低信頼 ID によるワークフローの完全なトリガーをブロックします。
  • 誤った構成の悪用。 正しく構成されていない単一のワークフロー ファイルをオーバーライドする中央ポリシーを適用します。

ワークフロー実行保護の構成

ワークフロー実行保護は、**** 設定の新しい GitHub Actions] セクションで構成します。 この [ポリシー] セクションは、既存の [全般 ] 設定とは別です。

  1. GitHub の右上隅にあるプロフィール画像をクリックしてから、[ Your organizations] をクリックします。

  2. 組織をクリックして選択します。

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

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

  4. 左側のサイドバーの [ アクション] で、[ ポリシー] をクリックします。

  5. ルールセットを作成し、イベントとアクターのルールを追加します。

  6. ルールセットがアクティブか評価モードかを選択し、変更を保存します。