安全设置

编辑

一些设置是敏感的,仅仅依靠文件系统权限来保护它们的值是不够的。对于这种情况,Elasticsearch 提供了一个密钥库和 elasticsearch-keystore 工具 来管理密钥库中的设置。

只有部分设置设计为从密钥库读取。向密钥库添加不支持的设置会导致 _nodes/reload_secure_settings API 中的验证失败,如果未解决,将导致 Elasticsearch 启动失败。要查看某个设置是否在密钥库中受支持,请在设置参考中查找 “Secure” 限定符。

所有对密钥库的修改仅在重启 Elasticsearch 后生效。

这些设置,就像 elasticsearch.yml 配置文件中的常规设置一样,需要在集群中的每个节点上指定。目前,所有安全设置都是节点特定的设置,必须在每个节点上具有相同的值。

可重载的安全设置

编辑

就像 elasticsearch.yml 中的设置值一样,对密钥库内容的更改不会自动应用于正在运行的 Elasticsearch 节点。重新读取设置需要重启节点。但是,某些安全设置被标记为 可重载。此类设置可以在运行的节点上重新读取并应用。

您可以在启动节点之前定义这些设置,或者在定义设置后调用 节点重载安全设置 API 将其应用到正在运行的节点。

所有安全设置的值,无论是否 可重载,都必须在所有集群节点上完全相同。在进行所需的安全设置更改后,使用 bin/elasticsearch-keystore add 命令,调用

resp = client.nodes.reload_secure_settings(
    secure_settings_password="keystore-password",
)
print(resp)
response = client.nodes.reload_secure_settings(
  body: {
    secure_settings_password: 'keystore-password'
  }
)
puts response
const response = await client.nodes.reloadSecureSettings({
  secure_settings_password: "keystore-password",
});
console.log(response);
POST _nodes/reload_secure_settings
{
  "secure_settings_password": "keystore-password" 
}

用于加密 Elasticsearch 密钥库的密码。

此 API 解密、重新读取整个密钥库并验证每个集群节点上的所有设置,但仅应用 可重载 的安全设置。对其他设置的更改要到下次重启后才会生效。一旦调用返回,重载就已完成,这意味着所有依赖这些设置的内部数据结构都已更改。一切都应该看起来好像这些设置从一开始就具有新值。

在更改多个 可重载 安全设置时,在每个集群节点上修改所有这些设置,然后发出 reload_secure_settings 调用,而不是在每次修改后重载。

以下是可重载的安全设置: