Elastic Cloud、Filebeat 和 Key/Token 身份验证

Elastic Cloud, Filebeat, and Key/Token Authentication

是否可以配置 filebeat 以使用令牌身份验证与弹性云实例通信

根据 to the docs,如果我使用的是云实例,我应该在 filebeat.yml

中配置 cloud.idcloud.auth
cloud.id: "..."
cloud.auth: "filebeat_setup:YOUR_PASSWORD" 

文档说 cloud.auth 应该是我的 Elastic Cloud 实例中的用户名和密码。我想改用 api_key。但是,当我配置 API key

output.elasticsearch:
  # Authentication credentials - either API key or username/password.
  api_key: "key-id:key-value"

并尝试测试我的连接,

$ sudo filebeat test output
elasticsearch: https://...:443...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 52.202.123.120, 18.214.74.184, 50.19.154.221
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.2
    dial up... OK
  talk to server... ERROR 401 Unauthorized: {"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":["Basic realm=\"security\" charset=\"UTF-8\"","Bearer realm=\"security\"","ApiKey"]}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":["Basic realm=\"security\" charset=\"UTF-8\"","Bearer realm=\"security\"","ApiKey"]}},"status":401}
  

看来 filebeat 不承认我的 API 密钥

"root_cause":[
    {
     "type":"security_exception",
     "reason":"missing authentication credentials for REST request [/]"
/* ... */
         

我已使用此令牌通过 @elastic/elasticsearch javascript 包成功连接到我的云实例。

在我继续调试这个问题之前——是否 可能 使用令牌身份验证通过 filebeat 连接到 Elasticsearch?还是 filebeat 只支持 username/password 认证?

这个问题的答案原来是:是的,即使您使用的是弹性云,您也可以将 api_key 与 filebeat 一起使用。

虽然在我的配置测试期间收到错误消息

missing authentication credentials for REST request

表示缺少身份验证,真正的问题是我之前成功使用的密钥最近过期了。我假设 filebeat 尝试了 API 密钥,被拒绝了,然后回退到尝试用户凭据。当缺少这些凭据时,会出现上述错误。