简介
Elasticsearch中有些配置是非常敏感的(例如不希望其他人能够直接通过文本编辑的方式就能查看配置的值),如果只是通过操作系统的文件权限来控制(例如Linux的文件访问权限)并非特别有效,因此,Elasticsearch提供了一种 Secure Settings(安全的配置)。
该配置的实现方式是通过提供一个工具 elasticsearch-keystore tool 以命令的方式存储及维护配置的值,这些值会存储在 keystore 文件中,甚至可以为 keystore 设置密码,这样在通过工具维护配置值的时候,还需要校验密码,而且 keystore 文件无法使用文本编辑器来正确打开其内容。
所有的安全配置都是针对具体节点的,其值的设定也是通过键值对来指定,这些配置值会在节点重启之后生效(有些配置是不需要重启,可以通过API生效的)。目前,所有的安全配置都是针对节点的,并且要求集群内所有的节点的安全配置值一致。
只有某些配置会从keystore中读取,同时也没有没有对这些配置的安全校验,添加一些不支持的配置会导致Elasticsearch启动失败。
在配置引用上如果有 "Secure" 标记的才是支持的。
正文
可重载的安全配置
对于正在运行的节点,有些安全配置,能够在不重启节点的情况下就生效,通过如下API使之生效
POST _nodes/reload_secure_settings
{
"secure_settings_password": "keystore-password"
}
keystore-password:是创建keystore时,或后面指定密码时输入的密码;
该API调用后,所有的可重载的安全配置都会重新加载,所有,应该先更改所有的配置,然后再访问该API,而不是修改一个,访问一下这个API。
这里列出一些可重载的API供大家查阅:
- The Azure repository plugin
- The EC2 discovery plugin
- The GCS repository plugin
- The S3 repository plugin
- Monitoring settings
- Watcher settings
总结
需要知道Elasticsearch并不是所有的配置都是在 elasticsearch.yml 中,有些出于安全性考虑的配置是需要通过工具 elasticsearch-keystore tool 来维护的。
这些安全配置,又分为可以热重载和不可热重载的,注意实际配置过程中,根据其特性来重载。