为 APM Server 用户创建和分配功能角色
编辑为 APM Server 用户创建和分配功能角色
编辑通过创建多个与功能相关的自定义角色,并根据用户需要访问的功能,为每个用户或组分配一个或多个这些角色,从而在逐个功能的基础上管理访问权限。
角色标识一组权限,这些权限转换为资源的特权。您可以将用户或组与任意数量的角色关联。用户拥有的总权限集由其所有角色中的权限的并集定义。
通常,创建角色时需要使用三种类型的特权:
- Elasticsearch 集群特权:管理用户可以对集群执行的操作。
- Elasticsearch 索引特权:控制对集群中特定索引中数据的访问。
- Kibana 空间特权:授予用户对 Kibana 中功能和应用的写入或读取访问权限。
以下是 APM Server 用户可能需要的常见角色:
将事件发布到 Elasticsearch 的 APM 用户必须具有写入 APM 数据流的权限。
当 APM Server 不直接写入 Elasticsearch 时,则不需要此操作。例如,在某些情况下,您可以将 APM Server 配置为写入其他输出,如 Logstash、Kafka 或 libbeat 支持的任何其他输出。在这些情况下,需要将不同的身份验证凭据传递给 apm-server.agent.config.elasticsearch
。
要授予 APM Server 用户将事件写入 Elasticsearch 所需的特权:
-
创建一个通用写入者角色,例如名为
apm_writer
,具有以下特权:类型 特权 目的 索引
在
traces-apm*
、logs-apm*
和metrics-apm*
索引上使用auto_configure
允许自动创建索引和数据流
索引
在
traces-apm*
、logs-apm*
和metrics-apm*
索引上使用create_doc
将事件写入 Elasticsearch
集群
监控
- 允许集群 UUID 检查,如果启用Elasticsearch 安全(默认情况下启用),则作为 APM Server 启动前提条件的一部分执行。
- 允许许可证检查,如果启用基于尾部的采样,则需要许可证检查。
如果您已显式禁用 Elastic 安全并且您没有使用基于尾部的采样,则此特权可能不是必需的。
- 将通用写入者角色分配给需要发布 APM 数据的 APM Server 用户。
根据需要为用户分配其他 APM 功能角色,包括中央配置管理角色,这在大多数情况下是必需的。
当启用中央配置管理时(默认情况下启用),所有用户都需要此角色中包含的特权。除非在 Applications UI 中已显式禁用中央配置管理,否则您需要此角色。
APM Server 充当 APM Agent 和 Applications UI 之间的代理。Applications UI 将任何更改的设置传达给 APM Server,以便您的 Agent 只需要轮询 Server 即可确定哪些中央配置设置已更改。
要创建具有在没有 Kibana 的情况下管理 Elasticsearch 中中央配置所需特权的角色,您必须使用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 上使用 |
允许 APM Server 通过 Applications UI 管理中央配置 |
根据需要为用户分配其他 APM 功能角色,包括写入者角色,这在大多数情况下是必需的。
是否在寻找从 Applications UI 或 APM UI API 使用中央配置所需的特权和角色?请参阅Applications UI 中央配置用户。
Elasticsearch 安全功能提供了用于发布和查看监控数据的内置用户和角色。发布监控数据所需的特权和角色取决于用于收集该数据的方法。
Elastic Cloud 用户:本节不适用于我们的托管 Elasticsearch 服务。通过单击监控面板中的启用按钮,在 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 用户。
根据需要为用户分配其他 APM 功能角色,包括写入者角色和中央配置管理角色,这两种角色在大多数情况下都是必需的。
当使用 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 功能角色,包括写入者角色和中央配置管理角色,这两种角色在大多数情况下都是必需的。
要授予用户查看监控数据所需的权限
-
创建一个监控角色,例如命名为
apm_monitoring_viewer
,该角色具有以下权限类型 特权 目的 空间
在 Stack Monitoring 上
Read
权限在 Kibana 中对 Stack Monitoring 功能的只读访问权限。
空间
在 Dashboards 上
Read
权限在 Kibana 中对 Dashboards 功能的只读访问权限。
-
将监控角色以及以下内置角色分配给需要查看 APM Server 监控数据的用户
角色 目的 monitoring_user
授予对 APM Server 监控索引的访问权限
根据需要为用户分配其他 APM 功能角色,包括写入者角色和中央配置管理角色,这两种角色在大多数情况下都是必需的。
如果启用了真实用户监控,则需要额外的权限才能读取源映射。
要授予 APM Server 用户直接从 Elasticsearch 读取 RUM 源映射(不通过 Kibana)所需的权限,请将以下权限分配给该用户
类型 | 特权 | 目的 |
---|---|---|
索引 |
在 |
允许 APM Server 从 Elasticsearch 读取 RUM 源映射 |
根据需要为用户分配其他 APM 功能角色,包括写入者角色和中央配置管理角色,这两种角色在大多数情况下都是必需的。
只要 APM Server 成功与 Elasticsearch 通信,上述权限就足以使 RUM 源映射正常工作。如果失败,它可能会回退到通过 Kibana 读取源映射(如果已配置),这需要额外的 Kibana 权限。有关详细信息,请参阅RUM 源映射 API。