配置匿名身份验证编辑

Elastic APM 代理可以向 APM 服务器发送未经身份验证(匿名)的事件。如果无法从传入请求中提取身份验证令牌,则该事件被视为匿名事件。这对于在客户端上运行的代理非常有用,例如在浏览器中运行的真实用户监控 (RUM) 代理,或在用户应用程序中运行的 Android 或 iOS/Swift 代理。

在 APM 服务器中启用匿名身份验证,以允许摄取未经身份验证的客户端 APM 数据,同时仍然要求服务器端服务进行身份验证。

配置示例

apm-server.auth.anonymous.enabled: true
apm-server.auth.anonymous.allow_agent: [rum-js]
apm-server.auth.anonymous.allow_service: [my_service_name]
apm-server.auth.anonymous.rate_limit.event_limit: 300
apm-server.auth.anonymous.rate_limit.ip_limit: 1000

如果 已禁用身份验证的通信,则所有匿名访问配置都将被忽略。

真实用户监控 (RUM)编辑

如果配置了 API 密钥密钥,则必须启用匿名身份验证才能收集 RUM 数据。因此,如果 启用 RUM 设置为 true,并且未明确定义 匿名代理访问,则将自动启用匿名身份验证。

有关其他 RUM 配置选项,请参阅 真实用户监控 (RUM)

缓解恶意请求编辑

有一些配置变量可以减轻恶意请求对未经身份验证的 APM 服务器端点的影响。

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

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

派生传入请求的 client.ip 地址编辑

传入请求的远程 IP 地址可能与最终用户的实际 IP 地址不同,例如,因为代理。因此,APM 服务器会尝试从 HTTP 标头中派生传入请求的 IP 地址。支持的标头按以下顺序解析

  1. Forwarded
  2. X-Real-Ip
  3. X-Forwarded-For

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

使用反向代理或负载均衡器编辑

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

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

配置参考编辑

匿名代理访问编辑

启用或禁用匿名身份验证。默认值:false(禁用)。(布尔值)

APM 服务器二进制文件

apm-server.auth.anonymous.enabled

Fleet 托管

匿名代理访问

允许的匿名代理编辑

允许进行匿名身份验证的 APM 代理名称列表。此列表中的名称必须与代理的 agent.name 匹配。默认值:[rum-js, js-base](仅接受 RUM 代理事件)。(数组)

APM 服务器二进制文件

apm-server.auth.anonymous.allow_agent

Fleet 托管

允许的匿名代理

允许的服务编辑

允许进行匿名身份验证的服务名称列表。此列表中的名称必须与代理的 service.name 匹配。这可用于限制创建的特定于服务的索引或数据流的数量。默认值:未设置(接受任何服务名称)。(数组)

APM 服务器二进制文件

apm-server.auth.anonymous.allow_service

Fleet 托管

允许的匿名服务

IP 限制编辑

要在 LRU 缓存中跟踪的唯一 IP 地址的数量。缓存中的 IP 地址将根据 事件限制 设置进行速率限制。如果您的应用程序有许多并发客户端,请考虑增加此默认值。默认值:1000。(整数)

APM 服务器二进制文件

apm-server.auth.anonymous.rate_limit.ip_limit

Fleet 托管

匿名速率限制(IP 限制)

事件限制编辑

每个代理 IP 地址每秒允许的最大事件数。默认值:300。(整数)

APM 服务器二进制文件

apm-server.auth.anonymous.rate_limit.event_limit

Fleet 托管

匿名事件速率限制(事件限制)