12. 安全配置
一些设置是敏感的,依赖文件系统权限来保护它们的值是不足够的。为此,Elasticsearch 提供了一个密钥存储(keystore)和 elasticsearch-keystore 工具来管理密钥存储中的设置。
只有一些设置被设计为从密钥存储中读取。然而,密钥存储没有验证机制来阻止不受支持的设置。向密钥存储添加不受支持的设置会导致 Elasticsearch 无法启动。要查看设置是否在密钥存储中受支持,请查看设置参考中是否有 "Secure" 修饰符。
对密钥存储的所有修改只有在重新启动 Elasticsearch 后才会生效。
这些设置与 elasticsearch.yml 配置文件中的常规设置一样,需要在集群中的每个节点上指定。目前,所有安全设置都是节点特定的设置,必须在每个节点上具有相同的值。
可重新加载的安全设置
与elasticsearch.yml中的设置值一样,对密钥存储内容的更改不会自动应用于正在运行的Elasticsearch节点。重新读取设置需要重新启动节点。然而,某些安全设置被标记为可重新加载。这些设置可以在运行中的节点上重新读取和应用。
所有安全设置的值,无论是否可重新加载,都必须在所有集群节点上保持相同。在进行所需的安全设置更改后,使用bin/elasticsearch-keystore add命令后,调用:
POST _nodes/reload_secure_settings
{
"secure_settings_password": "keystore-password"
}
这是Elasticsearch密钥存储加密的密码。
该API解密并重新读取整个密钥存储,对每个集群节点都有效,但只有可重新加载的安全设置会被应用。对其他设置的更改直到下一次重启才会生效。一旦调用返回,重新加载就已完成,这意味着所有依赖这些设置的内部数据结构都已更改。一切应该看起来就像设置从一开始就具有新值一样。
在更改多个可重新加载的安全设置时,在每个集群节点上修改所有这些设置,然后在每次修改之后发出reload_secure_settings调用,而不是在每次修改之后重新加载。