用于安全设置的密钥库编辑

配置 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