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

Azure API Management - How to get original IP when APM is behind WAF

我们有以下技术栈

这是当前的实现

一切正常,符合预期。

现在,当我转到 APIM -> 分析 -> 请求时,我看到此处列出了 WAF IP 而不是客户端 IP。所以在这种情况下我们将无法追踪谁在使用什么

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

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

Azure APIM 中的 built-in 报告无法做到这一点。如果您可以在 header 中让 WAF 将客户端 IP 转发到 APIM,那么您就可以构建自己的报告基础架构,但这会非常复杂。

相信您可以在here中找到您的答案。 您只需要配置您的服务器以从相关 header.

检索正确的 IP

引用相关部分:

Original Client IP is required In case your application requires a real client IP address, please make sure you have enabled retrieval of this value from either: "X-Forwarded-For" or "Incap-Client-IP" header. When working with Imperva your server will see Imperva IPs instead of real client IPs. However, Imperva inserts by default the original client IP address into two HTTP headers: "X-Forwarded-For" and Imperva header "Incap-Client-IP".

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

希望对您有所帮助。

向 Microsoft 提出支持请求后,我们如愿以偿

这就是我们的成就

  • 当 Imperva WAF 调用 APIM 端点时,它还会在 header
  • 中传递 Incap-Client-IP
  • 在 APIM -> APIs -> 所有 APIs -> 设置 -> 输入 header 属性 您想要添加到 App Insights 的请求日志
  • 在request log -> custom dimension -> 可以看到InCap-Client-IP 属性 已添加到App Insights

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