前言
2019 年 5 月 21 日,Elastic 官方博客发文称,ES 6.8 和 7.1 免费开放基本的安全功能。包括:
TLS 功能,可对通信进行加密 文件和原生 Realm,可用于创建和管理用户 基于角色的访问控制,可用于控制用户对集群 API 和索引的访问权限;通过针对 Kibana Spaces 的安全功能,还可允许在 Kibana 中实现多租户
- 铭毅天下解读: Elasticsearch 7.1免费安全功能全景认知
- 阮一鸣《Elasticsearch核心技术与实战》有对安全功能的视频讲解
- 本文对
Elasticsearch v7.13
可用
ES 安全的几个层面
- 集群身份认证与用户鉴权(账号密码)
- 集群内部安全通信(
9300
) - 集群与外部间的安全通信(
https
) - 本文只讲最基本的账号密码设置
- ES 内置用户:https://www.elastic.co/guide/...
账号密码配置
打开配置文件
elasticsearch.yml
,修改或添加以下内容xpack.security.enabled: true
重启 elasticsearch
sudo systemctl restart elasticsearch
生成密码(特别要记住
elastic
和kibana_system
的密码)# 自动生成(须记住密码!!) /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto # 手动生成 /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
打开配置文件
kibana.yml
,修改或添加以下内容elasticsearch.username: "kibana_system" elasticsearch.password: "刚才生成的密码
- 重启 kibana,使用
elastic
账号登录 - 可在 Stack Managent 下创建不同的角色和用户
Python 客户端调用示例
from elasticsearch import Elasticsearch
host = '192.168.2.3:9200'
user = 'elastic'
pwd = 'xxx'
# 下面两种格式二选一
es = Elasticsearch(host, http_auth=(user, pwd))
#es = Elasticsearch(f'http://{user}:{pwd}@{host}')
es.cat.nodes()