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

Завершено

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

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

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

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

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

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

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

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

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