Schützen von Webhooknutzlasten mit einem Geheimnis
Nachdem Ihre Funktion für den Empfang von Nutzlasten konfiguriert ist, lauscht sie auf sämtliche Nutzdaten, die an den von Ihnen konfigurierten Endpunkt gesendet werden. Aus Sicherheitsgründen sollten Sie ausschließlich Anforderungen von GitHub entgegennehmen. Hierfür gibt es mehrere Möglichkeiten. Sie können beispielsweise auswählen, Anforderungen von GitHub-IP-Adressen zuzulassen. Eine einfachere Methode ist, ein geheimes Token einzurichten und die Anforderung mithilfe dieses Tokens zu überprüfen.
Im Beispielszenario ist die Leitung Ihrer IT-Abteilung zufrieden mit der von Ihnen in einer Azure Functions-App erstellten Funktion, die durch einen Webhook ausgelöst wird. Alle Informationen in Bezug auf Updates der Unternehmens-Wiki werden von dieser Funktion analysiert und immer dann an das Unternehmen gesendet, wenn das Gollum-Ereignis ausgelöst wird. Die Geschäftsleitung möchte wissen, wie sicher die von GitHub übermittelten Informationen sind. Sie sollen herausfinden, wie die Informationen geschützt werden können und wie überprüft werden kann, dass die Updates von GitHub sind.
In dieser Lerneinheit erfahren Sie, wie Sie Ihre Webhooknutzlast mit einem Geheimnis sichern und Nutzlasten von GitHub überprüfen können.
Webhook-Geheimnisse
Durch das Festlegen eines Webhookgeheimnisses können Sie sicherstellen, dass POST-Anforderungen, die an die Nutzlast-URL gesendet werden, von GitHub sind. Wenn Sie ein Geheimnis festlegen, erhalten Sie den x-hub-signature
-Header in der Webhook-POST-Anforderung.
Auf GitHub können Sie das Feld secret (Geheimnis) festlegen, indem Sie zu dem Repository navigieren, in dem Sie Ihren Webhook eingerichtet haben, und ihn bearbeiten. Wir zeigen Ihnen in der nächsten Übung, wie Sie dies in unserem Beispiel tun.
Überprüfen von GitHub-Nutzdaten
Wenn Ihr geheimes Token festgelegt ist, verwendet GitHub dieses zum Erstellen einer Hashsignatur für jede Nutzlast. Diese Hashsignatur wird in den Headern zusammen mit jeder Anforderung als x-hub-signature
übergeben.
Wenn Ihre Funktion eine Anforderung empfängt, müssen Sie den Hash mithilfe Ihres Geheimnisses berechnen und sicherstellen, dass es dem Hash im Anforderungsheader entspricht. GitHub verwendet einen hexadezimalen HMAC SHA-1-Hash für die Berechnung des Hashs, weshalb Sie Ihren Hash auf die gleiche Weise berechnen müssen, indem Sie den Schlüssel Ihres Geheimnisses und den Text Ihrer Nutzlast verwenden. Die Hashsignatur beginnt mit dem Text sha1=
.