zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    使用HTTP协下载文件
    DNS协议 实践
    操作系统学习笔记 线程
    操作系统学习笔记 进程
    操作系统学习笔记 操作系统概述
    操作系统学习笔记 栈
    操作系统学习笔记 概述
    C语言中的fread和fwrite
    【原】python-jenkins信息
    【转】通过python调用jenkins 常用api操作
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12048423.html
Copyright © 2011-2022 走看看