配置匿名身份验证
编辑配置匿名身份验证编辑
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
(禁用)。(布尔值)
APM 服务器二进制文件 |
|
Fleet 托管 |
|
允许的匿名代理编辑
允许进行匿名身份验证的 APM 代理名称列表。此列表中的名称必须与代理的 agent.name
匹配。默认值:[rum-js, js-base]
(仅接受 RUM 代理事件)。(数组)
APM 服务器二进制文件 |
|
Fleet 托管 |
|
允许的服务编辑
允许进行匿名身份验证的服务名称列表。此列表中的名称必须与代理的 service.name
匹配。这可用于限制创建的特定于服务的索引或数据流的数量。默认值:未设置(接受任何服务名称)。(数组)
APM 服务器二进制文件 |
|
Fleet 托管 |
|
IP 限制编辑
要在 LRU 缓存中跟踪的唯一 IP 地址的数量。缓存中的 IP 地址将根据 事件限制 设置进行速率限制。如果您的应用程序有许多并发客户端,请考虑增加此默认值。默认值:1000
。(整数)
APM 服务器二进制文件 |
|
Fleet 托管 |
|
事件限制编辑
每个代理 IP 地址每秒允许的最大事件数。默认值:300
。(整数)
APM 服务器二进制文件 |
|
Fleet 托管 |
|