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

原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12048423.html

时间: 2024-10-14 09:54:18

logstash 对配置文件conf敏感信息,密码等加密的相关文章

使用keychain保存用户名和密码等敏感信息 KeychainItemWrapper和SFHFKeychainUtils

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储.相对于 NSUserDefaults.文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在 重装App后,keychain里的数据还能使用.从ios 3.0开始,跨程序分享keychain变得可行. 如何需要在应用里使用使用keyChain,我们需要导入Security.framework ,key

iOS开发中——如何保存用户敏感信息(用户名和密码等信息)

使用Keychain存储用户敏感信息 iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储.相对于NSUserDefaults.文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用.从ios 3.0开始,跨程序分享keychain变得可行. 如何需要在应用里使用使用keyChain,我们需要导入Securi

Python中敏感信息(用户名、密码等)处理方法——添加到环境变量

前言: 写python程序时,经常碰到如:发送邮件.配置账号信息.难免需要在python程序中明文填写敏感信息,这个时候可以将敏感信息写入系统环境变量,通过python自带os模块去获取变量. Linux下: [email protected]:~# export USERNAME=cctv [email protected]:~# [email protected]:~# python Python 2.7.3 (default, Mar 14 2014, 11:57:14) [GCC 4.7

史上最全Linux提权后获取敏感信息方法

在本文开始之前,我想指出我不是专家.据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点).下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物.我知道有更多的“东西”去寻找.这只是一个基本粗略的指南.并不是每一个命令,做好要注重细节. 文中的每行为一条命令,文中有的命令可能在你的主机上敲不出来,因为它可能是在其他版本的linux中所使用的命令. 列举关键点 (Linux)的提权是怎么一回事:  收集 – 枚举,枚举和一些更多的枚举.  过程 – 

逆向路由器固件之敏感信息泄露 Part2

之前的文章中详细介绍了各种解包路由器固件的工具.解包之后就获得了固件中的文件.下一步就是分析文件寻找漏洞了.这次分析的目标是Trendnet路由器,分析的漏洞是一个远程获取路由器权限的漏洞. 初步分析 通过路由器的登录界面得知路由器型号为Trendnet TEW-654TR,这对收集目标的信息是很有帮助的.通过官方介绍得知该路由器的一些特性.包括支持路由器,无线接入点,无线接入点客户端三种模式,支持NAT和有状态的包检查防御攻击以及有一个简单的web界面支持远程管理等.官网目前最新版固件为V1.

jboss加密敏感信息

默认情况下,我们配置在domain.xml或host.xml文件中的信息都是明文,对一些敏感信息就显得安全性不够,可以使用jboss提供的vault机制来进行加密 下面的内容来自 http://www.cnblogs.com/yjmyzz/p/how-to-encrypt-datasource-password-with-jboss-eap-6.html 1. 利用keytool生成keystore文件,参考命令如下: keytool -genseckey -alias ctas -storet

轻松测试 logstash 的配置文件

配置文件本身非常脆弱!所以修改配置文件自然会引入部署失败的风险.如果能够对配置文件进行自动化测试将会极大的降低这种风险.本文将介绍一个可以自动化测试 logstash 配置文件的工具,让大家可以像写单元测试用例一样为 logstash 配置文件创建测试 case,并以快速迭代的方式变更 logstash 配置文件. 噩梦 在很多真实环境中,变更 logstash 的配置文件几乎是个噩梦.日志不是结构化的格式(甚至是乱七八糟!),导致我们几乎必须一个一个地处理日志,并对解析什么和不解析什么做出逻辑

Web应用程序的敏感信息-隐藏目录和文件

Web应用程序的敏感信息-隐藏目录和文件 0x1.场景 Web应用程序根文件夹中可能存在大量隐藏信息:源代码版本系统文件夹和文件(.git,.gitignore,.svn),项目配置文件(.npmrc,package.json,.htaccess),自定义配置文件使用config.json,config.yml,config.xml等常见扩展以及许多其他扩展. 资源可以分为几个常见类别: 源代码版本控制系统 IDE(集成开发环境)配置文件 项目和/或技术特定的配置和设置文件 1.1.GIT Gi

[Shell]Bash变量:环境变量的配置文件和登录信息

----------------------------------------------------------------------------------------- 只有把环境变量放入配置文件中,才能每次开机自动生效.source命令:让配置文件直接生效,而不用注销或重新登录. source 配置文件 或者 . 配置文件(等同于 source 配置文件) [系统中五类环境变量配置文件] /etc/profile /etc/profile.d/*.sh ~/.bash_profile