Управление API Azure - как получить исходный IP-адрес, когда APM находится за WAF

У нас есть технический стек ниже

  • Imperva WAF
  • Управление API
  • WebApi в WebApp

Это текущая реализация

  • Клиентские IP-адреса аутентифицируются на уровне WAF.
  • IP-адреса WAF занесены в белый список APIM
  • IP APIM занесен в белый список на уровне WebApp

Все работает нормально и как положено.

Теперь, когда я перешел в APIM -> Analytics -> Request, я вижу, что здесь перечислены IP-адреса WAF, а не клиентские. Так что в этом случае мы не сможем отследить, кто что использует

Я знаю, что у нас есть возможность отслеживать через ключ подписки, но этого недостаточно.

Кто-нибудь может предложить, как настроить, чтобы получить правильные IP-адреса?

введите описание изображения здесь


person Manish Joisar    schedule 14.06.2019    source источник
comment
Та же проблема возникает в вопросах форума MSDN. social.msdn.microsoft.com/Forums/en-US/   -  person ibrahimatay    schedule 14.06.2019
comment
@ibrahimatay, спасибо за ваш ответ, извините, я пропустил ваш ответ, да, теперь у меня есть x-forwarded-for, который содержит IP-адрес клиента в заголовке, теперь вопрос в том, как его получить и добавить в App Insights, а затем создать собственные отчеты из самого App Insights?   -  person Manish Joisar    schedule 23.07.2019


Ответы (3)


Я считаю, что вы можете найти свой ответ в здесь < / а>. Вам просто нужно настроить сервер для получения правильного IP-адреса из соответствующего заголовка.

Цитата из соответствующей части:

Требуется исходный IP-адрес клиента. Если вашему приложению требуется реальный IP-адрес клиента, убедитесь, что вы включили получение этого значения из заголовка «X-Forwarded-For» или «Incap-Client-IP». При работе с Imperva ваш сервер будет видеть IP-адреса Imperva вместо реальных IP-адресов клиентов. Однако Imperva по умолчанию вставляет исходный IP-адрес клиента в два заголовка HTTP: «X-Forwarded-For» и заголовок Imperva «Incap-Client-IP».

Но обратите внимание, вы должны взять первый IP-адрес в заданном значении XFF, иначе использование второго заголовка real-client-IP может зависеть от сторонних прокси и т. Д.

Надеюсь, это поможет.

person Adam Barak    schedule 16.06.2019

После обращения в службу поддержки Microsoft мы получили то, что хотели.

Вот как мы достигли

  • Когда Imperva WAF вызывает конечную точку APIM, он также передает Incap-Client-IP в заголовке.
  • В APIM -> API -> Все API -> Настройки -> Введите свойство заголовка, которое вы хотите добавить в журнал запросов App Insights введите описание изображения здесь
  • В журнале запросов -> настраиваемое измерение -> вы можете увидеть, что свойство InCap-Client-IP добавлено в App Insights.

введите здесь описание изображения

Теперь мы можем экспортировать это в формате csv и отслеживать использование на основе IP-адреса клиента.

person Manish Joisar    schedule 14.08.2019

Это невозможно со встроенными отчетами в Azure APIM. Если вы можете сделать так, чтобы WAF перенаправлял IP-адрес клиента в APIM в заголовке, вы могли бы создать свою собственную инфраструктуру отчетности, но это было бы довольно сложно.

person Vitaliy Kurokhtin    schedule 14.06.2019
comment
Спасибо Виталию за ответ. OK. IP-адрес клиента важен для нас, чтобы захватить, но захват i и создание собственной инфраструктуры отчетности, как вы упомянули, является большой задачей. Создание того, что предоставляют встроенные отчеты APIM, - это слишком много работы. Возможно ли, если мы передадим клиентский ip в APIM и отчет будет основан на нем? - person Manish Joisar; 17.06.2019
comment
Не сразу. Из вариантов с низкими инвестициями лучше всего использовать интеграцию с AppInsight и настроить ведение журнала дополнительного заголовка, содержащего IP-адрес клиента, передаваемый WAF. Возможно, тогда будет проще создавать необходимые отчеты на основе AppInsight. - person Vitaliy Kurokhtin; 17.06.2019
comment
Спасибо Виталию за ответ. OK. Есть ли у вас ссылка на образец реализации, по которой мы можем добавлять пользовательские данные в App Insights из APIM? - person Manish Joisar; 18.06.2019
comment
Может ли кто-нибудь помочь мне настроить ведение журнала дополнительной головы, содержащей IP-адрес клиента, в Application Insights? - person Manish Joisar; 19.07.2019
comment
Вы пробовали этот docs.microsoft? com / en-us / azure / api-management /? - person Vitaliy Kurokhtin; 19.07.2019
comment
Hellto Vitaliy, спасибо за ответ. Да, я тоже пробовал с этим. Я добавил в свой вопрос настройки диагностики. Но я не вижу информации, связанной с заголовком, в аналитических данных приложения. На самом деле я должен видеть, что это добавлено в данные запроса аналитики приложения, верно? но я этого не вижу. - person Manish Joisar; 20.07.2019
comment
Здравствуйте, Виталий / кто-то из Microsoft, не могли бы вы обновить здесь, как добавить информацию заголовка в App Insights? - person Manish Joisar; 05.08.2019
comment
Просто убедитесь, что ваши диагностические настройки уровня API не переопределяют глобальные настройки для регистрации этого заголовка. Идентификатор, который не решает проблему, мне понадобится ваше имя службы, чтобы продолжить поиск, или вы можете отправить запрос в службу поддержки. - person Vitaliy Kurokhtin; 06.08.2019