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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
21天前
|
存储 缓存 监控
|
7天前
|
存储 自然语言处理 关系型数据库
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
聚合、补全、RabbitMQ消息同步、集群、脑裂问题、集群分布式存储、黑马旅游实现过滤和搜索补全功能
ElasticSearch基础3——聚合、补全、集群。黑马旅游检索高亮+自定义分词器+自动补全+前后端消息同步
|
18天前
|
JSON 监控 Java
Elasticsearch 入门:搭建高性能搜索集群
【9月更文第2天】Elasticsearch 是一个分布式的、RESTful 风格的搜索和分析引擎,基于 Apache Lucene 构建。它能够处理大量的数据,提供快速的搜索响应。本教程将指导你如何从零开始搭建一个基本的 Elasticsearch 集群,并演示如何进行简单的索引和查询操作。
59 3
|
22天前
|
存储 缓存 算法
Elasticsearch 集群节点间的通信
【8月更文挑战第25天】
35 6
|
22天前
|
存储 网络协议 搜索推荐
|
21天前
|
存储 负载均衡 算法
|
21天前
|
存储 缓存 监控
|
17天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
1月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
1月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。