Skip to main content

Bereitstellen von Webhooks an private Systeme

Um die Exposition Ihres privaten Systems gegenüber dem Internet zu begrenzen, können Sie einen Reverseproxy verwenden, um Webhooks von GitHub zu Ihrem privaten System weiterzuleiten.

Informationen zur Integration in private Systeme über Reverseproxy

Möglicherweise möchten Sie Webhooks an private Systeme übermitteln GitHub , auf die nicht direkt über das Internet zugegriffen werden kann, z. B. CI-Systeme, Arbeitsverwaltungstools und benutzerdefinierte Apps. Sie können einen Reverse-Proxy verwenden, um Webhook-Nutzlasten von GitHub zu empfangen und diese an Ihr 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 Reverse-Proxy bereitstellen, einschließlich:

  • Webserver wie nginx
  • API-Gateways
  • Kostenlose Open-Source-Overlaynetzwerke 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 Ihrem Reverse Proxy

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

Einschränken des eingehenden Datenverkehrs auf GitHub Webhooks

Sie sollten Ihren Reverse-Proxy so konfigurieren, dass nur HTTPS-POST-Anforderungen aus der Teilmenge der IP-Bereiche zugelassen werden, die zum Bereitstellen der GitHub Webhooks verwendet werden. Dadurch wird sichergestellt, dass Ihr Reverse-Proxy keine anderen Anforderungen verarbeitet oder weiterleitet.

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

Validieren von Webhook-Nutzlasten

Wenn Ihr Webhook mit einem geheimen Token konfiguriert ist, GitHub enthält er einen kryptografischen Hash jeder Webhook-Nutzlast. Sie sollten diesen Hash verwenden, um die von GitHub empfangene Nutzlast zu validieren, bevor eine Aktion von Ihrem privaten System ausgeführt wird. Weitere Informationen finden Sie unter Validierung der Webhook-Lieferungen.

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