Elasticsearch 添加权限管理
Elasticsearch
默认是没有权限管理的, 只要能ping
通地址的地方就可以读写数据, 所以还是很危险的, 这里选择使用插件shield
来实现
环境版本
- Elasticsearch 2.4.4
插件安装
# 这是收费插件, 安装后免费使用一个月, 到期后集群功能不能用,但基本api不受影响
bin/plugin install license
bin/plugin install shield
service elasticsearch restart
添加用户
# lion 是用户名, 可以改成自己想要的
bin/shield/esusers useradd lion -r admin
# 再输入两次密码即可
常用用户管理命令:
bin/shield/esusers -h # 查看帮助
bin/shield/esusers list # 查看用户列表
bin/shield/esusers passwd lion # 修改密码
bin/shield/esusers userdel lion # 删除用户
在 cli 环境下操作 elasticsearch 加 - u 用户名
curl -u lion x.x.x.x:9200/_cat/indices?pretty
# 按提示输出密码
Kibana 配置
在 kibana
配置文件 KAFKA_PATH/config/kibana.yml
里添加帐号密码
elasticsearch.username: "lion"
elasticsearch.password: "xxxxxxx"
再重启 kibana
Logstash 配置
elasticsearch-output
里添加两项:
elasticsearch {
hosts => ...
# 添加下面
user => "lion"
password => "xxxxxxx"
}
Hangout 配置
Hangout 是携程团队用 java
开发的代替 logstash
的一个日志手机工具, 还未提供 http ssl
认证支持...
php-elasticsearch 配置
php-elasticsearch 里初始化 elasticsearch
连接一般使用这种方式
$client = ClientBuilder::create()->setHosts($hosts)->build();
修改 $hosts
这里
第一种方式 :
$hosts = [
// This is effectively equal to: "https://username:password!#$?*abc@foo.com:9200/"
[
'host' => 'foo.com',
'port' => '9200',
'scheme' => 'https',
'user' => 'username',
'password' => 'password!#$?*abc'
],
// This is equal to "http://localhost:9200/"
[
'host' => 'localhost', // Only host is required
]
];
第二种方式, 简单, 推荐
$hosts = [
'http://user:pass@localhost:9200', // HTTP Basic Authentication
'http://user2:pass2@other-host.com:9200' // Different credentials on different host
];
取消权限认证
如果设置后想取消, 光删除用户是没用的,需要卸载 shield
插件
bin/plugin remove shield