Защита полезных данных веб-перехватчика с помощью секрета
После настройки функции для получения полезных данных он прослушивает все полезные данные, отправленные в настроенную конечную точку. Из соображений безопасности можно разрешить только запросы, поступающие из 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=
.