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