概述
Elasticsearch集群通常由多个部分组成。一个多节点组成的Elasticsearch集群,与集群通信的包括Logstash实例、Kibana实例、Beats代理,以及其它通信客户端等。
当前大部分Elasticsearch集群的使用场景,多是内网部署,且不对外部提供相关服务。或者仅将Elasticsearch集群作为支撑业务的底层服务,不对公网开放9200等通信端口,只开放业务服务端口。这种业务场景下,虽然可一定程度上避免网络外部的安全隐患,但是对于网内可访问的集群中,Elasticsearch的9200、9300及Kibana的5601可任意访问,极有可能出现误操作索引和数据的情况。此外,牵涉到多Elasticsearch集群的内部网络中,偶尔错误的配置,在没有相关权限控制的情况下,也可能导致集群匹配和数据异常问题。
针对Elasticsearch集群常规使用中的多种安全问题,Elasticsearch安全特性提供了独立的身份验证机制,能够使用户快速地对集群进行密码保护,并且结合Kerberos的相关安全特性集成,更加便捷的进行组织用户管理,执行用户身份验证,提高集群的数据和使用安全。
Elasticsearch基础安全功能,主要包括:
- 通过密码保护、基于角色的访问控制和IP筛选防止未经授权的访问。
- 使用
SSL/TLS
加密保护数据的完整性。 - 维护审计跟踪
除了基础安全问题,在部分数据控制较为严格的业务场景下,会涉及到索引的用户和角色控制,以便集群管理者可以更加容易的控制数据或索引的访问策略。
安全性与RBAC介绍
Elasticsearch的RBAC
,也称为基于角色的访问控制机制,就是在用户认证等基础安全之上,新增角色和用户配置策略,结合Elasticsearch的安全认证和Kerberos的认证授权,共同控制索引级别的数据控制和访问策略。
RBAC通过可控的资源访问策略配置,赋予特定角色所需访问资源的权限,然后将具备访问资源权限的角色赋予用户或用户组,最终实现用户对资源访问的权限控制。
基础安全(Basic Auth)
Elasticsearch的基础安全认证,主要涉及角色和用户的访问控制,在Elasticsearch的基础安全认证框架中,用户可以自主生成Elasticsearch的系统默认角色用户,并使用Elasticsearch默认生成的超级管理员用户elastic用户进行Elasticsearch集群的相关监控和管理操作,包括创建用户组和普通用户并进行认证授权,后续可以使用创建的普通用户进行Elasticsearch集群数据的访问和操作。
Elasticsearch默认用户
Elasticsearch提供六个带有系统默认角色的默认账号:
elastic
:为Elasticsearch超级管理员,拥有所有权限。kibana
:用于Kibana服务和Elasticsearch集群的通信和信息交互。logstash_system
:用于Logstash服务和Elasticsearch集群的通信和信息交互。beats_system
:用于Beats服务和Elasticsearch集群的通信和信息交互。apm_system
:用于APM服务和Elasticsearch集群的通信和信息交互。remote_monitoring_user
:Metricbeat用户在Elasticsearch集群中收集和存储监控信息时使用,它具有远程监视代理和远程监视收集器内置角色。 Elasticsearch默认角色
Elasticsearch提供多个系统默认角色,分别具备不同的权限功能,主要的角色说明见附录1。
Elasticsearch系统默认账号生成
Elasticsearch可以使用相关脚本指令生成六个默认账号:
- Elasticsearch集群开启安全模式并启动集群
- Shell进入到任意Elasticsearch节点的bin目录下,切换服务器用户为elasticsearch用户
执行下面的命令生成带有自动生成密码的六个系统默认账号,并输出账号和密码信息(请自行复制备份自动生成的相关账号和密码以防丢失)。
./elasticsearch-setup-passwords auto |
---|
或者执行以下命令在生成用户过程中自定义账号密码(建议)。
./elasticsearch-setup-passwords interactive |
---|
Elasticsearch系统默认用户验证
使用默认Elasticsearch用户查看集群状态(REST):
curl -XGET -k -u elastic:123456 https://192.168.1.1:9200 |
---|
Kerberos安全
Kerberos安全是在Elasticsearch的基础安全认证的层面上,进行更加严格的用户访问权限控制,形成Elasticsearch+Kerberos的安全认证框架,在将Elasticsearch用户和Kerberos用户进行关联映射之后,最终使用相应的Kerberos安全票据进行Elasticsearch集群的访问和操作。
在开启Elasticsearch的Kerberos安全之后由于使用更加严格的Kerberos票据访问方式,Elasticsearch的基础用户和密码访问方式支持将受到限制(elastic超级用户不受限制)。
RBAC
Elasticsearch的RBAC(基于角色的访问控制机制)作用是引入用户和角色的管理,进而对Elasticsearch索引进行更加精细的操作控制,进行用户层面的操作权限分离。
在RBAC中,集群用户可以使用Elasticsearch系统默认的超级用户elastic进行自定义角色的创建,按照集群数据访问的规划对角色的具体操作权限进行定义,如根据需要赋予角色Elasticsearch集群层面的集群管理权限、集群监控权限、远程客户端连接权限等,还可以设定角色对Elasticsearch集群中具体索引的操作权限,如设定对某一索引的只读、可写、索引创建删除、元数据访问等等。
在集群的RBAC控制背景下,可以通过对不同用户授予不同的角色权限,达到权限隔离的目的,使不同业务数据的使用者,只对自己负责的业务数据具有可操作或可读可写等权限,避免数据公开和数据误操作的情况,达到数据及操作隔离的目的。
RBAC主要包括角色控制和用户控制两部分,角色控制部分允许用户自定义角色,并设定角色对于集群和索引的各种权限,用户控制则可创建具体用户,并赋予用户相应的某种角色或多种角色。通过用户和角色的设定,实现对用户权限的灵活配置,强化对索引数据的安全管理。