Elasticsearch Security集群安全策略配置

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch Security集群安全策略配置

1、版本支持性

不同版本对 Security 的支持不同,


1.1 对于ES 6.x 或之前版本

对于 ES 6.8 及之前版本,需要手动安装 x-pack

bin/elasticsearch-plugin install x-pack
bin/kibana-plugin install x-pack


1.2 对于ES 7.x

ES 的安全策略需要 X-Pack 插件的支持,不过对于7.X以上版本 X-Pack 已经内置,所以不需要额外的操作。可通过以下指令查看当前已安装的插件:


对于ES 7.x 的版本,基本安全功能为免费,但是不包括单点登录、LDAP身份认证以及字段和文档级权限管理,参阅:


https://www.elastic.co/cn/pricing/

https://www.elastic.co/cn/subscriptions

https://www.elastic.co/guide/en/kibana/7.6/managing-licenses.html


1.3 对于 ES 8.x 默认开启 Security

2、Minimal security(最低安全等级:单节点)

不同环境对集群安全的策略等级要求不同,主要区别在于你是开发环境还是生产集群环境。ES提供了三个不同等级的安全策略:最低安全等级、基本安全等级、基本安全 + HTTPS


2.1 概念

官方:最小化安全策略等级适用于本地开发,在当前模式下,可以对单节点服务设置密码来提供安全防护功能,但是对于本地集群环境,需要开启TLS,以保证节点之间通信安全。

就实际而言,在处于 ES 学习 或者本地开发模式下,是可以关闭 Security 功能的,因为如果是以学习为目的,不存在所谓的数据安全问题,因为数据即便被删除也是没关系的。而如果在学习或开发模式下也开启安全策略,意味着你需要频繁的跟密码较劲,实属没必要。


2.2 执行步骤

2.2.1 启用 Security

ES 7.x 版本默认禁用 Security,可通过以下配置启用 Security

xpack.security.enabled


.2.2 创建用户密码

自动生成密码

./bin/elasticsearch-setup-passwords auto


指定密码

./bin/elasticsearch-setup-passwords interactive


2.2.3 配置Kibana的账号信息

3、Basic security(基本安全等级:集群Security)

3.1 适用范围和概念

最低安全配置仅适用于单节点服务,而不符合集群的最低安全要求。如果集群有多个节点,那么您必须在节点之间配置 TLS。如果您不启用 TLS,无法启动生产集群。


传输层依赖双向 TLS 对节点进行加密和认证。正确应用 TLS 可确保恶意节点无法加入集群并与其他节点交换数据。虽然在 HTTP 层实现用户名和密码身份验证对于保护本地集群很有用,但节点之间的通信安全需要 TLS。


Transport 协议是 Elasticsearch 节点用于相互通信的协议的名称。此名称特定于 Elasticsearch,用于区分传输端口(默认 9300)和 HTTP 端口(默认 9200)。节点使用传输端口相互通信,REST 客户端使用 HTTP 端口与 Elasticsearch 通信。


3.2 执行步骤

3.2.1 配置文件 elasticsearch.yml

启用 security安全认证

#开启security
xpack.security.enabled: true
#配置SSL证书
xpack.security.transport.ssl.enabled: true


设置验证模式为:certificate

xpack.security.transport.ssl.verification_mode: certificate


设置证书路径

xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12


3.2.2 生成密钥文件,生成:elastic-stack-ca.p12 文件。

bin/elasticsearch-certutil ca


  • 出现提示时,接受默认文件名,即 elastic-stack-ca.p12. 此文件包含 CA 的公共证书和用于为每个节点签署证书的私钥。
  • 输入 CA 的密码。如果不是用于生产环境,您可以选择将密码留空。


3.2.3 为节点颁发证书,生成: elastic-certificates.p12 证书

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12


elastic-stack-ca.p12 是用于签署证书的 CA 文件的默认名称。


此过程需要为CA 文件生成密码,如非生产环境,可以留空,直接按 Enter 即可 。

为证书创建密码并接受默认文件名。输出文件是一个名为 elastic-certificates.p12. 此文件包含节点证书、节点密钥和 CA 证书。


3.2.4 把证书拷贝的每个节点(如果设置了certs/目录,此目录在config目录下),按照提示操作

scp elastic-certificates.p12 root@192.168.3.182:/usr/local/elasticsearch-7.13.0

把当前目录下的 elastic-certificates.p12 拷贝至 192.168.3.182 的 /usr/local/elasticsearch-7.13.0 目录下


3.2.5 启动所有节点(练习的时候记得清空data中的节点数据,考试不能)

3.2.6 设置集群密码

bin/elasticsearch-setup-passwords interactive


3.2.7 配置Kibana

4、Basic security plus secured HTTPS traffic(基本安全+HTTPS)

在生产环境中,如果没有基于HTTPS上启用 TLS,那么部分安全功能会无法使用,比如Token和API密钥,


4.1 前置条件

启用 HTTPS 必须要配置集群 Security,即基础集群安全策略。


4.2 配置 HTTPS

4.2.1 保证每个节点的服务处于停止状态

4.2.2 生成证书签名文件

. /bin/ elasticsearch - certutil http

此命令会生成一个 .zip文件,其中包含用于 Elasticsearch 和 Kibana 的证书和密钥。每个文件夹都包含一个 README.txt 解释如何使用这些文件。


当询问您是否要生成 CSR 时,请输入 n。

当询问您是否要使用现有 CA 时,输入 y。

输入您的 CA 的路径。elastic-stack-ca.p12这是您为集群生成 的文件的绝对路径。

输入您的 CA 的密码。

输入证书的到期值。您可以输入年、月或日的有效期。例如,输入 90D90 天。

当询问您是否要为每个节点生成一个证书时,输入 y.

每个证书都有自己的私钥,并针对特定的主机名或 IP 地址颁发。

出现提示时,输入集群中第一个节点的名称。使用生成节点证书时使用的相同节点名称。

输入用于连接到您的第一个节点的所有主机名。这些主机名将作为 DNS 名称添加到证书的主题备用名称 (SAN) 字段中。

列出用于通过 HTTPS 连接到集群的每个主机名和变体。

输入客户端可用于连接到您的节点的 IP 地址。

对集群中的每个其他节点重复这些步骤。


4.2.3 设置私钥密码。

4.2.4 解压 elasticsearch-ssl-http.zip文件

/elasticsearch
|_ README.txt
|_ http.p12
|_ sample-elasticsearch.yml
/kibana
|_ README**.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml


4.2.5 在集群中的每个节点上

  • 将相关 http.p12证书复制到 $ES_PATH_CONF目录中
  • 配置 elasticsearch.yml 文件启用 HTTPS 并且指定 http.p12 安全证书的位置
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: http.p12
  • 把私钥密码添加到 Elasticsearch 的安全设置中
  • 启动每个节点
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
23天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
109 0
|
2月前
|
Docker 索引 容器
Elasticsearch跨集群检索配置
Elasticsearch跨集群检索配置
42 1
|
4月前
|
存储 Linux
ElasticSearch集群快照
ElasticSearch集群快照
234 1
|
5月前
|
前端开发 Java Docker
利用 docker 部署 elasticsearch 集群(单节点多实例)
利用 docker 部署 elasticsearch 集群(单节点多实例)
256 0
|
4月前
|
安全 大数据 Java
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解
53 0
|
3月前
|
前端开发 安全 Ubuntu
Elasticsearch安装和配置
Elasticsearch安装和配置
116 0
|
5月前
|
JSON 数据格式 索引
实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原
就可以通过Elasticsearch的导入导出工具Elasticdump来实现,可以将Elasticsearch不同集群的数据进行索引备份和还原。
90 0
|
2月前
|
开发工具 Docker 容器
docker安装集群版ElasticSearch
docker安装集群版ElasticSearch
|
2月前
|
Java 网络安全 数据安全/隐私保护
高可用elasticsearch集群搭建
高可用elasticsearch集群搭建
|
2月前
|
网络安全 Docker 容器
【docker专题_01】docker搭建elasticsearch集群 -
【docker专题_01】docker搭建elasticsearch集群 -