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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3月前
|
存储 负载均衡 Java
Elasticsearch集群面试系列文章一
【9月更文挑战第9天】Elasticsearch(简称ES)是一种基于Lucene构建的分布式搜索和分析引擎,广泛用于全文搜索、结构化搜索、分析以及日志实时分析等场景。
109 7
|
20天前
|
存储 监控 安全
Elasticsearch 集群
【11月更文挑战第3天】
94 54
|
12天前
|
缓存 监控 Java
Elasticsearch集群JVM调优
Elasticsearch集群JVM调优
32 5
|
16天前
|
监控 API 索引
Elasticsearch集群健康检查
【11月更文挑战第4天】
32 3
|
20天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
34 5
|
2月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
108 3
|
2月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
44 4
|
2月前
|
运维 监控 数据可视化
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
大数据-171 Elasticsearch ES-Head 与 Kibana 配置 使用 测试
67 1
|
2月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
148 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
3月前
|
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