ElasticSearch的RBAC安全特性

1,474 阅读6分钟

概述

Elasticsearch集群通常由多个部分组成。一个多节点组成的Elasticsearch集群,与集群通信的包括Logstash实例、Kibana实例、Beats代理,以及其它通信客户端等。

当前大部分Elasticsearch集群的使用场景,多是内网部署,且不对外部提供相关服务。或者仅将Elasticsearch集群作为支撑业务的底层服务,不对公网开放9200等通信端口,只开放业务服务端口。这种业务场景下,虽然可一定程度上避免网络外部的安全隐患,但是对于网内可访问的集群中,Elasticsearch的9200、9300及Kibana的5601可任意访问,极有可能出现误操作索引和数据的情况。此外,牵涉到多Elasticsearch集群的内部网络中,偶尔错误的配置,在没有相关权限控制的情况下,也可能导致集群匹配和数据异常问题。

针对Elasticsearch集群常规使用中的多种安全问题,Elasticsearch安全特性提供了独立的身份验证机制,能够使用户快速地对集群进行密码保护,并且结合Kerberos的相关安全特性集成,更加便捷的进行组织用户管理,执行用户身份验证,提高集群的数据和使用安全。

Elasticsearch基础安全功能,主要包括:

  1. 通过密码保护、基于角色的访问控制和IP筛选防止未经授权的访问。
  2. 使用SSL/TLS加密保护数据的完整性。
  3. 维护审计跟踪

除了基础安全问题,在部分数据控制较为严格的业务场景下,会涉及到索引的用户和角色控制,以便集群管理者可以更加容易的控制数据或索引的访问策略。

安全性与RBAC介绍

Elasticsearch的RBAC,也称为基于角色的访问控制机制,就是在用户认证等基础安全之上,新增角色和用户配置策略,结合Elasticsearch的安全认证和Kerberos的认证授权,共同控制索引级别的数据控制和访问策略。

RBAC通过可控的资源访问策略配置,赋予特定角色所需访问资源的权限,然后将具备访问资源权限的角色赋予用户或用户组,最终实现用户对资源访问的权限控制。

image.png

基础安全(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可以使用相关脚本指令生成六个默认账号:

  1. Elasticsearch集群开启安全模式并启动集群
  2. 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主要包括角色控制和用户控制两部分,角色控制部分允许用户自定义角色,并设定角色对于集群和索引的各种权限,用户控制则可创建具体用户,并赋予用户相应的某种角色或多种角色。通过用户和角色的设定,实现对用户权限的灵活配置,强化对索引数据的安全管理。