加载中

匿名身份验证

Elastic APM 探针可以向 APM Server 发送未认证的(匿名)事件。如果无法从传入请求中提取出认证令牌,则该事件被视为匿名事件。APM Server 对这些请求的默认响应取决于其配置

配置 默认值
配置了 API 密钥密钥令牌 匿名请求将被拒绝,并返回认证错误。
未配置 API 密钥或密钥令牌 APM Server 接受匿名请求。

然而,在某些情况下,同时允许经过认证和匿名的请求是合理的。例如,由于无法保护密钥令牌或 API 密钥,因此无法对来自前端服务的请求进行认证。运行在浏览器中的真实用户监控(RUM)探针,或运行在用户应用程序中的 Android、iOS/Swift 探针就是这种情况。不过,你可能仍然希望对来自后端服务的请求进行认证。为了解决这个问题,你可以在 APM Server 中启用匿名认证,以允许引入未经认证的客户端 APM 数据,同时仍然要求对服务端服务进行认证。

注意

只有在配置了 API 密钥密钥令牌 的情况下,你才能启用和配置匿名认证。如果两者都未配置,这些设置将被忽略。

当配置了 API 密钥密钥令牌 时,必须启用匿名认证才能收集 RUM data。将 Anonymous Agent access 设置为 true 以启用匿名认证。

为客户端服务配置匿名认证时,有一些配置变量可以减轻恶意请求对未经认证的 APM Server 端点的影响。

使用 Allowed anonymous agentsAllowed anonymous services 配置来确保每个传入请求的 agent.nameservice.name 与指定的列表相匹配。

此外,APM Server 可以根据请求的客户端 IP 地址(client.ip)对未经认证的请求进行速率限制。这允许你指定每个唯一 IP 地址每秒允许的最大请求数。

当配置了 API 密钥密钥令牌 时,必须启用匿名认证才能收集 RUM 数据。要启用匿名访问,请将 apm-server.rum.enabledapm-server.auth.anonymous.enabled 设置为 true

由于任何人都可以向 APM Server 发送匿名事件,因此可以使用额外的配置变量来限制 APM Server 处理的匿名事件数量;吞吐量等于 rate_limit.ip_limit 乘以 rate_limit.event_limit

有关选项的完整列表和示例配置文件,请参阅 匿名认证

传入请求的远程 IP 地址可能与最终用户的实际 IP 地址不同(例如,由于代理的原因)。因此,APM Server 尝试从 HTTP 标头中推导传入请求的 IP 地址。支持的标头按以下顺序进行解析

  1. 已转发
  2. X-Real-Ip
  3. X-Forwarded-For

如果这些标头都不存在,则使用传入请求的远程地址。

HTTP 标头很容易被修改;任何人都可以通过更改或设置(例如)X-Forwarded-For 标头的值来伪造推导出的 client.ip 值。因此,如果你的任何客户端不可信,我们建议在 APM Server 前面设置反向代理或负载均衡器。

使用代理允许你清除任何现有的 IP 转发 HTTP 标头,并将其替换为代理设置的标头。这可以防止恶意用户轮换伪造的 IP 地址来绕过 APM Server 的速率限制功能。

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.