ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[TOC] ### Secrets keystore for secure settings 当你配置Logstash的时候,你可能需要指定敏感设置或配置,如密码。你可以使用Logstash keystore安全的存储这些秘密的数据以便在配置中使用,而不是依赖文件系统权限来保护这些数据。 在往keystore添加一个key和其Secret value之后,你就可以在配置敏感设置的时候使用key来替代Secret value。 引用key的方式(语法)和引用[变量](https://www.elastic.co/guide/en/logstash/current/environment-variables.html)的方式(语法)是一样的: `${KEY}` 花括号中是key的名字。 如:假定keystore中包含一个名为`ES_PWD`值为`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配置中引用的名字。(原文:Whereas the Elasticsearch keystore lets you store `elasticsearch.yml` values by name, the Logstash keystore lets you specify arbitrary names that you can reference in the Logstash configuration.) > <font color=#DC143C size=4>NOTE</font>:目前不支持从`pipeline.yml`文件和命令行(-e)选项引用keystore 数据。 > <font color=#DC143C size=4>NOTE</font>:从[centralized pipeline management](http://www.elastic.co/guide/en/logstash/6.x/logstash-centralized-pipeline-management.html)引用keystore数据,需要每一个部署Logstash的实例本地有一个keystore副本。 当Logstash分析设置(`logstash.yml`)或配置(`/etc/logstash/conf.d/*.conf`)的时候,会在解析变量之前从keystore解析key。 ### Keystore password 你可以通过在环境变量`LOGSTASH_KEYSTORE_PASS`中存储密码来保护对Logstash keystore的访问。如果你在设置了这个变量之后创建Logstash keystore,这个keystore会被密码保护。这意味着这个环境变量必须可以被运行的Logstash实例访问。对于任何需要发出keystore命令的用户,也必须正确设置此环境变量。 我们推荐使用keystore密码,但这并不是强制的。即使你没有设置密码,数据依然会被加密。但是,我们仍然强烈建议您设置密码,并且对任何可能包含密码的环境变量的文件进行权限控制。如果你决定不设置密码,你可以跳过此章节。 示例: ```shell set +o history export LOGSTASH_KEYSTORE_PASS=mypassword set -o history bin/logstash-keystore create ``` 此设置要求运行Logstash的用户定义环境变量LOGSTASH_KeyStore_PASS=mypassword。如果未定义环境变量,则Logstash无法访问keystore。(原文:This setup requires the user running Logstash to have the environment variable`LOGSTASH_KEYSTORE_PASS=mypassword` defined. If the environment variable is not defined, Logstash cannot access the the keystore.) 当你运行RPM或DEB包安装的Logstash的时候,环境变量来自于`/etc/sysconfig/logstash`。 > <font color=#DC143C size=4>NOTE</font>:你可能需要手动创建`/etc/sysconfig/logstash`文件。文件的属主必须是`root`权限`600`。文件内容的格式是`ENVIRONMENT_VARIABLE=VALUE`,每行一个条目。 对于如其他分发版,如Docker或ZIP,查看你的运行环境的文档(Windows,Docker,etc)来学习如何给运行Logstash的用户设置变量。并确保变量(以及密码)只能被那个用户访问。 ### Keystore location(Keystore的位置) Keystore必须位于Logstash的`path.settings`目录。此目录和包含`logstash.yml`文件的目录是同一个目录。当对Keystore执行任何操作的时候,建议为Keystore 命令设置`path.settings`。如,对于使用RPM和DEB安装的Logstash创建一个keystore: ```shell set +o history export LOGSTASH_KEYSTORE_PASS=mypassword set -o history sudo -E /usr/share/logstash/bin/logstash-keystore --path.settings /etc/logstash create ``` 查看[Logstash目录布局](https://www.elastic.co/guide/en/logstash/current/dir-layout.html)来获取更多关于默认目录位置的信息。 > <font color=#DC143C size=4>NOTE</font>:如果给`path.settings`指定了一个和`logstash.yml`所在目录不同的目录,你将会收到一个警告。 ### Create a keystore 使用`create`来创建一个keystore: ```shell bin/logstash-keystore create ``` 创建的keystore所在目录是在`path.settings`配置中定义的。 > <font color=#DC143C size=4>NOTE</font>:创建keystore的时候建议设置一个[keystore password](https://www.elastic.co/guide/en/logstash/current/keystore.html#keystore-password)。 ### Add keys 要存储敏感信息,如Elasticsearch的认证凭据,使用`add`命令: ```shell bin/logstash-keystore add ES_PWD ``` 当出现提示的时候,为key输入一个值。 ### List keys 要查看keystore中定义的key列表,使用: ```shell bin/logstash-keystore list ``` ### Remove keys 从keystore中移除key,使用: ```shell bin/logstash-keystore remove ES_PWD ```