控制对 APM 数据的访问权限
编辑控制对 APM 数据的访问权限编辑
从 8.2.0 版本开始,APM 应用已支持 Kibana 空间。这允许您按团队、用例、服务环境或您选择的任何其他过滤器来分离数据以及对数据的访问权限。
要利用此功能,您的 APM 数据需要写入不同的数据流。实现此目的的一种方法是使用不同的命名空间。例如,您可以将生产数据发送到命名空间为 production
的 APM 集成,同时将暂存数据发送到命名空间为 staging
的不同 APM 集成。
但是,不需要多个 APM 集成实例。利用此功能的最简单方法是创建过滤后的别名。有关更多信息,请参阅下面的指南。
指南:分离暂存和生产数据编辑
本指南将说明如何分离暂存和生产数据。这有助于在排除生产问题时消除干扰,或者为某些数据创建更精细的访问控制。
本指南假设您
- 正在将暂存和生产 APM 数据发送到 Elasticsearch 集群。
- 已在您的 APM 代理配置中配置了
environment
变量。此变量设置 APM 文档中的service.environment
字段。您应该拥有service.environment: production
和service.environment: staging
的文档。如果此字段为空,请参阅 服务环境过滤器 以了解如何设置此值。
步骤 1:创建过滤后的别名编辑
APM 应用使用索引模式来查询您的 APM 数据。索引模式可以匹配数据流、索引和/或别名。默认值为
索引设置 | 默认索引模式 |
---|---|
错误 |
|
Span/事务 |
|
指标 |
|
默认索引设置还会查询 apm-*
数据视图。此数据视图匹配在早期版本的 APM(v8.0 之前)中传送的 APM 数据。
我们可以为 APM 应用创建过滤后的别名,而不是查询默认的 APM 数据视图。过滤后的别名是一组数据流的辅助名称,它具有用户定义的过滤器,用于限制别名可以访问的文档。
要分离 staging
和 production
APM 数据,我们需要为每个服务环境创建六个过滤后的别名 - 三个别名
索引设置 | production 环境 |
staging 环境 |
---|---|---|
错误 |
|
|
Span/事务 |
|
|
指标 |
|
|
production-<event>-apm
别名将包含一个过滤器,该过滤器仅提供对 service.environment
为 production
的文档的访问权限。类似地,staging-<event>-apm
别名将包含一个过滤器,该过滤器仅提供对 service.environment
为 staging
的文档的访问权限。
要创建这六个过滤后的别名,请使用 Elasticsearch 别名 API。在 Kibana 中,打开 开发工具 并运行以下 POST 请求。
traces-apm*
production 别名示例
logs-apm*
production 别名示例
metrics-apm*
production 别名示例
traces-apm*
staging 别名示例
logs-apm*
staging 别名示例
metrics-apm*
staging 别名示例
步骤 2:创建 Kibana 空间编辑
接下来,您需要为每个服务环境创建一个 Kibana 空间。要创建这些空间,请导航至 堆栈管理 > 空间 > 创建空间。在本指南中,我们创建了两个 Kibana 空间,一个名为 production
,另一个名为 staging
。
有关创建空间的更多信息,请参阅 查看、创建和删除空间。
步骤 3:更新每个空间中的 APM 索引设置编辑
现在,我们可以更改每个空间中 APM 应用查询的默认数据视图。
打开 APM 应用并导航至 设置 > 索引。使用下表更新每个空间的设置。每列中的值与我们在步骤一中创建的过滤后的别名的名称相匹配。
索引设置 | production 空间 |
staging 空间 |
---|---|---|
错误索引 |
|
|
Span 索引 |
|
|
事务索引 |
|
|
指标索引 |
|
|
步骤 4:创建 Kibana 访问角色编辑
在 Kibana 中,导航至 堆栈管理 > 角色,然后单击 创建角色。
您需要创建两个角色:一个用于 staging
用户(我们将此角色称为 staging_apm_viewer
),另一个用于 production
用户(我们将此角色称为 production_apm_viewer
)。
使用下表,为每个角色分配以下权限
权限 | production_apm_viewer |
staging_apm_viewer |
---|---|---|
索引权限 |
索引: |
索引: |
Kibana 权限 |
空间: |
空间: |
或者,您可以使用 Elasticsearch 创建或更新角色 API
创建 production_apm_viewer
角色
此请求创建 production_apm_viewer
角色
创建 staging_apm_viewer
角色
步骤 5:将用户分配给角色编辑
最后要做的是将用户分配给上面新创建的角色。用户只能访问他们被授予权限的空间中的数据。
有关如何使用 Kibana UI 创建用户并为其分配角色的信息,请参阅 保护对 Kibana 的访问。
或者,您可以使用 Elasticsearch 创建或更新用户 API。
此示例创建一个新用户并为其分配在上一步中创建的 production_apm_viewer
角色。此用户只能访问 production 空间和 service.environment
为 production
的数据。请记住更改 password
、full_name
和 email
字段。
POST /_security/user/production-apm-user { "password" : "l0ng-r4nd0m-p@ssw0rd", "roles" : [ "production_apm_viewer" ], "full_name" : "Jane Production Smith", "email" : "[email protected]" }
此示例创建一个新用户并为其分配在上一步中创建的 staging_apm_viewer
角色。此用户只能访问 staging 空间和 service.environment
为 staging
的数据。请记住更改 password
、full_name
和 email
字段。
POST /_security/user/staging-apm-user { "password" : "l0ng-r4nd0m-p@ssw0rd", "roles" : [ "staging_apm_viewer" ], "full_name" : "John Staging Doe", "email" : "[email protected]" }
步骤 6:Marvel编辑
就是这样!回到 APM 应用,欣赏您的特定于空间的数据。