Dependabot でイベントをトリガーするときの制限事項
Dependabot は、pull request とコメントで GitHub Actions ワークフローをトリガーできます。ただし、特定のイベントは異なる方法で処理されます。
`github.actor == 'dependabot[bot]'`、`pull_request`、`pull_request_review`、`pull_request_review_comment`、`push`、`create`、および `deployment` イベントを使い Dependabot によって開始されるワークフロー (`deployment_status`) の場合、次の制限が適用されます。
*
GITHUB_TOKEN は、既定で読み取り専用のアクセス許可を持ちます。
-
シークレットは、Dependabot シークレットから設定されます。 GitHub Actions シークレットは使用できません。
`github.actor == 'dependabot[bot]'` イベントを使い Dependabot によって開始されたワークフロー (`pull_request_target`) については、pull request のベース参照が Dependabot によって作成された場合 (`github.event.pull_request.user.login == 'dependabot[bot]'`)、`GITHUB_TOKEN` は読み取り専用であり、シークレットは使用できません。
これらの制限は、ワークフローが別のアクターによって再実行された場合でも適用されます。
詳細については、「GitHub Actions およびワークフローのセキュリティ保護の維持: pwn 要求の阻止」を参照してください。
セルフホステッド ランナーで Dependabot を使用するための要件
セルフホステッド ランナーを使用して Dependabot updates を生成するには、システム、ネットワーク、証明書を適切に構成する必要があります。
システム要件
Dependabot ランナーのために使用する 仮想マシン (VM) は、セルフホステッド ランナーの要件を満たす必要があります。 さらに、次の要件も満たしている必要があります。
-
Linux オペレーティング システム
-
x64 アーキテクチャ
-
Docker がランナー ユーザーのアクセス権を使用してインストールされていること:
- Docker をルートレス モードでインストールし、
root権限なしで Docker にアクセスするようにランナーを構成することをお勧めします。 - または、Docker をインストールしてから、Docker を実行するための昇格権限をランナー ユーザーに付与します。
- Docker をルートレス モードでインストールし、
CPU とメモリの要件は、特定の VM にデプロイする同時実行ランナーの数によって異なります。 ガイダンスとしては、1 台の 2 CPU 8 GB マシンに 20 台のランナーを正常に設定できました。ただし、最終的に CPU とメモリの要件は更新対象のリポジトリによって大きく異なります。 エコシステムによっては、他のエコシステムよりも多くのリソースが必要になります。
14 を超える同時実行ランナーを 1 つの VM に指定する場合は、Docker が作成できるネットワークの既定数を増やすように Docker の /etc/docker/daemon.json 構成も更新する必要があります。
{
"default-address-pools": [
{"base":"10.10.0.0/16","size":24}
]
}
ネットワークの要件
Dependabot ランナーは、パブリック インターネット、GitHub.com、および Dependabot updates 更新プログラムで使用されるすべての内部レジストリへのアクセスが必要です。 内部ネットワークに対するリスクを最小限に抑えるには、仮想マシン (VM) から内部ネットワークへのアクセスを制限する必要があります。 これにより、ハイジャックされた依存関係をランナーがダウンロードした場合に、内部システムが損害を受ける可能性が減少します。
また、Dependabot security updates のジョブが失敗しないように、dependabot-actions.githubapp.com へのアウトバウンド トラフィックを許可する必要があります。 詳しくは、「セルフホステッド ランナー リファレンス」をご覧ください。
証明書の構成
Dependabot が自己署名証明書を使用するレジストリと通信する必要がある場合、それらの証明書は、Dependabot ジョブを実行するセルフホステッド ランナーにもインストールする必要があります。 このセキュリティにより、接続が強化されます。 また、ほとんどのアクションは JavaScript で記述され、オペレーティング システムの証明書ストアを使用しない Node.js を使用して実行されるため、証明書を使用するように Node.js を構成する必要があります。