Skip to main content

プライベート システムへの Webhook の配信

プライベート システムのインターネットへの公開を制限するために、リバース プロキシを使用して Webhook を GitHub からプライベート システムに転送できます。

リバース プロキシを使用したプライベート システムとの統合について

GitHub Webhook を、インターネットから直接アクセスできないプライベート システム (CI システム、作業管理ツール、カスタム アプリなど) に配信できます。 リバース プロキシを使用して、GitHub から Webhook ペイロードを受信し、プライベート システムに配信できます。

リバース プロキシは、クライアントとアプリケーションの間に配置される Web サーバーです。 リバース プロキシは、クライアントから要求を受信し、アプリケーションに転送します。 これにより、インターネット上のクライアントと基盤となるアプリケーションの間で直接通信が行われなくなります。 リバース プロキシには、次のようなさまざまなシステムを使用できます。

リバース プロキシを構成する方法は、使用しているシステムによって異なります。

リバース プロキシへのトラフィックのセキュリティ保護

リバース プロキシをデプロイするときは、リバース プロキシ プロバイダーが推奨するすべてのプラクティスに従って、基盤となるプロキシ サーバーをセキュリティで保護する必要があります。 さらに、次の手順を実行して、GitHub からの要求のみがアプリケーションに転送されることを確認する必要があります。

受信トラフィックを GitHub Webhook に制限する

Webhook の配信に使用される GitHub IP 範囲のサブセットからの HTTPS POST 要求のみを許可するようにリバース プロキシを構成する必要があります。 これにより、リバース プロキシが他の要求を処理または転送しないようにします。

/metaエンドポイントは、GitHub の IP 範囲を一覧表示する JSON オブジェクトを返します。 Webhook の配信に使用される IP 範囲が hooks 要素に一覧表示されます。

Webhook ペイロードの検証

Webhook がシークレット トークンで構成されている場合、GitHub には各 webhook ペイロードの暗号化ハッシュが含まれます。 このハッシュを使用して、プライベート システムがアクションを実行する前に、GitHub から受信したペイロードを検証する必要があります。 詳しくは、「Webhook 配信を検証する」を参照してください。

ペイロード検証は、リバース プロキシまたはプライベート システムのいずれかに実装できます。