授予独立 Elastic Agent 访问 Elasticsearch 的权限

编辑

授予独立 Elastic Agent 访问 Elasticsearch 的权限编辑

您可以使用 API 密钥或用户凭据来授予独立 Elastic Agent 访问 Elasticsearch 资源的权限。以下是最小权限,这些权限是将日志、指标、跟踪和合成数据发送到 Elasticsearch 所必需的

  • monitor 集群权限
  • auto_configurecreate_doclogs-*-*metrics-*-*traces-*-*synthetics-*-* 的索引权限。

建议您使用 API 密钥,以避免在配置文件中暴露用户名和密码。

如果您使用的是 Fleet,请参阅 Fleet 注册令牌

为独立代理创建 API 密钥编辑

API 密钥以纯文本形式发送,因此它们仅在与传输层安全性 (TLS) 结合使用时才提供安全性。我们的 托管 Elasticsearch 服务 在 Elastic Cloud 上开箱即用地提供安全、加密的连接!对于自管理的 Elasticsearch 集群,请参阅 公钥基础设施 (PKI) 证书

您可以将 API 密钥设置为在特定时间过期,并且可以显式地使它们失效。任何具有 manage_api_keymanage_own_api_key 集群权限的用户都可以创建 API 密钥。

出于安全原因,我们建议每个 Elastic Agent 使用唯一的 API 密钥。您可以为每个用户创建尽可能多的 API 密钥。

如果您使用的是 Elastic Cloud 无服务器,则需要 API 密钥身份验证。

要为 Elastic Agent 创建 API 密钥

  1. 在 Elastic Cloud 或本地环境中,在 Kibana 中导航到 堆栈管理 > API 密钥,然后单击 创建 API 密钥

    在无服务器环境中,在 Kibana 中导航到 项目设置 > 管理 > API 密钥,然后单击 创建 API 密钥

  2. 输入 API 密钥的名称,然后选择 控制安全权限
  3. 在角色描述符框中,复制并粘贴以下 JSON。此示例创建了一个具有摄取日志、指标、跟踪和合成的权限的 API 密钥

    {
      "standalone_agent": {
        "cluster": [
          "monitor"
        ],
        "indices": [
          {
            "names": [
              "logs-*-*", "metrics-*-*", "traces-*-*", "synthetics-*-*" 
            ],
            "privileges": [
              "auto_configure", "create_doc"
            ]
          }
        ]
      }
    }

    调整此列表以匹配您要收集的数据。例如,如果您没有使用 APM 或合成数据,请从此列表中删除 "traces-*-*""synthetics-*-*"

  4. 要为 API 密钥设置过期日期,请选择 过期时间,然后以天为单位输入 API 密钥的生存期。
  5. 单击 创建 API 密钥

    您将看到一条消息,指示密钥已创建,以及编码后的密钥。默认情况下,API 密钥是 Base64 编码的,但这不适用于 Elastic Agent。

  1. 单击 Base64 旁边的向下箭头,然后选择 Beats

    Message with field for copying API key
  2. 复制 API 密钥。您将在下一步中需要它,并且您将无法再次查看它。
  3. 要使用 API 密钥,请在 elastic-agent.yml 文件中指定 api_key 设置。例如

    [...]
    outputs:
      default:
        type: elasticsearch
        hosts:
          - 'https://da4e3a6298c14a6683e6064ebfve9ace.us-central1.gcp.cloud.es.io:443'
        api_key: _Nj4oH0aWZVGqM7MGop8:349p_U1ERHyIc4Nm8_AYkw 
    [...]

    此密钥的格式为 <id>:<key>。Base64 编码的 API 密钥当前不支持此配置。

有关在 Kibana 中创建 API 密钥的更多信息,请参阅 API 密钥

创建独立代理角色编辑

虽然建议您使用 API 密钥而不是用户名和密码来访问 Elasticsearch(并且在无服务器环境中需要 API 密钥),但您可以创建一个具有所需权限的角色,将其分配给用户,并在 elastic-agent.yml 文件中指定用户的凭据。

  1. 在 Kibana 中,转到 堆栈管理 > 角色
  2. 单击 创建角色,然后输入角色的名称。
  3. 集群权限 中,输入 monitor
  4. 索引权限 中,输入

    1. logs-*-*metrics-*-*traces-*-*synthetics-*-*索引 字段中。

      调整此列表以匹配您要收集的数据。例如,如果您没有使用 APM 或合成数据,请从此列表中删除 traces-*-*synthetics-*-*

    2. auto_configurecreate_doc权限 字段中。

      Create role settings for a standalone agent role
  5. 创建角色并将其分配给用户。有关创建角色的更多信息,请参阅 Kibana 角色管理
  6. 要使用这些凭据,请在 elastic-agent.yml 文件中设置用户名和密码

    [...]
    outputs:
      default:
        type: elasticsearch
        hosts:
          - 'https://da4e3a6298c14a6683e6064ebfve9ace.us-central1.gcp.cloud.es.io:443'
        username: ES_USERNAME 
        password: ES_PASSWORD
    [...]

    出于安全原因,请指定具有此处描述的最小权限的用户。建议您不要使用 elastic 超级用户。