title: logstash对敏感信息加密使用 #标题tags: logstash #标签
date: 2020-05-31
categories: elastic stack # 分类
在6.8以上的版本,默认免费版的es集群也支持了TLS加密访问,但是呢,如果logstash想要将数据写入到es中,那么无可避免的要在配置文件中写入es集群的用户名及密码,那么怎么来保证这些敏感信息不会泄露呢?
相信大多数人在为es集群配置了TLS加密后,logstash都是这样来指定output的,如下:
output {
elasticsearch {
hosts => ["http://es1:9200", "http://es2:9200","http://es3:9200"]
index => "secure-%{+YYYY.MM.dd}"
user => "elastic"
password => "lkmg76aI8B99OW59avft"
}
}
嗯,没错,就是这样,user和password就这样写在了配置文件中,按照正常套路,es肯定不会这么low的,那么正确的配置应该是怎样呢?接着往下看。
创建keystore
./bin/logstash-keystore create # 创建keystore
WARNING: The keystore password is not set. Please set the environment variable `LOGSTASH_KEYSTORE_PASS`. Failure to do so will result in reduced security. Continue without password protection on the keystore? [y/N] y
Created Logstash keystore at /root/logstash-7.6.2/config/logstash.keystore
$ ll config/logstash.keystore # 确认密钥库文件已存在
# 如果启动用户不是root,那么请修改为正确的权限
-rw-r--r-- 1 root root 970 5月 31 14:25 config/logstash.keystore
添加要加密的key
$ ./bin/logstash-keystore add LOGSTASH_USER # 添加名为LOGSTASH_USER的变量(变量名为自定义)
Enter value for LOGSTASH_USER: # 这里写入我们es集群的用户名
Added 'logstash_user' to the Logstash keystore.
$ ./bin/logstash-keystore add LOGSTASH_PWD # 再添加一个key值,用于保存对应的密码
Enter value for LOGSTASH_PWD: # 输入上面用户对应的密码
Added 'logstash_pwd' to the Logstash keystore.
$ cat config/logstash.keystore # 不要试图这样去查看这个文件,除了一坨乱码以外,你什么都看不到
配置文件中使用加密后的信息
经过上述配置,我们就可以在配置文件中这样使用加密后的用户名密码了,如下:
output {
# stdout { codec => rubydebug }
elasticsearch {
hosts => ["http://es1:9200", "http://es2:9200","http://es3:9200"]
index => "logstash-nginx-%{+yyyy.MM.dd}"
user => "${LOGSTASH_USER}" # 就和shell中使用变量一样来使用就ok了
password => "${LOGSTASH_PWD}"
}
}
logstash-keystore的其它命令
./bin/logstash-keystore list #查看添加了哪些变量key
./bin/logstash-keystore remove MYSQL_PWD #删除变量key