用于安全设置的密钥库
编辑用于安全设置的密钥库编辑
配置 Logstash 时,您可能需要指定敏感设置或配置,例如密码。您可以使用 Logstash 密钥库安全地存储用于配置设置的密钥值,而不是依赖文件系统权限来保护这些值。
将密钥及其密钥值添加到密钥库后,您可以在配置敏感设置时使用密钥代替密钥值。
引用密钥的语法与环境变量的语法相同
${KEY}
其中 KEY 是密钥的名称。
示例
假设密钥库包含一个名为 ES_PWD
的密钥,其值为 yourelasticsearchpassword
。
在配置文件中,使用
output { elasticsearch {...password => "${ES_PWD}" } } }
在 logstash.yml
中,使用
xpack.management.elasticsearch.password: ${ES_PWD}
请注意,Logstash 密钥库与 Elasticsearch 密钥库不同。Elasticsearch 密钥库允许您按名称存储 elasticsearch.yml
值,而 Logstash 密钥库允许您指定可以在 Logstash 配置中引用的任意名称。
有些配置字段没有秘密含义,因此并非每个字段都可以利用密钥库进行变量替换。插件的 id
字段就是这种字段。
当前不支持从 pipelines.yml
或命令行 (-e
) 引用密钥库数据。
从集中式管道管理引用密钥库数据需要每个 Logstash 部署都有一个密钥库的本地副本。
Logstash 密钥库需要受到保护,但 Logstash 用户必须有权访问该文件。虽然 Logstash 中的大多数内容都可以使用 chown -R root:root <foo>
进行保护,但密钥库本身必须可由 Logstash 用户访问。使用 chown logstash:root <keystore> && chmod 0600 <keystore>
。
当 Logstash 解析设置 (logstash.yml
) 或配置 (/etc/logstash/conf.d/*.conf
) 时,它会在解析环境变量之前先从密钥库解析密钥。
密钥库密码编辑
您可以通过将密码存储在名为 LOGSTASH_KEYSTORE_PASS
的环境变量中来保护对 Logstash 密钥库的访问。如果您在设置此变量后创建 Logstash 密钥库,则密钥库将受密码保护。这意味着运行 Logstash 实例需要能够访问该环境变量。对于需要发出密钥库命令(添加、列出、删除等)的任何用户,也必须正确设置此环境变量。
建议使用密钥库密码,但这不是必需的。即使您没有设置密码,数据也会被加密。但是,强烈建议您配置密钥库密码,并对可能包含环境变量值的任何文件授予限制性权限。如果您选择不设置密码,则可以跳过本节的其余部分。
例如
set +o history export LOGSTASH_KEYSTORE_PASS=mypassword set -o history bin/logstash-keystore create
此设置要求运行 Logstash 的用户定义环境变量 LOGSTASH_KEYSTORE_PASS=mypassword
。如果未定义环境变量,则 Logstash 无法访问密钥库。
当您从 RPM 或 DEB 软件包安装运行 Logstash 时,环境变量来自 /etc/sysconfig/logstash
。
您可能需要创建 /etc/sysconfig/logstash
。此文件应归 root
所有,权限为 600
。/etc/sysconfig/logstash
的预期格式为 ENVIRONMENT_VARIABLE=VALUE
,每行一个条目。
对于其他发行版,例如 Docker 或 ZIP,请参阅您的运行时环境(Windows、Docker 等)的文档,以了解如何为运行 Logstash 的用户设置环境变量。确保只有该用户才能访问环境变量(以及密码)。
密钥库位置编辑
密钥库必须位于 Logstash path.settings
目录中。这与包含 logstash.yml
文件的目录相同。对密钥库执行任何操作时,建议为密钥库命令设置 path.settings
。例如,要在 RPM/DEB 安装上创建密钥库
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 目录布局。
如果 path.settings
未指向与 logstash.yml
相同的目录,您将看到警告。
创建或覆盖密钥库编辑
create
命令创建一个新的密钥库或覆盖现有的密钥库
bin/logstash-keystore create
在 path.settings
设置中定义的目录中创建密钥库。
如果密钥库已存在,则 create
命令可以覆盖它(在出现 Y/N 提示后)。选择 Y
将清除之前存储的所有密钥和密钥值。
创建密钥库时设置密钥库密码。
添加密钥编辑
要存储敏感值,例如 Elasticsearch 的身份验证凭据,请使用 add
命令
bin/logstash-keystore add ES_USER ES_PWD
出现提示时,请输入每个密钥的值。
密钥值限制为 ASCII 字符。它包括数字、字母和一些特殊符号。
列出密钥编辑
要列出密钥库中定义的密钥,请使用
bin/logstash-keystore list
删除密钥编辑
要从密钥库中删除密钥,请使用
bin/logstash-keystore remove ES_USER ES_PWD