elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: elasticsearch|大数据|低版本的elasticsearch集群的官方安全插件x-pack的详解

前言:

elasticsearch集群说实话是比较好部署的,也就是从开箱即用这方面来说,是比较简单的,大体步骤就是首先处理好集群的环境,比如时间服务器,域名映射,内核层面的文件打开数这些小问题,然后就是安装目录的赋权(es不让用root用户启动,操作),最后就是主配置文件的修改,把每个节点的信息按自己的部署规划写入主配置文件就可以启动各个节点,然后,es会自动发现其它节点并自己组成一个集群。

在集群启动这个阶段,我们也不需要操心如何选主,哪个是主,哪个是从这些集群方面的问题,es是以最先启动的节点自动为主,不像其它的集群例如zookeeper,还需要在配置文件里写清楚哪个是主,哪个是从,主节点还必须要先启动,然后在启动从节点,而es完全没有这些烦恼。

但是,这些都是es给人的误解,其实,集群设置方面的简化了,但是安全防护方面需要比其它类型的集群下更多的功夫,例如,安全插件的选择,安全插件的设置这些是要比其它集群更加麻烦的。

其次,es的版本众多,每个大版之间的差异是很大的,怎么说呢,就和MySQL一样,MySQL-5.6,MySQL-5.7,MySQL8 就完全不是同一个数据库,虽然是都叫MySQL,同样的,es6,es7,es8之间的差别也是非常大的。

那么,es版本之间的具体差距一个是性能方面,自然是版本越高性能方面可能更高点,其次就是漏洞,越高的版本自然也是漏洞更少,最后就是es的安全插件x-pack和由x-pack引起的证书问题。

一,

启用 trial license

curl -H "Content-Type:application/json" -XPOST  http://127.0.0.1:19200/_xpack/license/start_trial?acknowledge=true

es的密码设置

es集群密码只需要在一个节点设置一次就可以了,不需要每个节点都执行密码设置,设置密码的时候开不开xpack.security.enabled: true都没有影响,只是需要上面的license激活试用

二,

具体的实施步骤

本例中,我的es是二进制形式安装在/data/目录下的

有两个关键目录libs和modules两个目录

下面是两个java 文件,然后编译出两个class文件,最后两个class文件替换到jar包内,重新打jar 包后,每个节点的jar包都要替换掉。

####注:链接:https://pan.baidu.com/s/1Wj5Q80p9lN7r6uv0xvWHWw?pwd=kkey
提取码:kkey
编译出来的jar包以及安装包什么的都在百度盘里,有需要的自取试用

cd /data/es/modules/x-pack/x-pack-core
cat >/data/es/modules/x-pack/x-pack-core/LicenseVerifier.java<<EOF
package org.elasticsearch.license; 
import java.nio.*; import java.util.*; 
import java.security.*; 
import org.elasticsearch.common.xcontent.*; 
import org.apache.lucene.util.*; 
import org.elasticsearch.common.io.*; 
import java.io.*; 
public class LicenseVerifier { 
    public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) {
        return true; 
    } 
    public static boolean verifyLicense(final License license)     { 
        return true; 
    } 
}
EOF
cat >/data/es/modules/x-pack/x-pack-core/XPackBuild.java<<EOF
package org.elasticsearch.xpack.core;
import org.elasticsearch.common.io.*;
import java.net.*;
import org.elasticsearch.common.*;
import java.nio.file.*;
import java.io.*; 
import java.util.jar.*; 
public class XPackBuild { 
    public static final XPackBuild CURRENT;
    private String shortHash; 
    private String date; 
    @SuppressForbidden(reason = "looks up path of xpack.jar directly") static Path getElasticsearchCodebase() { 
        final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
        try { return PathUtils.get(url.toURI()); }
        catch (URISyntaxException bogus) { 
            throw new RuntimeException(bogus); } 
        } 
    XPackBuild(final String shortHash, final String date) {
            this.shortHash = shortHash; 
            this.date = date; 
            } 
    public String shortHash() {
        return this.shortHash;
        } 
    public String date(){ 
        return this.date; 
        }
    static { 
        final Path path = getElasticsearchCodebase();
        String shortHash = null; 
        String date = null;
        Label_0157: { shortHash = "Unknown"; date = "Unknown"; 
    } 
    CURRENT = new XPackBuild(shortHash, date); 
    }
}
EOF

下面的命令是编译java文件生成class,双引号里的是包依赖,第二个编译比第一个多elasticsearch-core-6.3.2.jar

echo $ES_HOME=/data/es
javac -cp "$ES_HOME/lib/elasticsearch-6.3.2.jar:$ES_HOME/lib/lucene-core-7.3.1.jar:$ES_HOME/modules/x-pack-core/x-pack-core-6.3.2.jar" LicenseVerifier.java 
javac -cp "$ES_HOME/lib/elasticsearch-6.3.2.jar:$ES_HOME/lib/lucene-core-7.3.1.jar:$ES_HOME/modules/x-pack-core/x-pack-core-6.3.2.jar:$ES_HOME/lib/elasticsearch-core-6.3.2.jar" XPackBuild.java

重新生成的jar包可以在其它相同的es6.3.2版本直接使用

mkdir tmp && cd tmp 
cp ../x-pack-core-6.3.2.jar ./ 
jar -xf x-pack-core-6.3.2.jar ##解压 
cp ../LicenseVerifier.class org/elasticsearch/license/ ##替换文件 
cp ../XPackBuild.class org/elasticsearch/xpack/core/ ##替换文件 
jar -cvf x-pack-core-6.3.2.jar * 
##再压缩,将生成的 x-pack-core-6.6.2.jar 发送到所有es,覆盖原来的jar文件

license文件是我从官网注册的,这个文件谁都可以用

cat> license.json <<EOF
{"license":{"uid":"098d64a3-e517-41dd-b353-f505592d2c8b","type":"platinum","issue_date_in_millis":1702771200000,"expiry_date_in_millis":2547615064000,"max_nodes":100,"issued_to":"zsk john (sgcc)","issuer":"Web Form","signature":"AAAAAwAAAA16lsBvPS6swxwXwby8AAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQBsh77fra6SPtgkkXCPjs39gSNVwkeO9Brh3ztWUuINJVwHcMGxyTfmb24rHhVJwtTSrTTtjxvWCRvM+0iomOTnuQTZiEnWlnkQxpog0zuftR21mjCZZTcctZtBAKuffmRG3ORWWMq3OyUkeHWPsA11QrnkDky/+dU3MjandI1PLz4GYtHakb1/5j7oaLHda0n3jibNPk9+IsgyVbha+u40vF/wFgsq7UVZguWH1NC+GQfq4GnUDWi1AzpxNKWE5ui9zlMT0E0i5Dlp/MyFsEPsI22HkvxOrI8ZrENKL/NojrkfYn+Um2Z44VNrYLZt38gEka/sGQ27Ut+8UkmGBAkM","start_date_in_millis":1702771200000}}
EOF
curl -XPUT -u "elastic":"123456" 'http://192.168.123.11:19200/_xpack/license' -H "Content-Type: application/json" -d @license.json

在执行到上面这个命令的时候,es必须要开启以下设置否则报错:

下面的配置见博客:elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理-CSDN博客

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /data/es/config/cert/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /data/es/config/cert/elastic-certificates.p12

查看是否更换license:

可以看到过期时间已经更新到了2050年,十来年的时间应该够用了吧!!!!~~

[root@node1 tmp]# curl -uelastic:shiguang32 -XGET http://192.168.123.11:19200/_license
{
  "license" : {
    "status" : "active",
    "uid" : "098d64a3-e517-41dd-b353-f505592d2c8b",
    "type" : "platinum",
    "issue_date" : "2023-12-17T00:00:00.000Z",
    "issue_date_in_millis" : 1702771200000,
    "expiry_date" : "2050-09-24T06:51:04.000Z",
    "expiry_date_in_millis" : 2547615064000,
    "max_nodes" : 100,
    "issued_to" : "zsk john (sgcc)",
    "issuer" : "Web Form",
    "start_date_in_millis" : 1702771200000
  }

日志里的验证:

[2023-12-18T01:34:40,141][INFO ][o.e.x.s.a.TokenService   ] [node-1] refresh keys
[2023-12-18T01:34:40,347][INFO ][o.e.x.s.a.TokenService   ] [node-1] refreshed keys
[2023-12-18T01:34:40,359][INFO ][o.e.l.LicenseService     ] [node-1] license [aab0fece-300e-45b3-8fc8-7c935482b21d] mode [trial] - valid
[2023-12-18T01:34:40,383][INFO ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [node-1] publish_address {192.168.123.11:19200}, bound_addresses {192.168.123.11:19200}
[2023-12-18T01:34:40,383][INFO ][o.e.n.Node               ] [node-1] started
[2023-12-18T01:39:08,635][INFO ][o.e.l.LicenseService     ] [node-1] license [098d64a3-e517-41dd-b353-f505592d2c8b] mode [platinum] - valid


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
5天前
|
索引
elasticsearch集群健康状态查看
elasticsearch集群健康状态查看
11 2
|
5天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
115 0
|
5天前
|
监控 负载均衡 安全
Elasticsearch 集群某一节点修改 IP 后无法启动问题复盘
Elasticsearch 集群某一节点修改 IP 后无法启动问题复盘
37 2
|
4天前
部署elasticsearch集群 - 蓝易云
以上步骤完成后,你就成功部署了一个基本的Elasticsearch集群。根据你的需求,你可能还需要进行更多的优化和配置,例如设置副本数、调整内存设置等。
22 1
|
5天前
|
存储 监控 安全
Elasticsearch 8.X 集群 SSL 证书到期了,怎么更换?
Elasticsearch 8.X 集群 SSL 证书到期了,怎么更换?
39 3
|
5天前
|
缓存 JSON 关系型数据库
Elasticsearch 8.X 集群无响应,怎么办?
Elasticsearch 8.X 集群无响应,怎么办?
14 0
|
5天前
|
存储 数据可视化 Java
Elasticsearch 集群状态变成黄色或者红色,怎么办?
Elasticsearch 集群状态变成黄色或者红色,怎么办?
11 0
|
5天前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之在DataWorks中,从Elasticsearch同步数据到ODPS时同步_id字段的如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
27 0
|
5天前
|
存储 自然语言处理 算法
elasticsearch集群搭建,以及kibana和ik分词器的安装(7.3.2)
elasticsearch集群搭建,以及kibana和ik分词器的安装(7.3.2)
|
5天前
|
安全 算法 大数据
漫谈大数据时代的个人信息安全(四)——“位所欲为”
漫谈大数据时代的个人信息安全(四)——“位所欲为”

热门文章

最新文章