与 Elasticsearch 建立安全通信

编辑

与 Elasticsearch 建立安全通信

编辑

当通过 elasticsearch 输出将数据发送到安全集群时,Metricbeat 可以使用以下任何一种身份验证方法

  • 基本身份验证凭据(用户名和密码)。
  • 基于令牌的 API 身份验证。
  • 客户端证书。

身份验证在 Metricbeat 配置文件中指定

  • 要使用 基本身份验证,请在 output.elasticsearch 下指定 usernamepassword 设置。例如

    output.elasticsearch:
      hosts: ["https://myEShost:9200"]
      username: "metricbeat_writer" 
      password: "YOUR_PASSWORD" 

    此用户需要发布事件到 Elasticsearch 所需的权限。要创建这样的用户,请参阅 创建发布用户

    此示例显示了一个硬编码的密码,但您应该将敏感值存储在 密钥存储 中。

  • 要使用基于令牌的 API 密钥身份验证,请在 output.elasticsearch 下指定 api_key。例如

    output.elasticsearch:
      hosts: ["https://myEShost:9200"]
      api_key: "ZCV7VnwBgnX0T19fN8Qe:KnR6yE41RrSowb0kQ0HWoA" 

    此 API 密钥必须具有发布事件到 Elasticsearch 所需的权限。要创建这样的 API 密钥,请参阅 使用 API 密钥授予访问权限

  • 要使用 公钥基础设施 (PKI) 证书 对用户进行身份验证,请在 output.elasticsearch 下指定 certificatekey 设置。例如

    output.elasticsearch:
      hosts: ["https://myEShost:9200"]
      ssl.certificate: "/etc/pki/client/cert.pem" 
      ssl.key: "/etc/pki/client/cert.key" 

    用于 SSL 客户端身份验证的证书路径

    客户端证书密钥

    这些设置假设证书中的区分名称 (DN) 已映射到 Elasticsearch 集群中每个节点上的 role_mapping.yml 文件中的相应角色。有关更多信息,请参阅 使用角色映射文件

    默认情况下,Metricbeat 使用 Metricbeat 运行的操作系统的受信任证书颁发机构 (CA) 列表。如果签署节点证书的证书颁发机构不在主机系统的受信任证书颁发机构列表中,则需要将包含 CA 证书的 .pem 文件的路径添加到 Metricbeat 配置中。这将配置 Metricbeat 使用特定的 CA 证书列表,而不是操作系统的默认列表。

    这是一个配置示例

    output.elasticsearch:
      hosts: ["https://myEShost:9200"]
      ssl.certificate_authorities: 
        - /etc/pki/my_root_ca.pem
        - /etc/pki/my_other_ca.pem
      ssl.certificate: "/etc/pki/client.pem" 
      ssl.key: "/etc/pki/key.pem" 

    指定包含证书颁发机构证书的本地 .pem 文件的路径。如果您使用自己的 CA 来签署节点证书,则需要此设置。

    用于 SSL 客户端身份验证的证书路径

    客户端证书密钥

    对于任何给定的连接,SSL/TLS 证书必须具有与为 hosts 指定的值匹配的主体,否则 SSL 握手将失败。例如,如果您指定 hosts: ["foobar:9200"],则证书必须在主体中包含 foobarCN=foobar)或作为主体备用名称 (SAN)。确保主机名解析为正确的 IP 地址。如果 DNS 不可用,则可以在 /etc/hosts(在 Unix 上)或 C:\Windows\System32\drivers\etc\hosts(在 Windows 上)中将 IP 地址与您的主机名关联。

与 Kibana 端点建立安全通信

编辑

如果您已配置 Kibana 端点,您还可以在 kibana.setup 下指定用于对 Kibana 进行身份验证的凭据。如果未指定任何凭据,则 Kibana 将使用 Elasticsearch 输出中配置的身份验证方法。

例如,指定一个唯一的用户名和密码来连接到 Kibana,如下所示

setup.kibana:
  host: "mykibanahost:5601"
  username: "metricbeat_kib_setup" 
  password: "YOUR_PASSWORD" 

此用户需要设置仪表盘所需的权限。要创建这样的用户,请参阅 创建设置用户

此示例显示了一个硬编码的密码,但您应该将敏感值存储在 密钥存储 中。

详细了解安全通信

编辑

有关将数据发送到安全集群的更多信息,请参阅配置参考