Защита полезных данных веб-перехватчика с помощью секрета

Завершено

После настройки функции для получения полезных данных она будет ожидать передачи полезных данных, отправляемых в настроенную конечную точку. Из соображений безопасности можно разрешить только запросы, поступающие из GitHub. Это можно сделать несколькими способами. Например, вы можете подтверждать запросы с IP-адреса GitHub. Это проще сделать, настроив секретный токен и проверив запрос с помощью этого токена.

В примере сценария руководство вашего ИТ-отдела довольно функцией, активируемой веб-перехватчиком, которую вы создали в приложении Функций Azure. Все сведения об обновлениях на вики-сайте компании анализируются этой функцией и отправляются в компанию при каждой активации события Gollum. Руководство интересуется, насколько безопасны сведения, передаваемые из GitHub. Оно попросило вас найти способ обеспечить безопасность данных и убедиться, что GitHub отправляет обновления.

В этом модуле вы узнаете, как защитить полезные данные веб-перехватчика с помощью секрета и проверить полезные данные из GitHub.

Секреты веб-перехватчика

После настройки секрета веб-перехватчика POST-запросы будут отправляться на URL-адрес полезных данных из GitHub. После настройки секрета вы получите заголовок x-hub-signature в запросе POST веб-перехватчика.

В GitHub поле секрета можно настроить, перейдя в репозиторий, в котором вы настроили веб-перехватчик, и изменив веб-перехватчик. Мы покажем, как это сделать для нашего примера в следующем упражнении.

Проверка полезных данных из GitHub

Если ваш секретный токен настроен, GitHub использует его для создания хэш-подписи для всех полезных данных. Эта хэш-подпись передается вместе с каждым запросом в заголовках в виде x-hub-signature.

Когда функция получает запрос, вам необходимо вычислить хэш-код, используя свой секрет, и убедиться, что он совпадает с хэш-кодом в заголовке запроса. Для вычисления хэша GitHub использует шестнадцатеричный хэш-код HMAC-SHA1, поэтому вам необходимо вычислить свой хэш-код таким же образом, используя ключ секрета и текст полезных данных. Хэш-подпись начинается с текста sha1=.