Azure API管理-当APM落后于WAF时如何获取原始IP

时间:2019-06-14 11:33:39

标签: azure ip-address azure-api-management web-application-firewall x-forwarded-for

我们有以下技术堆栈

  • Imperva WAF
  • API管理
  • WebApp中的WebApi

这是当前的实现方式

  • 客户端IP在WAF级别进行了认证
  • WAF IP已在APIM上列入白名单
  • APIM IP已在Web应用程序级别列入白名单

一切正常,并按预期进行。

现在,当我去APIM->分析->请求时,我看到WAF IP列在这里,而不是客户端IP。因此,在这种情况下,我们将无法跟踪谁在使用什么

我知道我们可以选择通过订阅密钥进行跟踪,但这还不够。

有人可以建议如何配置以获得正确的IP吗?

3 个答案:

答案 0 :(得分:1)

我相信您可以在here中找到答案。 您只需要配置服务器以从相关标头中检索正确的IP。

引用相关部分:

  

需要原始客户端IP。如果您的应用程序需要真实的客户端IP地址,请确保已启用从“ X-Forwarded-For”或“ Incap-Client-IP”标头中检索此值的功能。使用Imperva时,您的服务器将看到Imperva IP,而不是实际的客户端IP。但是,默认情况下,Imperva将原始客户端IP地址插入两个HTTP标头中:“ X-Forwarded-For”和Imperva标头“ Incap-Client-IP”。

但是请注意,您应该以给定的XFF值获取第一个IP,否则,第二个标头real-client-IP的使用可能会受到第三方代理等的影响。

希望有帮助。

答案 1 :(得分:1)

向Microsoft提出支持请求后,我们得到了想要的东西

这就是我们的成就

  • Imperva WAF调用APIM端点时,还会在标头中传递Incap-Client-IP
  • 在APIM中-> API->所有API->设置->在App Insights的请求日志中输入要添加的标头属性 enter image description here
  • 在请求日志下->自定义维度->您可以看到InCap-Client-IP属性已添加到App Insights中

enter image description here

现在,我们可以将其导出为csv格式,并可以根据客户端IP跟踪使用情况。

答案 2 :(得分:0)

这对于Azure APIM中的内置报告是不可能的。如果您可以在标题中使WAF将客户端IP转发到APIM,则可以构建自己的报告基础结构,但这将非常复杂。