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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM