リバース プロキシを使用したプライベート システムとの統合について
GitHub Webhook を、インターネットから直接アクセスできないプライベート システム (CI システム、作業管理ツール、カスタム アプリなど) に配信できます。 リバース プロキシを使用して、GitHub から Webhook ペイロードを受信し、プライベート システムに配信できます。
リバース プロキシは、クライアントとアプリケーションの間に配置される Web サーバーです。 リバース プロキシは、クライアントから要求を受信し、アプリケーションに転送します。 これにより、インターネット上のクライアントと基盤となるアプリケーションの間で直接通信が行われなくなります。 リバース プロキシには、次のようなさまざまなシステムを使用できます。
- nginx などの Web サーバー
- API ゲートウェイ
- OpenZiti などの無料のオープンソース オーバーレイ ネットワーク
- ngrok などの商用のイングレス管理ツール
- zrok などの無料のオープンソースのイングレス管理ツール
リバース プロキシを構成する方法は、使用しているシステムによって異なります。
リバース プロキシへのトラフィックのセキュリティ保護
リバース プロキシをデプロイするときは、リバース プロキシ プロバイダーが推奨するすべてのプラクティスに従って、基盤となるプロキシ サーバーをセキュリティで保護する必要があります。 さらに、次の手順を実行して、GitHub からの要求のみがアプリケーションに転送されることを確認する必要があります。
受信トラフィックを GitHub Webhook に制限する
Webhook の配信に使用される GitHub IP 範囲のサブセットからの HTTPS POST 要求のみを許可するようにリバース プロキシを構成する必要があります。 これにより、リバース プロキシが他の要求を処理または転送しないようにします。
/meta
エンドポイントは、GitHub の IP 範囲を一覧表示する JSON オブジェクトを返します。 Webhook の配信に使用される IP 範囲が hooks
要素に一覧表示されます。
Webhook ペイロードの検証
Webhook がシークレット トークンで構成されている場合、GitHub には各 webhook ペイロードの暗号化ハッシュが含まれます。 このハッシュを使用して、プライベート システムがアクションを実行する前に、GitHub から受信したペイロードを検証する必要があります。 詳しくは、「Webhook 配信を検証する」を参照してください。
ペイロード検証は、リバース プロキシまたはプライベート システムのいずれかに実装できます。