阻止未授权和区分用户

Block unauthorized and distinguish users

Logstash 有一个开放的端口,每个人都可以在其中发送数据。

  1. 匿名数据搞砸了一切
  2. 一个池中所有客户的所有数据也一团糟。

所以我阅读并尝试了 https://www.elastic.co/guide/en/x-pack/5.6/logstash.html(也适用于版本 6 和 7),但似乎并非如此。它更愿意针对 elasticsearch 进行身份验证,而不是在 logstash 前面进行身份验证。我喜欢的是这样的:

input {
    # One port to rule them all - possible?
    tcp {
        port => 5000
    }
}

output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        user => elastic
        password => nope
        document_id => "%{[@metadata][fingerprint]}"
        # Here comes the user prefix again.
        index => "%{[user]}-%{[host]}-%{+YYYY.MM.dd}"
    }
    if [user] == "foo" {
        # Also put things in IRC
    }
    if [user] == "qux" {
        # Forward somewhere else
    }
}

最后,我们希望在使用 Elastic 或 Kibana 时将数据分离可用,这在我阅读文档时可能没什么大不了的。但是我也觉得logstash前面应该有一些auth。如果我错了请纠正我。

如果没有:

  1. 如何防止匿名数据?
  2. 如何区分好?

由于您无法更改原始消息,因此您需要根据发送该消息的主机进行过滤,您可以为此使用主机字段,因为您似乎已经在输出中这样做了。

要防止匿名数据,您可以使用 SSL,这样每台发送到您的 logstash 的机器都需要有证书文件,或者您可以在 logstash 机器上配置防火墙并将其配置为仅允许来自您的客户的连接。

你说的x-pack安全功能是付费功能,但是它的重点是在elasticsearch/kibana上加了一个安全层,logstash前面没有auth,要做到这一点你需要防火墙规则 and/or ssl 证书。