配置匿名身份验证
Elastic Stack
此页面上的大多数选项都受到所有 APM Server 部署方法的支持。
Elastic APM Agent 可以向 APM Server 发送未经身份验证(匿名)的事件。如果无法从传入请求中提取任何身份验证令牌,则该事件被认为是匿名的。这对于在客户端上运行的 Agent 非常有用,例如在浏览器中运行的真实用户监控 (RUM) Agent,或在用户应用程序中运行的 Android 或 iOS/Swift Agent。
在 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,或使用全局搜索字段。
- 在 Agent 策略 选项卡下,选择您要配置的策略。
- 找到 Elastic APM 集成,然后选择 操作 > 编辑集成。
- 在 Agent 授权 下查找这些设置。
如果禁用经过身份验证的通信,则所有匿名访问配置都将被忽略。
如果配置了API 密钥或密钥令牌,则必须启用匿名身份验证才能收集 RUM 数据。因此,如果启用 RUM设置为 true
,并且未明确定义匿名 Agent 访问,则将自动启用匿名身份验证。
有关其他 RUM 配置选项,请参阅真实用户监控 (RUM)。
有一些配置变量可以缓解恶意请求对未经身份验证的 APM Server 端点的影响。
使用允许的匿名 Agent和允许的服务配置,以确保每个传入请求的 agent.name
和 service.name
与指定的列表匹配。
此外,APM Server 可以根据请求的客户端 IP 地址 (client.ip
) 和事件限制来限制未经身份验证的请求的速率。这允许您指定每个唯一 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 二进制文件 | apm-server.auth.anonymous.enabled |
Fleet 管理 | 匿名 Agent 访问 |
允许匿名身份验证的 APM Agent 名称列表。此列表中的名称必须与 Agent 的 agent.name
匹配。默认值:[rum-js, js-base]
(仅接受 RUM Agent 事件)。(array)
APM Server 二进制文件 | apm-server.auth.anonymous.allow_agent |
Fleet 管理 | 允许的匿名 Agent |
允许匿名身份验证的服务名称列表。此列表中的名称必须与 Agent 的 service.name
匹配。这可用于限制创建的特定于服务的索引或数据流的数量。默认值:未设置(接受任何服务名称)。(array)
APM Server 二进制文件 | apm-server.auth.anonymous.allow_service |
Fleet 管理 | 允许的匿名服务 |
在 LRU 缓存中跟踪的唯一 IP 地址的数量。缓存中的 IP 地址将根据事件限制设置进行速率限制。如果您的应用程序有许多并发客户端,请考虑增加此默认值。默认值:1000
。(int)
APM Server 二进制文件 | apm-server.auth.anonymous.rate_limit.ip_limit |
Fleet 管理 | 匿名速率限制(IP 限制) |
每个 Agent IP 地址每秒允许的最大事件数。默认值:300
。(int)
APM Server 二进制文件 | apm-server.auth.anonymous.rate_limit.event_limit |
Fleet 管理 | 匿名事件速率限制(事件限制) |