配置匿名身份验证
编辑配置匿名身份验证
编辑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
直接在 Kibana 中配置和自定义 Fleet 管理的 APM 设置
- 在 Kibana 中,在主菜单中找到Fleet,或使用全局搜索字段。
- 在代理策略选项卡下,选择要配置的策略。
- 找到 Elastic APM 集成并选择操作 > 编辑集成。
- 在代理授权下查找这些设置。
如果已验证的通信被禁用,则所有匿名访问配置将被忽略。
实时用户监控 (RUM)
编辑如果配置了API 密钥或密钥令牌,则必须启用匿名身份验证才能收集 RUM 数据。出于这个原因,如果启用 RUM设置为true
,并且匿名代理访问未显式定义,则将自动启用匿名身份验证。
有关其他 RUM 配置选项,请参见实时用户监控 (RUM)。
有一些配置变量可以减轻对未经身份验证的 APM 服务器端点的恶意请求的影响。
使用允许的匿名代理和允许的服务配置来确保每个传入请求的agent.name
和service.name
与指定的列表匹配。
此外,APM 服务器可以根据请求的客户端 IP 地址(client.ip
)使用事件限制对未经身份验证的请求进行限速。这允许您指定每个唯一 IP 地址每秒允许的最大请求数。
client.ip
地址传入请求的远程 IP 地址可能与最终用户的实际 IP 地址不同,例如,由于代理的原因。出于这个原因,APM 服务器尝试从 HTTP 头中获取传入请求的 IP 地址。支持的标头按以下顺序解析
-
Forwarded
-
X-Real-Ip
-
X-Forwarded-For
如果没有这些标头,则使用传入请求的远程地址。
HTTP 头很容易被修改;任何人都有可能通过更改或设置(例如)X-Forwarded-For
标头的值来伪造派生的client.ip
值。因此,如果您的任何客户端不受信任,我们建议在 APM 服务器前面设置反向代理或负载均衡器。
使用代理允许您清除任何现有的 IP 转发 HTTP 头,并用代理设置的一个头替换它们。这可以防止恶意用户循环伪造的 IP 地址以绕过 APM 服务器的速率限制功能。
配置参考
编辑启用或禁用匿名身份验证。默认值:false
(禁用)。(bool)
APM 服务器二进制文件 |
|
Fleet 管理 |
|
允许匿名身份验证的已许可 APM 代理名称列表。此列表中的名称必须与代理的agent.name
匹配。默认值:[rum-js, js-base]
(仅接受 RUM 代理事件)。(数组)
APM 服务器二进制文件 |
|
Fleet 管理 |
|
允许的服务
编辑允许匿名身份验证的服务名称列表。此列表中的名称必须与代理的service.name
匹配。这可用于限制创建的服务特定索引或数据流的数量。默认值:未设置(接受任何服务名称)。(数组)
APM 服务器二进制文件 |
|
Fleet 管理 |
|
在 LRU 缓存中跟踪的唯一 IP 地址数。缓存中的 IP 地址将根据事件限制设置进行限速。如果您的应用程序具有许多并发客户端,请考虑增加此默认值。默认值:1000
。(int)
APM 服务器二进制文件 |
|
Fleet 管理 |
|
每个代理 IP 地址每秒允许的最大事件数。默认值:300
。(int)
APM 服务器二进制文件 |
|
Fleet 管理 |
|