创建并为 APM Server 用户分配特征角色
Elastic Stack
Kibana 自定义角色与 Elastic Cloud Serverless 不 兼容。
通过创建多个自定义的与特征相关的角色,并根据每个用户或组需要访问的特征为他们分配一个或多个角色,从而在每个特征的基础上管理访问权限。
角色标识了一组权限,这些权限转换为对资源的特权。您可以将一个用户或组与任意数量的角色相关联。用户拥有的权限总集由其所有角色中的权限的并集定义。
通常,在创建角色时,您会使用三种类型的权限
- Elasticsearch 集群权限:管理用户可以对集群执行的操作。
- Elasticsearch 索引权限:控制对集群中特定索引中的数据的访问。
- Kibana 空间权限:授予用户在 Kibana 中对特征和应用的写入或读取访问权限。
以下是 APM Server 用户可能需要的常见角色
- Writer 角色:允许用户发布由 APM Server 收集的事件,这是写入 Elasticsearch 的必需。
- 中心配置管理角色:允许用户查看 APM Agent 中心配置,当启用 中心配置管理 时,这是必需的(默认情况下已启用)。
- 监控角色:允许用户发布监控数据、查看监控数据,或者两者兼而有之。
- RUM source mapping 角色:允许用户读取 RUM source maps。
- 基于尾部的采样角色:允许用户使用 基于尾部的采样。
如果您想创建一个可以使用 Elastic APM Real User Monitoring (RUM) JavaScript Agent 从前端应用程序摄取数据,并且您使用中心配置来管理 APM Agent 的 APM Server 用户,则需要为该用户分配以下三个角色
将事件发布到 Elasticsearch 的 APM 用户必须具有写入 APM 数据流的权限。
当 APM Server 不直接写入 Elasticsearch 时,则不需要此操作。 例如,在某些情况下,您可以将 APM Server 配置为写入另一个输出,例如 Logstash、Kafka 或 libbeat 支持的任何其他输出。 在这些情况下,需要将不同的身份验证凭据传递给 apm-server.agent.config.elasticsearch
。
要授予 APM Server 用户将事件写入 Elasticsearch 所需的权限
创建一个通用 writer 角色,例如
apm_writer
,它具有以下权限类型 权限 目的 索引 在 traces-apm*
、logs-apm*
和metrics-apm*
索引上具有auto_configure
权限允许自动创建索引和数据流 索引 在 traces-apm*
、logs-apm*
和metrics-apm*
索引上具有create_doc
权限将事件写入 Elasticsearch 集群 monitor
允许集群 UUID 检查,该检查作为 APM 服务器启动先决条件的一部分执行,如果启用了Elasticsearch 安全功能(默认情况下已启用),并允许进行许可证检查,如果启用了基于尾部的采样,则需要进行许可证检查。 注意如果您明确禁用了 Elastic 安全功能,并且未使用基于尾部的采样,则可能不需要
monitor
权限。将通用 writer 角色分配给需要发布 APM 数据的 APM Server 用户。
根据需要为用户分配额外的 APM 特征角色,包括中心配置管理角色,在大多数情况下是必需的。
当启用 中心配置管理 时(默认情况下已启用),所有用户都需要此角色中包含的权限。 除非在 Applications UI 中明确禁用了中心配置管理,否则您需要此角色。
APM Server 充当 APM Agent 和 Applications UI 之间的代理。 Applications UI 将任何已更改的设置传达给 APM Server,因此您的 Agent 只需要轮询服务器即可确定哪些中心配置设置已更改。
要在 Elasticsearch 中创建具有管理中心配置所需的权限的角色而无需 Kibana,您必须使用 Roles API(所需的权限无法在 Kibana 中分配给角色)
POST /_security/role/apm_agentcfg
{
"description": "Allow APM Server to manage central configurations in Elasticsearch.",
"indices": [
{
"names": [".apm-agent-configuration"],
"privileges": ["read"],
"allow_restricted_indices": true
}
]
}
只要 APM Server 成功与 Elasticsearch 通信,先前的权限就足以使 APM Agent 中心配置正常工作。 如果失败,如果已配置,它可能会回退到通过 Kibana 读取 Agent 中心配置,这需要以下权限
类型 | 权限 | 目的 |
---|---|---|
空间 | Applications UI 上的 Read 权限 |
允许 APM Server 通过 Applications UI 管理中心配置 |
根据需要为用户分配额外的 APM 特征角色,包括 Writer 角色,在大多数情况下是必需的。
正在寻找从 Applications UI 或 APM UI API 使用中心配置所需的权限和角色? 请参阅 Applications UI 中心配置用户。
Elasticsearch 安全功能提供了用于发布和查看监控数据的内置用户和角色。 发布监控数据所需的权限和角色取决于用于收集该数据的方法。
Elastic Cloud 用户:本节不适用于 Elastic Cloud Hosted。 通过单击监控面板中的启用按钮,即可在 Elastic Cloud 上启用监控。
如果您使用 内部收集 来收集有关 APM Server 的指标,则可以
- 使用内置的
apm_system
用户或角色 - 创建一个自定义角色
使用内置用户或角色
Elasticsearch 安全功能提供 apm_system
内置用户 和 apm_system
内置角色 来发送监控信息。 如果您的环境中可以使用内置用户,则可以创建一个分配了内置角色的用户,或者创建一个用户并手动分配发送监控信息所需的权限。
如果您使用内置的 apm_system
用户,请确保在使用之前设置密码。
创建一个自定义角色
如果您不使用 apm_system
用户,则可以创建一个自定义角色
创建一个监控角色,例如
apm_monitoring_writer
,它具有以下权限类型 权限 目的 索引 在 .monitoring-beats-*
索引上具有create_index
权限在 Elasticsearch 中创建监控索引 索引 在 .monitoring-beats-*
索引上具有create_doc
权限将监控事件写入 Elasticsearch 将监控角色分配给需要将监控数据写入 Elasticsearch 的 APM Server 用户。
当使用 Metricbeat 收集指标时,无需使用 APM Server 创建角色或用户。 有关设置 Metricbeat 收集的完整详细信息,请参阅 使用 Metricbeat 收集。
如果您 正在使用 Metricbeat 来收集有关 APM Server 的指标,则可以
- 使用内置的
remote_monitoring_user
用户或角色 - 创建一个自定义用户
使用内置用户或角色
Elasticsearch 安全功能提供了 remote_monitoring_user
内置用户,以及 remote_monitoring_collector
和 remote_monitoring_agent
内置角色,用于收集和发送监控信息。 如果您的环境中可以使用内置用户,您可以直接使用,或者创建一个拥有收集和发送监控信息所需权限的用户。
如果您使用内置的 remote_monitoring_user
用户,请在使用前确保设置了密码。
创建一个自定义用户
如果您不使用 remote_monitoring_user
用户,您可以创建一个自定义用户
在生产集群上创建一个 监控用户,该用户将负责收集和发送监控信息。 将以下角色分配给该 监控用户
角色 目的 remote_monitoring_collector
从 APM Server 收集监控指标 remote_monitoring_agent
将监控数据发送到监控集群
要授予用户查看监控数据所需的权限
创建一个 监控角色,例如
apm_monitoring_viewer
,它具有以下权限类型 权限 目的 空间 Read
访问 Stack 监控在 Kibana 中对 Stack 监控功能进行只读访问。 空间 Read
访问仪表板在 Kibana 中对仪表板功能进行只读访问。 将此 监控角色 以及以下内置角色分配给需要查看 APM Server 监控数据的用户
角色 目的 monitoring_user
授予对 APM Server 监控索引的访问权限
如果启用了 真实用户监控 (RUM),则需要额外的权限才能读取 source maps。
要授予 APM Server 用户直接从 Elasticsearch 读取 RUM source maps (不通过 Kibana) 所需的权限,请为该用户分配以下权限
类型 | 权限 | 目的 |
---|---|---|
索引 | 对 .apm-source-map 索引的 read 权限 |
允许 APM Server 从 Elasticsearch 读取 RUM source maps |
只要 APM Server 能够成功与 Elasticsearch 通信,上述权限应该足以保证 RUM source mapping 正常工作。 如果失败,它可能会回退到通过 Kibana 读取 source maps (如果配置了的话),这需要额外的 Kibana 权限。 更多详情,请参考 Elastic Stack 或 Serverless API 文档。
如果启用了 基于尾部的采样 (tail-based sampling),则用户需要额外的权限。
APM Server 用户需要以下权限才能从 Elasticsearch 读取基于尾部采样的索引
类型 | 权限 | 目的 |
---|---|---|
索引 | 对 traces-apm.sampled 索引的 read 权限 |
允许 APM Server 从 Elasticsearch 读取基于尾部采样的索引 |