Elasticsearch核心技术与实战学习笔记 56 | 集群身份认证与用户鉴权

一 序

  本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。

本周扫盲了下pmp的的预习课,所以耽误了ES学习。

二 安全问题

  • ES 在默认安装后,不提供任何形式的安全防护
  • 错误的配置信息导致公网可以访问 ES 集群
    • 在 elasticsearch.yml 文件中, server.host 被错误的配置为 0.0.0.0

这个就不如MySQL那种严谨了。

2.1 数据安全性的基本需求   

  • 身份认证
    • 鉴定用户是否合法
  • 用户鉴权
    • 指定哪个用户可以访问哪个索引
  • 传输加密
  • 日志审计

2.2 一些免费的方案

  • 设置 Nginx 的反向代理
  • 安装免费的 Security 插件
  • X-Pack 的 Basic 版
    • 从 ES 6.8 & ES 7.0 开始,Security 纳入 x-pack 的 Basic 版本中,免费使用一些基本的功能

Anthentication - 身份认证

认证体系的几种类型

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

Realms : X-Pack 中的认证服务

  • 内置 Realms (免费)

          File / Native (用户名密码保存在 Elasticsearch)

  • 外部 Realms (收费)

          LDAP / Active Directory / PKI / SAML / Kerberos

RBAC - 用户鉴权

  什么是 RBAC:Role Based Access Control, 定义一个角色,并分配一组权限。权限包括索引 级,字段级,集群级的不同的操作。然后通过将角色分配给用户,使得用户拥有这些权限
User:The authenticated User
Role:A named set of permissions
Permission – A set of one or more privileges against a secured resource
Privilege – A named group of 1 or more actions that user may execute against a secured resource

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 /writeview_index_metadata

创建内置的用户和角色

使用 Security API 创建用户

开启并配置 X-Pack 的认证与鉴权

  • 修改配置文件,打开认证于授权

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

  • 创建默认的用户和分组

       bin/elasticsearch-password interactive
       使用 docker 时并进入到容器中 elasticsearch-setup-passwords interactive

  • 当集群开启身份认证之后,配置 Kibana

Demo
创建一个 Role,配置为某个索引只读权限 、创建一个用户,把用户加入 Role

配置 Kibana

  • 修改 kibana.yml
    • elasticsearch.username: “kibana”
    • elasticsearch.password: “changeme”

kibana.yaml中配置的用户:用于 Kibana 启动时维护索引。与上面的es不是一个用户。

猜你喜欢

转载自blog.csdn.net/bohu83/article/details/107587204
56
#56