安全设置的密钥库

编辑

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