编程技术分享平台

网站首页 > 技术教程 正文

elasticsearch 集群身份认证与用户鉴权

xnh888 2024-10-10 12:57:20 技术教程 23 ℃ 0 评论

elasticsearch在默认安装后,没有提供任何安全保护。

在elasticsearch.yml配置了server.host=0.0.0.0导致公网可以访问es集群。


数据安全的基本需求:

1.身份认证,鉴定用户是否合法

2.用户鉴权,指定哪个用户可以访问哪个索引

3.传输加密

4.日志审计

解决方案:

1.设置nginx反向代理

2.x-pack


身份认证 | Authentication

1.认证体系的几种类型

  • 提供用户名和密码
  • 提供秘钥或 Kerberos 票据

2.在 ElasticSearch 中的认证服务被称为 Realms,提供了收费和免费两种不同形式的 Realms

  • 内置 Realms(免费):File / Native(用户名和密码保存在 ElasticSearch 的索引中);
  • 外部 Realms(收费):LDAP / Active Directory / PKI / SAML / Kerberos;

3.用户鉴权 | RBAC

在 ElasticSearch 中,权限包括索引级,字段级,集群及。

Privilege 权限

Cluster Privileges 集群权限:all / monitor / manager / manage_index / manage_index_template / manage_rollup

Indices Privileges 索引权限:all / create / create_index / delete / delete_index / index / manage / read / write / view_index_metadata


开启并配置x-pack的认证与鉴权

运行启动命令 | 开启 xpack

bin/elasticsearch -E node.name=node0 -E cluster.name=test -E path.data=node0_data -E http.port=9200 -E xpack.security.enabled=true

运行密码设定命令设置 ES 内置用户及其初始密码

bin/elasticsearch-setup-passwords interactive

当集群开启身份认证后配置kibana

访问集群 http://localhost:9200/_cat/nodes

输入用户名和密码就可以访问了;


Kibana Authentication | 举个栗子

设置 Kibana 的用户名及密码

修改配置文件 kibana.yml;

elasticsearch.username: "kibana"
elasticsearch.password: "changeme"

启动 Kibana,使用用户 elastic 登录,密码 elastic

./bin/kibana

写入信用卡信息 | 数据准备

POST orders/_bulk
{"index":{}}
{"product" : "1","price" : 18,"payment" : "master","card" : "9876543210123456","name" : "jack"}
{"index":{}}
{"product" : "2","price" : 99,"payment" : "visa","card" : "1234567890123456","name" : "bob"}

在 Kibana 中 Settings / Security / Roles 中创建角色 read_orders

添加对索引 orders 的 read 权限;

Run as privileges 设置成 kibana_user;

Minimum privileges for all spaces 设置成 read;

在 Kibana 中 Settings / Security / Users 中创建用户 demo

Roles 设置成 read_orders;

退出用户 elastic

用新创建的 demo 用户登录

可以搜索索引 orders;

但是不可以删除;

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表