GitHub Actions セルフホステッド ランナーでの Dependabot について
新しいリポジトリで Dependabot を有効にし、GitHub Actions を有効にすると、Dependabot は既定では GitHub Actions で実行されます。
新しいリポジトリで Dependabot が有効になっていて、GitHub Actions が無効になっている場合、Dependabot は GitHub のレガシ アプリケーションで実行され、Dependabot updates を実行します。 これにより、Dependabot updates ジョブのパフォーマンス、表示範囲、管理策は、GitHub Actions と同じようには提供されません。 Dependabot を GitHub Actions と共に使用する場合は、リポジトリで GitHub Actions を有効にしてから、リポジトリの [コード セキュリティと分析] 設定ページから "アクション ランナーの Dependabot" を有効にする必要があります。 詳しくは、「GitHub Actions ランナーの Dependabot について」をご覧ください。
Note
GitHub の今後のリリースでは、GitHub Actions を使用して常に Dependabot が実行されます。この設定を有効または無効にするオプションはなくなります。
Dependabot のセキュリティとバージョン更新プログラムを設定することで、組織とリポジトリのユーザーが、安全なコードを作成して管理できるようにします。 Dependabot updatesを使用すると、開発者は、依存関係が自動的に更新されてセキュアな状態が維持されるようにリポジトリを構成できます。 GitHub Actions で Dependabot を実行すると、パフォーマンスが向上し、Dependabot ジョブの可視性と制御が向上します。
Note
Dependabot では、Azure Virtual Network (VNET) または Actions Runner Controller (ARC) でのプライベート ネットワークの使用はサポートされていません。
プライベート レジストリと内部ネットワーク リソースへの Dependabot のアクセスをより詳細に制御するには、Dependabot を GitHub Actions セルフホステッド ランナーで実行するように構成します。
セキュリティ上の理由から、Dependabot を GitHub Actions セルフホステッド ランナーで実行する場合、Dependabot updates はパブリック リポジトリでは実行されません。
GitHub ホステッド ランナーを使用する場合のプライベート レジストリへの Dependabot アクセスの構成の詳細については、「Dependabot のプライベート レジストリの構成に関するガイダンス」を参照してください。 プライベート レジストリとしてサポートされているエコシステムの詳細については、「パブリック レジストリへの Dependabot アクセスの削除」を参照してください。
前提条件
Dependabot がインストールされ、有効になり、GitHub Actions が有効になり、使用中である必要があります。 組織の [GitHub Actions ランナーの Dependabot] 設定も有効になっている必要があります。 詳しくは、「GitHub Actions ランナーの Dependabot について」を参照してください。
組織では、アクションとセルフホステッド ランナーが特定のリポジトリでの実行を制限するようにポリシーを構成している可能性があります。これにより、Dependabot が GitHub Actions セルフホステッド ランナーで実行できなくなります。 この場合、"Dependabot on self-hosted runners" を有効にする組織またはリポジトリ レベルの設定は、ウェブ UI に表示されません。 詳しくは、「Organization について GitHub Actions を無効化または制限する」を参照してください。
Dependabot updates用のセルフホステッド ランナーの構成
GitHub Actions で Dependabot を実行するように組織またはリポジトリを構成した後、セルフホステッド ランナーで Dependabot を有効にする前に、Dependabot updates のセルフホステッド ランナーを構成する必要があります。
Dependabot ランナーのシステム要件
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 ランナーのネットワーク要件
Dependabot ランナーは、パブリック インターネット、GitHub.com、および Dependabot updates 更新プログラムで使用されるすべての内部レジストリへのアクセスが必要です。 内部ネットワークに対するリスクを最小限に抑えるには、仮想マシン (VM) から内部ネットワークへのアクセスを制限する必要があります。 これにより、ハイジャックされた依存関係をランナーがダウンロードした場合に、内部システムが損害を受ける可能性が減少します。
また、Dependabot security updates のジョブが失敗しないように、dependabot-actions.githubapp.com
へのアウトバウンド トラフィックを許可する必要があります。 詳しくは、「自己ホスト ランナーの概要」を参照してください。
Dependabot ランナーの構成の認定
Dependabot が自己署名証明書を使用するレジストリと対話する必要がある場合、それらの証明書は、Dependabot ジョブを実行するセルフホステッド ランナーにもインストールする必要があります。 このセキュリティにより、接続が強化されます。 また、ほとんどのアクションは JavaScript で記述され、オペレーティング システムの証明書ストアを使用しない Node.js を使用して実行されるため、証明書を使用するように Node.js を構成する必要があります。
Dependabot 更新プログラム用のセルフホステッド ランナーの追加
-
セルフホステッド ランナーを、リポジトリまたは組織レベルでプロビジョニングします。 詳細については、「自己ホスト ランナーの概要」および「自己ホストランナーの追加」を参照してください。
-
上記の要件を使用して、セルフホステッド ランナーを設定します。 たとえば、Ubuntu 20.04 を実行している VM では、次のようになります。
- Docker をインストールし、ランナー ユーザーが Docker にアクセスできることを確認します。 詳細については、Docker のドキュメントをご覧ください。
- ランナーがパブリック インターネットにアクセスできることと、Dependabot が必要とする内部ネットワークのみにアクセスできることを確認します。
- Dependabot が操作する必要があるレジストリに自己署名証明書をインストールします。
-
dependabot
ラベルを、Dependabot で使用する各ランナーに割り当てます。 詳しくは、「セルフホストランナーとのラベルの利用」を参照してください。 -
必要に応じて、Dependabot によってトリガーされるワークフローで、読み取り専用を上回るアクセス許可を使用し、通常提供されているシークレットにアクセスできるようにします。 詳しくは、「GitHub ActionsでのDependabotの自動化」を参照してください。
Dependabot updates のセルフホステッド ランナーの有効化
Dependabot updates のセルフホステッド ランナーを構成したら、組織レベルまたはリポジトリ レベルのセルフホステッド ランナーで Dependabot updates を有効または無効にすることができます。
[セルフホステッド ランナーでの Dependabot] 設定を無効にして再度有効にしても、新しい Dependabot の実行はトリガーされません。
リポジトリでの有効化または無効化
プライベート リポジトリのセルフホステッド ランナーで Dependabot を管理できます。
-
GitHub で、リポジトリのメイン ページに移動します。
-
リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
-
サイドバーの [セキュリティ] セクションで、 [コードのセキュリティと分析] をクリックします。
-
[Dependabot] の [セルフホステッド ランナーでの Dependabot] の右側にある [有効] または [無効] をクリックして、機能を有効または無効にします。
組織での有効化または無効化
Dependabotは、組織内のすべての既存の private リポジトリに対して、セルフホスト・ランナーで有効にできます。 次に Dependabot ジョブがトリガーされるときに、セルフホステッド ランナーで Dependabot を実行するように、GitHub Actions で Dependabot を実行するようにすでに構成されたリポジトリのみが更新されます。
Note
より大きなランナー (larger runner) を使用する場合は、組織のセルフホステッド ランナーを有効にする必要があります。 詳しくは、「GitHub Actions ランナーの Dependabot について」を参照してください。
- GitHub の右上隅で、プロフィール写真を選択し、 あなたの組織をクリックします。
- 組織の隣の [設定] をクリックします。
- サイドバーの [セキュリティ] セクションで、[ コードのセキュリティ] と [グローバル設定] をクリックしてください。
- [Dependabot] の [セルフホステッド ランナーでの Dependabot] を選択して機能を有効にするか、選択解除して無効にします。 このアクションにより、organization 内のすべての新しいリポジトリの機能が有効または無効になります。
詳しくは、「組織のグローバル セキュリティ設定の構成」を参照してください。