正在加载

使用 API 密钥授予访问权限

Elastic Stack

您可以使用 API 密钥来授予对 Elasticsearch 资源的访问权限,而无需使用用户名和密码。您可以设置 API 密钥在特定时间过期,并且可以显式地使它们失效。任何具有 manage_api_keymanage_own_api_key 集群权限的用户都可以创建 API 密钥。

APM Server 实例通常会将收集的数据和监控信息发送到 Elasticsearch。如果您将两者都发送到同一个集群,则可以使用同一个 API 密钥。对于不同的集群,您需要为每个集群使用一个 API 密钥。

注意

出于安全原因,我们建议为每个 APM Server 实例使用唯一的 API 密钥。您可以根据需要为每个用户创建任意数量的 API 密钥。

要创建 API 密钥:

  1. 转到主菜单中的**Stack Management(堆栈管理)**,找到**API Keys(API 密钥)**,或使用全局搜索字段

  2. 单击**Create API key(创建 API 密钥)**。

    API key creation
  3. 输入 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"]
                }
            ]
        }
    }
    
    注意

    此示例仅提供**写入数据**的权限。有关其他权限和信息,请参见使用功能角色

  4. 要设置 API 密钥的过期日期,请选择**Expire after time(在一段时间后过期)**,然后输入 API 密钥的生存期(以天为单位)。

  5. 单击**Create API key(创建 API 密钥)**。

  6. 您*必须*将 API 密钥配置为 Beats。在生成 API 密钥后并仍在显示时,立即单击 API 密钥旁边的**Encoded(编码)**按钮,然后从工具提示中的列表中选择**Beats**。此配置目前不支持 Base64 编码的 API 密钥。

    API key dropdown highlighting the Beats option

您现在可以在 apm-server.yml 配置文件中使用此 API 密钥:

output.elasticsearch:
  api_key: TiNAGG4BaaMdaH1tRfuU:KnR6yE41RrSowb0kQ0HWoA
  1. 格式为 id:api_key(如 Beats 下拉列表中所示)

要打开**API 密钥**,请在主菜单中找到**Stack Management(堆栈管理)**,或使用全局搜索字段。单击**Create API key(创建 API 密钥)**。

API key creation

输入 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
  1. 格式为 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"]
            }
        ]
    }
  }
}
  1. API 密钥的名称
  2. 授予的权限,请参见使用功能角色

有关更多信息,请参见创建 API 密钥参考。

有关更多信息,请参见 Elasticsearch API 密钥文档

© . All rights reserved.