Защита конечных точек на шлюзе приложений Azure для доступа со стороны HubSpot
У нас есть устаревшая система, которая представляет собой REST API с базовой аутентификацией. До сих пор этот API был доступен только из нашей частной сети.
Нас попросили сделать этот API общедоступным. Однако у нашей команды InfoSec есть правило, согласно которому базовой аутентификации недостаточно (в основном по причинам, указанным здесь ; хотя мы используем >=TLS1.2, и это межсистемный API, поэтому в уравнении нет браузера).
Мы используем WAF Шлюза приложений Azure при публичном предоставлении любых конечных точек HTTP; при этом он действует как WAF и обрабатывает разгрузку TLS.
Обычно мы внедряем белый список IP-адресов для повышения безопасности; но в данном случае запросы идут от HubSpot; поэтому нет опубликованного списка IP-адресов, и даже если бы он был, на них могло бы размещаться значительное количество кода других сторон.
Также возможно реализовать mTLS на App Gateway, но, насколько я могу судить, HubSpot не поддерживает это.
HubSpot, похоже, поддерживает свой собственный подход — создание хеша из секрета клиента и различных частей запроса; но шлюз приложений может сравнивать только статические строки/не имеет возможности программно вычислять хеш для сравнения.
Мы могли бы
- реализовать логику хеширования HubSpot в устаревшем приложении; но это повлияет на все, кто использует этот API.
- внедрить логику хэша HubSpot в устаревшем приложении, где существуют заголовки (так что это влияет только на запросы HubSpot), и использовать AppGateway для блокировки любых запросов, которые не имеют этих заголовков (поэтому все общедоступное должно иметь заголовки и, таким образом, проходить аутентификацию таким образом, что-либо внутреннее не нуждается в заголовках, поэтому аутентифицируется через базовую аутентификацию).
- Внедрите конечные точки, специфичные для HubSpot, во внутреннем API и представляйте только те пути, специфичные для HubSpot, извне (с применением к этим конечным точкам логики HubSpot Hash).
- Реализуйте функцию Azure, которая находится между шлюзом приложений и API устаревшего приложения, чтобы обрабатывать часть хэша HubSpot и пересылать только проверенные запросы.
Наверное, есть еще много вариантов...
Кто-нибудь еще сталкивался с чем-то подобным раньше/находил решение, как справиться с этим?
(Извиняюсь, если это слишком основано на мнениях; казалось, что это серая зона, где может быть хорошее стандартное решение, которое я пропустил; но в равной степени это может быть одна из тех вещей, где есть много возможных вариантов / нет единственного наилучшего решения; пожалуйста, проголосуйте за закрытие, если вы считаете, что это последнее).