自定义内置账号
- 账户elastic为elasticsearch超级管理员,拥有所有权限
- 账户kibana用于kibana组件获取相关信息用于web展示
- 账户logstash_system用于logstash服务获取elasticsearch的监控数据
- 注意:此步骤需先启动elasticsearch服务
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ ./bin/x-pack/setup-passwords interactive |
验证内置账户访问
- 若不提供用户名密码则返回401
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ curl 'http://10.59.30.96:9200/_cat/indices?pretty' |
提供相应用户信息后可访问,若用户权限不足则返回403
使用logstash_system用户访问
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ curl 'http://10.59.30.96:9200/_cat/indices?pretty' -u logstash_system:logstash_system |
- 使用kibana用户访问
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ curl 'http://10.59.30.96:9200/_cat/indices?pretty' -u kibana:kibana |
添加自定义角色
添加角色接口为 POST /_xpack/security/role/
下述示例为添加超级管理员角色的方法
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ curl -XPOST -H 'Content-type: application/json' -u elastic:elastic 'http://10.59.30.96:9200/_xpack/security/role/admin?pretty' -d '{ |
添加自定义账户
添加用户接口为 POST /_xpack/security/user/
下述为添加martin账户并添加至admin角色操作方法
1 | [elasticsearch-6.0.0]$ curl -XPOST -H 'Content-type: application/json' -u elastic:elastic 'http://10.59.30.96:9200/_xpack/security/user/martin?pretty' -d '{ elasticsearch |
修改账户密码
- 修改密码需使用超级管理员权限即elastic账户,接口为POST _xpack/security/user/
/_password
curl参数含义如下
- -XPOST 使用post方法传递参数
- -H 指定http协议的header信息
- -u 指定用于认证的用户信息用户名与密码使用冒号分隔
- -d 指定具体要传递的参数信息
1 | [elasticsearch-6.0.0]$ curl -XPOST -H 'Content-type: application/json' -u elastic:elastic 'http://10.59.30.96:9200/_xpack/security/user/kibana/_password?pretty' -d '{"password": "123456"}' elasticsearch |
- 密码修改后使用老密码访问则返回401,使用更新后的密码则正常
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ curl 'http://10.59.30.96:9200/_cat/indices?pretty' -u kibana:kibana |
配置ldap帐号认证
ldap服务安装可参考:https://segmentfault.com/a/11...
添加下述ldap相关述配置 bind_dn为ldap的管理DN
- bind_password为管理dn的密码
- user_search.base_dn为linux系统账户信息导入ldap的信息
- user_search.attribute为账户在ldap中的标识信息
- group_search.base_dn为linux系统组信息导入ldap的信息
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ vim config/elasticsearch.yml |
配置AD域帐号认证
添加下ldap相关述配置至elasticsearch.yml,此处为接着上述LDAP配置添加,如果只需配置AD认证请将ldap相关配置删除即可;
- domain_name为AD域的域名
- url为AD域的地址
- bind_dnw为随意的域账户名称(格式为user@domain)
- bind_password为上述账户的密码
1 | xpack: |
重启elasticsearch服务并使用ldap域账户user01登录
1 | [elasticsearch-6.0.0]$ killall java elasticsearch |
使用AD域账户martin登录
1 | [elasticsearch-6.0.0]$ curl http://10.59.30.96:9200/_cat?pretty -u martin:AD.123456 elasticsearch |
为域账户信息映射角色
接口为:POST /_xpack/security/role_mapping/
下述为映射user1*账户为管理员角色的操作步骤
1 | [elasticsearch-6.0.0]$ curl -XPOST -H 'Content-type: application/json' -u elastic:elastic 'http://10.59.30.96:9200/_xpack/security/role_mapping/ldap_user_admin?pretty' -d '{ elasticsearch |
验证域账户权限,使用user01无权访问indices接口,使用user11可以访问;
1 | [elasticsearch@elasticsearch elasticsearch-6.0.0]$ curl -XGET -u user01:user01 'http://10.59.30.96:9200/_cat/indices?pretty' |
常见报错
No subject alternative names matching IP address
1 | [2018-01-10T19:19:35,483][WARN ][o.e.x.s.t.n.SecurityNetty4Transport] [fzP4t-4] exception caught on transport layer [[id: 0x5d97fe48, L:/0:0:0:0:0:0:0:1:49121 ! R:/0:0:0:0:0:0:0:1:9300]], closing connection |
解决方案为一种是关闭IPv6地址,另一种是修改ES_HOME/config/elasticsearch.yml中的network.host值为本机eth0的IP
参考文档
- 官方安装步骤:https://www.elastic.co/guide/...
- 配置内置账户密码:
https://www.elastic.co/guide/... - 修改账户密码:
https://www.elastic.co/guide/... - 用户相关操作:
https://www.elastic.co/guide/... - 使用LDAP认证: https://www.elastic.co/guide/...
- 用户角色映射: https://www.elastic.co/guide/...