logstash 对配置文件conf敏感信息,密码等加密
logstash的配置文件conf经常会涉及敏感信息,比如ES,mysql的账户密码等,以下使用logstash导入mysql为例子,加密隐藏mysql的密码。
在向keystore中添加key及其secret值之后,你可以在配置敏感设置时使用key代替secret值。
引用key的语法与环境变量的语法相同:${KEY},KEY是key的名称。
例如,假设keystore包含一个名为ES_PWD的key,其值为yourelasticsearchpassword:
在配置文件中使用:output { elasticsearch {...password => "${ES_PWD}" } } }
在logstash.yml中使用:xpack.management.elasticsearch.password: ${ES_PWD}
注意,Logstash keystore与Elasticsearch keystore不同,虽然Elasticsearch keystore允许你按名称存储elasticsearch.yml值,但是Logstash keystore允许你指定可在Logstash配置中引用的任意名称。
当前不支持从pipelines.yml或命令行(-e)引用keystore数据。
从集中式管道管理引用keystore数据需要每个Logstash部署都有keystore的本地副本。
当Logstash解析设置(Logstash.yml)或配置(/etc/logstash/conf.d/*.conf)时,它会在解析环境变量之前解析keystore中的key。
keystore密码
你可以通过在名为LOGSTASH_KEYSTORE_PASS的环境变量中存储密码来保护对Logstash keystore的访问,如果在设置此变量后创建Logstash keystore,它将受到密码保护。这意味着环境变量需要被正在运行的Logstash实例访问,这个环境变量还必须为需要发出keystore命令(添加、列表、删除等)的任何用户正确设置。
建议使用keystore密码,但这是可选的,即使你没有设置密码,数据也会被加密。但是,强烈建议配置keystore密码并对任何可能包含环境变量值的文件授予限制性权限,如果你选择不设置密码,那么你可以跳过本节的其余部分。
set +o history
export LOGSTASH_KEYSTORE_PASS=mypassword
set -o history
bin/logstash-keystore create
这个设置要求运行Logstash的用户定义环境变量LOGSTASH_KEYSTORE_PASS=mypassword,如果没有定义环境变量,Logstash就无法访问keystore。
当你从RPM或DEB包安装中运行Logstash时,环境变量来自/etc/sysconfig/logstash。
你可能需要创建/etc/sysconfig/logstash,这个文件应该由具有600权限的root用户拥有,/etc/sysconfig/logstash的格式应该是ENVIRONMENT_VARIABLE=VALUE,每行一个条目。
keystore位置
keystore必须位于Logstash的path.settings目录,这是包含logstash.yml文件的同一个目录。在对keystore执行任何操作时,建议为keystore命令设置path.settings,例如,在RPM/DEB安装上创建keystore :
set +o history
export LOGSTASH_KEYSTORE_PASS=mypassword
set -o history
sudo -E /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash create
如果path.settings没有指向与logstash.yml相同的目录,你将看到一个警告。
创建keystore
要创建keystore,请使用create:
bin/logstash-keystore create
在path.settings配置设置中定义的目录中创建密钥存储库。
建议在创建keystore时设置keystore密码。
添加key
要存储敏感值,比如Elasticsearch的身份验证凭证,可以使用add命令:
bin/logstash-keystore add ES_PWD
当提示时,为key输入一个值。
key列表
要列出在keystore中定义的key,请使用:
bin/logstash-keystore list
移除key
要从keystore中移除key,请使用:
bin/logstash-keystore remove ES_PWD
先创建keystore,可以不设置keystore密码,直接选择y
bin/logstash-keystore create
conf目录下会出现logstash.keystore
创建你要加密的变量key,例如这里添加mysql的密码变量 MYSQL_PWD
bin/logstash-keystore add MYSQL_PWD
然后输入要添加的密码即可
logstash-keystore的其它命令
bin/logstash-keystore list #查看添加了哪些变量key
bin/logstash-keystore remove MYSQL_PWD #删除变量key
bin/logstash-keystore -h #查看帮助
使用这些已经加密的变量key
output
{
jdbc
{
driver_jar_path => "/home/logstash-6.5.4/vendor/jar/jdbc/mysql-connector-java-5.1.47-bin.jar"
driver_class => "com.mysql.jdbc.Driver"
connection_string => "jdbc:mysql://10.43.212.46:3306/logstash?user=root&password=${MYSQL_PWD}"
statement => [ "INSERT INTO test (name,age) VALUES(?,?)", "name","age"]
}
}
汇总
logstash的配置文件中保存的有es,mysql等等的连接使用的明文密码,可以通过设置变量的方式来代替,确保安全。另外,设置变量这个操作也可以通过设置一个密码来进行,也就是说,只有验证的这个密码通过后才能设置需要使用的这些变量信息
设置这个访问变量的密码
set +o history
export LOGSTASH_KEYSTORE_PASS=mypassword
set -o history
设置变量
./bin/logstash-keystore create
./bin/logstash-keystore add ES_USER
./bin/logstash-keystore add ES_PWD
使用这些变量
# 格式:${变量名}
...
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
user => "${ES_USER}"
password => "${ES_PWD}"
}
}
其他操作
# 添加变量
bin/logstash-keystore add ES_PWD
# 查看变量列表
bin/logstash-keystore list
# 移除变量
bin/logstash-keystore remove ES_PWD
logstash 对配置文件conf敏感信息,密码等加密的更多相关文章
- 对Java配置文件中敏感信息进行加解密的工具类
在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人员看见,则可以采用加密的方式存储,程序读取后进行解密. 常见的如: 数据库用户密码,短信平台用 ...
- spring cloud实战与思考(五) JWT之携带敏感信息
需求: 需要将一些敏感信息保存在JWT中,以便提高业务处理效率. 众所周知JWT协议RFC7519使用Base64Url对Header和Payload的Json字符串进行编解码.A JWT is re ...
- jboss eap 6.2+ 版本中 加密datasource密码等敏感信息
默认情况下,在jboss eap 6.2+ 管理控制台创建datasource后,会在standalone.xml(独立模式)或host.xml(域模式)中以明文保存相关敏感信息. 这会给服务器留下安 ...
- Spring Boot: 加密应用配置文件敏感信息
Spring Boot: 加密应用配置文件敏感信息 背景 我们的应用之前使用的是Druid数据库连接池,由于需求我们迁移到HikariCP连接池,druid 数据源加密提供了多种方式: 可以在配置文件 ...
- 怎么在执行Python脚本时,密码等敏感信息也不让它出现
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...
- 逆向路由器固件之敏感信息泄露 Part2
之前的文章中详细介绍了各种解包路由器固件的工具.解包之后就获得了固件中的文件.下一步就是分析文件寻找漏洞了.这次分析的目标是Trendnet路由器,分析的漏洞是一个远程获取路由器权限的漏洞. 初步分析 ...
- Linux提权后获取敏感信息的方法与途径
在本文开始之前,我想指出我不是专家.据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点).下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物.我知道 ...
- 史上最全Linux提权后获取敏感信息方法
http://www.freebuf.com/articles/system/23993.html 在本文开始之前,我想指出我不是专家.据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享( ...
- LINUX提权后获取敏感信息之方法
文中的每行为一条命令,文中有的命令可能在你的主机上敲不出来,因为它可能是在其他版本的linux中所使用的命令. 列举关键点 (Linux)的提权是怎么一回事: 收集 – 枚举,枚举和一些更多的枚举. ...
随机推荐
- 使用ES对中文文章进行分词,并进行词频统计排序
前言:首先有这样一个需求,需要统计一篇10000字的文章,需要统计里面哪些词出现的频率比较高,这里面比较重要的是如何对文章中的一段话进行分词,例如“北京是×××的首都”,“北京”,“×××”,“中华” ...
- flask那些事(一)
flask配置文件 flask路由系统 @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route(&quo ...
- [PHP] 使用ftell和fseek函数直接定位文件位置获取部分数据
对于大文件只获取部分数据很有用 1.使用ftell函数可以获取当前指针的字节位置2.使用fseek函数可以直接定位到指定的位置3.读取指定字节的数据就可以部分获取文件内容了 <?php clas ...
- Highways POJ - 1751
题目链接:https://vjudge.net/problem/POJ-1751 思路: 最小生成树板子,只需要多记录每个dis[x]的权值是从哪个点到x这个点的. #include <stdi ...
- python安装thrift-sasl提示缺少sasl.h文件
这其实是在pip安装Cyrus-SASL bindings for Python时报的错误. 由于没有whl文件,都是源码要经过编译之后才能安装. 所以,报这个错误,一般都是缺少安装软件造成的. 不管 ...
- 如果使用jsp文件,需要在配置文件中配置resources项,才能让idea识别这个jsp文件
没有添加这一项在编译后的.class文件中的结构目录是这样子的 添加上这一个配置项,在class配置文件中的位置是这样子的: 添加的配置文件是这样子的: <resources> <r ...
- 201971010131-张兴盼《面向对象程序设计(java)》第十二周学习总结
内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...
- 201871010135 张玉晶《面向对象程序设计(java)》第十一周学习总结
项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/ ...
- web-忘记密码了
题目 随便提交一个数据 点击确定依旧跳转到原来的网页,下面网页依旧跳转到原来的网页 http://ctf5.shiyanbar.com/10/upload/step1.php/step2.php?em ...
- 【excel】=EXACT(A1,B1) 比较两个字符串是否相等
相等返回true 不相等返回false