正在加载

匿名身份验证

Elastic Stack

Elastic APM agent 可以将未经身份验证(匿名)的事件发送到 APM Server。如果无法从传入请求中提取任何身份验证令牌,则该事件被认为是匿名的。 APM Server 对这些请求的默认响应取决于其配置

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

但在某些情况下,允许经过身份验证和匿名请求是有意义的。 例如,无法对来自前端服务的请求进行身份验证,因为无法保护 secret 令牌或 API 密钥。 浏览器中运行的 Real User Monitoring (RUM) agent,或者用户应用程序中运行的 Android 或 iOS/Swift agent 就是这种情况。 但是,您可能仍然希望对来自后端服务的请求进行身份验证。 为了解决这个问题,您可以启用 APM Server 中的匿名身份验证,以允许提取未经身份验证的客户端 APM 数据,同时仍然需要对服务器端服务进行身份验证。

注意

只有在配置了API 密钥secret 令牌时,才能启用和配置匿名身份验证。 如果两者都未配置,这些设置将被忽略。

当配置了 API 密钥secret 令牌时,必须启用匿名身份验证才能收集 RUM 数据。 将 匿名 Agent 访问 设置为 true 以启用匿名身份验证。

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

使用 允许的匿名 Agent允许的匿名服务 配置,以确保每个传入请求的 agent.nameservice.name 与指定的列表匹配。

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

当配置了 API 密钥secret 令牌时,必须启用匿名身份验证才能收集 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. Forwarded
  2. X-Real-Ip
  3. X-Forwarded-For

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

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

使用代理允许您清除任何现有的 IP 转发 HTTP 标头,并将其替换为代理设置的一组标头。 这样可以防止恶意用户循环欺骗 IP 地址以绕过 APM Server 的速率限制功能。

© . All rights reserved.