配置匿名身份验证

编辑

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

在 APM Server 中启用匿名身份验证,允许接收未经身份验证的客户端 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 Server 端点的恶意请求的影响。

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

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

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

传入请求的远程 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 的速率限制功能。

配置参考
编辑
匿名代理访问编辑

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

APM Server 二进制文件

apm-server.auth.anonymous.enabled

Fleet 管理

匿名代理访问

允许的匿名代理编辑

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

APM Server 二进制文件

apm-server.auth.anonymous.allow_agent

Fleet 管理

允许的匿名代理

允许的服务
编辑

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

APM Server 二进制文件

apm-server.auth.anonymous.allow_service

Fleet 管理

允许的匿名服务

IP 限制编辑

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

APM Server 二进制文件

apm-server.auth.anonymous.rate_limit.ip_limit

Fleet 管理

匿名速率限制(IP 限制)

事件限制编辑

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

APM Server 二进制文件

apm-server.auth.anonymous.rate_limit.event_limit

Fleet 管理

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