使用 API 密钥授予访问权限
Elastic Stack
您可以使用 API 密钥来授予对 Elasticsearch 资源的访问权限,而无需使用用户名和密码。您可以设置 API 密钥在特定时间过期,并且可以显式地使它们失效。任何具有 manage_api_key
或 manage_own_api_key
集群权限的用户都可以创建 API 密钥。
APM Server 实例通常会将收集的数据和监控信息发送到 Elasticsearch。如果您将两者都发送到同一个集群,则可以使用同一个 API 密钥。对于不同的集群,您需要为每个集群使用一个 API 密钥。
出于安全原因,我们建议为每个 APM Server 实例使用唯一的 API 密钥。您可以根据需要为每个用户创建任意数量的 API 密钥。
要创建 API 密钥:
转到主菜单中的**Stack Management(堆栈管理)**,找到**API Keys(API 密钥)**,或使用全局搜索字段。
单击**Create API key(创建 API 密钥)**。
输入 API 密钥的名称,然后选择**Restrict privileges(限制权限)**。在角色描述符框中,为新的 API 密钥分配适当的权限。例如:
{ "apm_writer": { "cluster": ["monitor"], "index": [ { "names": ["traces-apm*","logs-apm*", "metrics-apm*"], "privileges": ["auto_configure", "create_doc"] } ] }, "apm_sourcemap": { "index": [ { "names": [".apm-source-map"], "privileges": ["read"] } ] }, "apm_agentcfg": { "index": [ { "names": [".apm-agent-configuration"], "privileges": ["read"], "allow_restricted_indices": true } ] }, "apm_tail_based_sampling": { "index": [ { "names": ["traces-apm.sampled"], "privileges": ["read"] } ] } }
注意此示例仅提供**写入数据**的权限。有关其他权限和信息,请参见使用功能角色。
要设置 API 密钥的过期日期,请选择**Expire after time(在一段时间后过期)**,然后输入 API 密钥的生存期(以天为单位)。
单击**Create API key(创建 API 密钥)**。
您*必须*将 API 密钥配置为 Beats。在生成 API 密钥后并仍在显示时,立即单击 API 密钥旁边的**Encoded(编码)**按钮,然后从工具提示中的列表中选择**Beats**。此配置目前不支持 Base64 编码的 API 密钥。
您现在可以在 apm-server.yml
配置文件中使用此 API 密钥:
output.elasticsearch:
api_key: TiNAGG4BaaMdaH1tRfuU:KnR6yE41RrSowb0kQ0HWoA
- 格式为
id:api_key
(如 Beats 下拉列表中所示)
要打开**API 密钥**,请在主菜单中找到**Stack Management(堆栈管理)**,或使用全局搜索字段。单击**Create API key(创建 API 密钥)**。

输入 API 密钥的名称,然后选择**Restrict privileges(限制权限)**。在角色描述符框中,为新的 API 密钥分配适当的权限。例如:
{
"apm_monitoring": {
"index": [
{
"names": [".monitoring-beats-*"],
"privileges": ["create_index", "create_doc"]
}
]
}
}
此示例仅提供**发布监控数据**的权限。有关其他权限和信息,请参见使用功能角色。
要设置 API 密钥的过期日期,请选择**Expire after time(在一段时间后过期)**,然后输入 API 密钥的生存期(以天为单位)。
单击**Create API key(创建 API 密钥)**。在下拉列表中,切换到**Beats**并复制 API 密钥。
您现在可以像这样在 apm-server.yml
配置文件中使用此 API 密钥:
monitoring.elasticsearch:
api_key: TiNAGG4BaaMdaH1tRfuU:KnR6yE41RrSowb0kQ0HWoA
- 格式为
id:api_key
(如 Beats 下拉列表中所示)
您还可以使用 Elasticsearch 的 Create API key API(创建 API 密钥 API) 创建新的 API 密钥。例如:
POST /_security/api_key
{
"name": "apm_host001",
"role_descriptors": {
"apm_writer": {
"cluster": ["monitor"],
"index": [
{
"names": ["traces-apm*","logs-apm*", "metrics-apm*"],
"privileges": ["auto_configure", "create_doc"]
}
]
},
"apm_sourcemap": {
"index": [
{
"names": [".apm-source-map"],
"privileges": ["read"]
}
]
},
"apm_agentcfg": {
"index": [
{
"names": [".apm-agent-configuration"],
"privileges": ["read"],
"allow_restricted_indices": true
}
]
},
"apm_tail_based_sampling": {
"index": [
{
"names": ["traces-apm.sampled"],
"privileges": ["read"]
}
]
}
}
}
- API 密钥的名称
- 授予的权限,请参见使用功能角色
有关更多信息,请参见创建 API 密钥参考。
有关更多信息,请参见 Elasticsearch API 密钥文档