Elasticsearch 7.3.2能否事后配置安全防护?需API访问验证密码
事后为已部署的Elasticsearch 7.3.2配置安全防护的方法
当然没问题!很多人误以为密码只能在Elasticsearch初始化阶段设置,但7.x版本(包括你使用的7.3.2)完全支持事后开启安全防护,让RESTful API的调用者必须提供密码才能访问。下面是具体的操作步骤:
修改Elasticsearch配置文件
找到你的elasticsearch.yml配置文件(通常在/etc/elasticsearch/或部署目录的config文件夹下),添加以下配置项:xpack.security.enabled: true xpack.security.transport.ssl.enabled: true解释一下:
xpack.security.enabled用来开启核心安全模块,而xpack.security.transport.ssl.enabled是加密节点间的通信——7.3.2版本开启安全功能后,这个配置是强制要求的,否则集群无法正常运行。重启Elasticsearch服务
根据你的部署方式重启服务,比如用systemd管理的话:sudo systemctl restart elasticsearch确保服务重启成功后再进行下一步。
设置内置用户密码
Elasticsearch提供了内置用户(比如超级用户elastic、Kibana专用用户kibana等),你可以通过两种方式设置密码:- 自动生成随机密码:执行以下命令,系统会为所有内置用户生成随机密码,记得把输出的密码保存好:
./bin/elasticsearch-setup-passwords auto - 手动设置自定义密码:执行交互式命令,逐个为每个内置用户设置你想要的密码:
./bin/elasticsearch-setup-passwords interactive
- 自动生成随机密码:执行以下命令,系统会为所有内置用户生成随机密码,记得把输出的密码保存好:
验证安全配置生效
尝试不带密码访问REST API,应该会返回401未授权错误:curl http://your-es-host:9200然后使用正确的用户名密码访问,应该能正常返回集群信息:
curl -u elastic:your-set-password http://your-es-host:9200
额外注意事项
- 如果你有Kibana、Logstash或其他依赖Elasticsearch的服务,需要同步更新它们的配置文件,填入对应的用户名和密码,否则这些服务会无法连接Elasticsearch。
- 如果是集群部署,所有节点都需要修改
elasticsearch.yml配置,然后逐个重启节点,确保整个集群的安全配置一致。 - 7.3.2版本的X-Pack安全基础功能是免费的,不需要额外购买许可即可使用。
内容的提问来源于stack exchange,提问作者cs0815




