Skip to main content

Bereitstellen von Webhooks an private Systeme

Um die Gefährdung deines privaten Systems im Internet zu begrenzen, kannst du einen Reverseproxy verwenden, um Webhooks von GitHub an dein privates System weiterzuleiten.

Informationen zur Integration in private Systeme über Reverseproxy

Möglicherweise möchtest du GitHub-Webhooks an private Systeme übermitteln, auf die nicht direkt über das Internet zugegriffen werden kann, z. B. CI-Systeme, Arbeitsverwaltungstools und benutzerdefinierte Apps. Du kannst einen Reverseproxy verwenden, um Webhook-Nutzlasten von GitHub zu empfangen und an dein privates System zu übermitteln.

Ein Reverseproxy ist ein Webserver, der sich zwischen einem Client und einer Anwendung befindet. Der Reverseproxy empfängt Anforderungen vom Client und leitet sie an die Anwendung weiter. Dadurch wird sichergestellt, dass keine direkte Kommunikation zwischen Clients im Internet und der zugrunde liegenden Anwendung erfolgt. Eine Vielzahl von Systemen kann einen Reverseproxy bereitstellen, einschließlich:

  • Webserver, z. B. nginx
  • API-Gateways
  • kostenlose Open-Source-Überlagerungsnetzwerke wie OpenZiti
  • kommerzielle Eingangsverwaltungstools wie ngrok
  • kostenlose Open-Source-Eingangsverwaltungstools wie zrok

Die Konfiguration des Reverseproxys variiert je nach dem verwendeten System.

Sichern des Datenverkehrs zu deinem Reverseproxy

Bei der Bereitstellung eines Reverseproxys solltest du alle vom Reverseproxyanbieter empfohlenen Methoden befolgen, um den zugrunde liegenden Proxyserver zu sichern. Darüber hinaus solltest du die folgenden Schritte ausführen, um zu überprüfen, ob nur Anforderungen von GitHub an deine Anwendung weitergeleitet werden.

Einschränken des eingehenden Datenverkehrs auf GitHub-Webhooks

Du solltest deinen Reverseproxy so konfigurieren, dass nur HTTPS POST-Anforderungen aus der Teilmenge von GitHub-IP-Bereichen zugelassen werden, die zum Bereitstellen von Webhooks verwendet werden. Dadurch wird sichergestellt, dass dein Reverseproxy keine anderen Anforderungen verarbeitet oder weiterleitet.

Der /meta-Endpunkt gibt ein JSON-Objekt zurück, das die IP-Bereiche von GitHub auflistet. IP-Bereiche, die zum Bereitstellen von Webhooks verwendet werden, werden im hooks-Element aufgeführt.

Überprüfen von Webhook-Nutzlasten

Wenn dein Webhook mit einem geheimen Token konfiguriert ist, enthält GitHub einen kryptografischen Hash jeder Webhook-Nutzlast. Du solltest diesen Hash verwenden, um die von GitHub empfangene Nutzlast zu überprüfen, bevor eine Aktion von deinem privaten System ausgeführt wird. Weitere Informationen findest du unter Validierung von Webhook-Zustellung.

Du kannst die Nutzlastüberprüfung entweder auf dem Reverseproxy oder auf deinem privaten System implementieren.