5

我们有以下技术堆栈

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

这是当前的实现

  • 客户端 IP 在 WAF 级别进行身份验证
  • WAF IP 在 APIM 被列入白名单
  • APIM IP 在 WebApp 级别被列入白名单

一切正常,如预期的那样。

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

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

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

在此处输入图像描述

4

3 回答 3

4

我相信你可以在这里找到你的答案。您只需要配置您的服务器以从相关标头中检索正确的 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 的使用可能会受到第 3 方代理等的影响。

希望有帮助。

于 2019-06-16T08:33:13.167 回答
1

在向微软提出支持请求后,我们得到了我们想要的

我们就是这样完成的

  • 当 Imperva WAF 调用 APIM 端点时,它也在 header 中传递 Incap-Client-IP
  • 在 APIM -> API -> 所有 API -> 设置 -> 输入要添加到 App Insights 请求日志中的标头属性 在此处输入图像描述
  • 在请求日志 -> 自定义维度 -> 您可以看到在 App Insights 中添加了 InCap-Client-IP 属性

在此处输入图像描述

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

于 2019-08-14T11:56:56.573 回答
0

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

于 2019-06-14T21:13:06.323 回答