阻止未授权和区分用户
Block unauthorized and distinguish users
Logstash 有一个开放的端口,每个人都可以在其中发送数据。
- 匿名数据搞砸了一切
- 一个池中所有客户的所有数据也一团糟。
所以我阅读并尝试了 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。如果我错了请纠正我。
如果没有:
- 如何防止匿名数据?
- 如何区分好?
由于您无法更改原始消息,因此您需要根据发送该消息的主机进行过滤,您可以为此使用主机字段,因为您似乎已经在输出中这样做了。
要防止匿名数据,您可以使用 SSL,这样每台发送到您的 logstash 的机器都需要有证书文件,或者您可以在 logstash 机器上配置防火墙并将其配置为仅允许来自您的客户的连接。
你说的x-pack安全功能是付费功能,但是它的重点是在elasticsearch/kibana上加了一个安全层,logstash前面没有auth,要做到这一点你需要防火墙规则 and/or ssl 证书。
Logstash 有一个开放的端口,每个人都可以在其中发送数据。
- 匿名数据搞砸了一切
- 一个池中所有客户的所有数据也一团糟。
所以我阅读并尝试了 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。如果我错了请纠正我。
如果没有:
- 如何防止匿名数据?
- 如何区分好?
由于您无法更改原始消息,因此您需要根据发送该消息的主机进行过滤,您可以为此使用主机字段,因为您似乎已经在输出中这样做了。
要防止匿名数据,您可以使用 SSL,这样每台发送到您的 logstash 的机器都需要有证书文件,或者您可以在 logstash 机器上配置防火墙并将其配置为仅允许来自您的客户的连接。
你说的x-pack安全功能是付费功能,但是它的重点是在elasticsearch/kibana上加了一个安全层,logstash前面没有auth,要做到这一点你需要防火墙规则 and/or ssl 证书。