Zabezpieczanie ładunków elementu webhook za pomocą wpisu tajnego

Ukończone

Po skonfigurowaniu funkcji do odbierania ładunków będzie nasłuchiwać wszelkich ładunków wysłanych do skonfigurowanego punktu końcowego. Ze względów bezpieczeństwa możesz ograniczyć żądania do tych pochodzących z usługi GitHub. Istnieje kilka sposobów, aby to osiągnąć. Na przykład możesz wybrać opcję zatwierdzanie żądań z adresu IP usługi GitHub. Łatwiejszą metodą będzie ustawienie tokenu wpisu tajnego oraz sprawdzanie poprawności żądania przy użyciu tego tokenu.

W przykładowym scenariuszu kierownictwo działu IT jest zadowolone z funkcji wyzwalanej przez element webhook utworzonej przez Ciebie w aplikacji usługi Azure Functions. Wszystkie informacje dotyczące aktualizacji firmowej strony typu wiki są analizowane przez tę funkcję i wysyłane do firmy za każdym razem, gdy zostanie wyzwolone zdarzenie Gollum. Kierownictwo zapytało, jak bezpieczne są informacje przekazywane z usługi GitHub. Poproszono Cię o znalezienie sposobu na zabezpieczanie informacji oraz upewnianie się, że aktualizacje są wysyłane rzeczywiście z usługi GitHub.

W tej części dowiesz się, jak zabezpieczyć ładunek elementu webhook przy użyciu wpisu tajnego oraz jak sprawdzać poprawność ładunków z usługi GitHub.

Wpisy tajne elementu webhook

Ustawienie wpisu tajnego elementu webhook umożliwia upewnienie się, że żądania POST wysyłane na adres URL ładunku pochodzą z usługi GitHub. Po ustawieniu wpisu tajnego otrzymasz nagłówek x-hub-signature w żądaniu POST elementu webhook.

W usłudze GitHub możesz ustawić pole wpisu tajnego, przechodząc do repozytorium, w którym skonfigurowaliśmy element webhook, a następnie edytując element webhook. Pokażemy Ci, jak to zrobić, w przykładzie w następnym ćwiczeniu.

Weryfikowanie ładunków z usługi GitHub

Po ustawieniu tokenu wpisu tajnego usługa GitHub będzie używać go do utworzenia sygnatury skrótu dla każdego ładunku. Ta sygnatura skrótu jest przekazywana wraz z każdym żądaniem w nagłówkach jako x-hub-signature.

Gdy funkcja odbiera żądanie, należy obliczyć skrót przy użyciu wpisu tajnego i upewnić się, że pasuje do skrótu w nagłówku żądania. Usługa GitHub używa szyfrowania szesnastkowego HMAC SHA1 do obliczania skrótu, więc należy obliczyć skrót w ten sam sposób, korzystając z klucza wpisu tajnego i treści ładunku. Sygnatura skrótu rozpoczyna się od tekstu sha1=.