54 - 集群身份认证与用户鉴权

ES用户敏感信息泄露原因分析

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

数据安全性的基本续期

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

一些免费的方案

  • 设置Nginx反向代理
  • 安装免费的Security插件
    • Search Gurad:https://search-guard.com/
    • ReadOnly REST:https://github.com/sscarduzio/elasticsearch-readonlyrest-plugi
  • X-Pack的Basic版
    • 从ES 6.8 & ES 7.0开始,Security纳入x-pack的Basic版本中,免费使用一些基本的功能
    • https://www.elastic.co/what-is/elastic-stack-security

Authentication:身份认证

  • 认证体系的几种类型
    • 提供用户名和密码
    • 提供秘钥或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 / write view index metadata

创建内置的用户和角色

  • 内置的角色和用户
用户 角色
elastic supper user
kibana the user that is used by kibana to connetc and communicate with elasticsearch
logstash_system the user that is used by logstash when storing monitoring information in elasticsearch
beats_system the user that the different beats use when storing monitoring information in elasticsearch
apm_system the user that the apm server uses when storing monitoring information in elasticsearch
remote_monitoring_user the user that is used by metricbeat when collecting and storing monitoring information in elasticsearch

使用Security API创建用户

创建用户

需在elasticsearch.yml将xpack.security.enabled设置为true才可以

type operator
User Create user
Update user
Delete user
Enable / disable users
Get users
Change password
Role Create role
Update role
Delete role
Get roles

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

  • 修改配置文件,打开认证与授权
bin/elasticsearch -E node.name=node0 -E cluster.name=cluster1 -E path.data=node0_data -E http.port=9200 -E xpack.security.enabled=true
  • 创建默认的用户和分组
bin/elasticsearch-password interactive
  • 当集群开启身份认证之后,配置kibana
  • Demo
    创建一个Role,配置为对某个索引只读权限 / 创建一个用户,把用户加入Role
    • 启动集群
bin/elasticsearch -E node.name=node0 -E cluster.name=geektime -E path.data=node0_data -E xpack.security.enabled=true
  • 为每个用户设置密码(比如:changeme)
bin/elasticsearch-setup-passwords interactive
  • 配置kibana密码
    修改config/kibana.yml
elasticsearch.username: "kibana"
elasticsearch.password: "changeme"
  • 通过kibana的security进行角色及用户权限的配置或者通过api创建
    http://localhost:5601/app/management/security/roles

你可能感兴趣的:(54 - 集群身份认证与用户鉴权)