https://juejin.cn/post/7081994919237287950

本文已参与「新人创作礼」活动,一起开启掘金创作之路。


Elasticsearch往往存有公司大量的数据,如果安全不过关,那么就会有严重的数据安全隐患。

Elasticsearch 的安全认证方式有不少,如http-basic,search guard,shield等,本文讲的是使用Xpack进行安全认证。

1、什么是Xpack

X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。

自6.8以及7.1+版本之后,基础级安全永久免费。

基础版本安全功能列表如下: 

2、相关安全配置介绍

这里挑一些比较重要常见的配置项介绍,完整的配置介绍可以查看官方文档

2.1、xpack.security.enabled

默认为true,启用节点上ES的XPACK安全功能,相当于总开关

2.2、xpack.security.http.ssl

这个是用来开启https的,以及对应的设置,整体配置项如下:

 
yaml

复制代码
xpack.security.http.ssl:
enabled: false 【开启还是关闭】
verification_mode: certificate【如下】
【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】
【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】
【none:它不执行服务器证书的验证。】
truststore.path: certs/elastic-certificates.p12 【信任存储库文件的存放位置】
keystore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】

2.3、xpack.security.transport.ssl

这个是传输层的认证设置,整体配置项如下:

 
yaml

复制代码
xpack.security.transport.ssl:
enabled: true【开启还是关闭】
verification_mode: certificate【如下】
【full:它验证所提供的证书是否由受信任的权威机构(CA)签名,并验证服务器的主机名(或IP地址)是否与证书中识别的名称匹配。】
【certificate:它验证所提供的证书是否由受信任的机构(CA)签名,但不执行任何主机名验证。】
【none:它不执行服务器证书的验证。】
keystore.path: certs/elastic-certificates.p12【信任存储库文件的存放位置】
truststore.path: certs/elastic-certificates.p12【密钥存储库文件的存放位置】

3、ES集群认证配置

命令操作都是在ES安装根目录下执行的 

3.1、创建证书

a、创建一个证书颁发机构

提示命名文件:直接回车,默认文件名elastic-stack-ca.p12文件 提示输入密码:可以直接回车,也可以输入密码进行设置

 
bash

复制代码
./bin/elasticsearch-certutil ca

b、为节点生成证书和私钥

提示命名文件,直接回车,默认文件名elastic-certificates.p12文件 提示输入密码:可以直接回车,也可以输入密码进行设置

 
arduino

复制代码
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

c、config目录下创建下certs目录

 
arduino

复制代码
makdir config/certs

d、将文件可拷贝到certs目录下

 
bash

复制代码
mv elastic-certificates.p12 config/certs/

3.2、给keystore和truststore设置密码

注解: keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。 truststore是放信任的证书的一个store truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。

如果在创建证书的过程中加了密码,需要输入这个密码。每个节点都需要 

 
bash

复制代码
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
 
bash

复制代码
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
 
bash

复制代码
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
 
bash

复制代码
./bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

这样就会在config目录下keystore文件了 

3.3、修改配置文件并重启

配置文件中加入以下配置,然后重启

 
yaml

复制代码
xpack.security.enabled: true

xpack.security.http.ssl:
enabled: false
verification_mode: certificate
truststore.path: certs/elastic-certificates.p12
keystore.path: certs/elastic-certificates.p12 xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/elastic-certificates.p12
truststore.path: certs/elastic-certificates.p12

3.4、创建用户密码

集群中的节点都按照上面的方式完成配置并启动后,就可以设置账号密码了

a、自动创建密码

 
arduino

复制代码
./bin/elasticsearch-setup-passwords auto

b、手动输入密码

 
arduino

复制代码
./bin/elasticsearch-setup-passwords interactive

c、重置用户密码(随机密码)

 
bash

复制代码
./bin/elasticsearch-reset-password -u elastic

d、重置用户密码(指定密码)

 
bash

复制代码
./bin/elasticsearch-reset-password -u elastic -i <password>

4、认证验证场景

4.1、浏览器访问验证

这里说明一下: xpack.security.http.ssl的enable为true 就会是https,为false就是http,我这里是关掉了

4.2、curl 认证

当你执行curl去访问es api的时候也会提示需要进行认证 

但是带上账号密码就可以了 

4.3、kibana 认证

kibana中配置ES中配置的kibana账号密码即可连接ES认证

 
vbscript

复制代码
elasticsearch.username: "kibana"
elasticsearch.password: "XXX"
elasticsearch.hosts: ["http://1.1.1.1:9200","http://2.2.2.2:9200","http://3.3.3.3:9200"]
server.port: 5601

[转帖]龙叔学ES:Elasticsearch XPACK安全认证的更多相关文章

  1. es破解xpack

    环境:OS:CentOS 7elasticsearch:6.5.0 1.vim LicenseVerifier.java package org.elasticsearch.license; impo ...

  2. 龙叔拿了20几个offer,原因竟有些泪目...

    我是龙叔,一个分享互联网技术和心路历程的大叔. 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles ...

  3. 三叔学FPGA系列之二:Cyclone V中的POR、配置、初始化,以及复位

    对于FPGA内部的复位,之前一直比较迷,这两天仔细研究官方数据手册,解开了心中的诸多疑惑,感觉自己又进步了呢..... 原创不易,转载请转原文,注明出处,谢谢.   一.关于POR(Power-On ...

  4. 【Elasticsearch】【WEB】java web服务连接es elasticsearch始终报错,无法正常连接使用的错误解决历程

    前情提要: web服务往华为云上迁移 ================内网的好环境,相关配置=================== 1.web服务关于ES的集群配置如下: elasticAddress ...

  5. ES ElasticSearch 7.x 下动态扩大索引的shard数量

    ES ElasticSearch 7.x 下动态扩大索引的shard数量 背景 在老版本的ES(例如2.3版本)中, index的shard数量定好后,就不能再修改,除非重建数据才能实现. 从ES6. ...

  6. SpringBoot 整合es(elasticsearch)使用elasticsearch-rest-high-level-client实现增删改

    引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok< ...

  7. elasticsearch基于RBAC认证和集群之间的TLS通讯

    elasticsearch基于RBAC认证和集群之间的TLS通讯 一.背景 二.需要解决的问题 三.给es增加用户名和密码访问 1.修改config/elasticsearch.yml 2.访问es集 ...

  8. ElasticSearch + xpack 使用.md

    ElasticSearch 是一个高可用开源全文检索和分析组件.提供存储服务,搜索服务,大数据准实时分析等.一般用于提供一些提供复杂搜索的应.我们为什么要选择 ElasticSearch ?因为它是一 ...

  9. ElasticSearch + xpack 使用

    ElasticSearch 是一个高可用开源全文检索和分析组件.提供存储服务,搜索服务,大数据准实时分析等.一般用于提供一些提供复杂搜索的应.我们为什么要选择 ElasticSearch ?因为它是一 ...

  10. ES(Elasticsearch)

    基本概念 Elasticsearch是一个实时分布式搜索和分析引擎 支持: 全文搜索 结构化搜索 分析 可以这样进行描述: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 ...

随机推荐

  1. vue常用函数

     this.$router.back();  //回退上一页面

  2. three.js中场景模糊、纹理失真的问题

    目录 1. 概述 2. 方案 2.1. 开启反走样 2.2. 开启HiDPI设置 3. 结果 4. 参考 1. 概述 在three.js场景中,有时会遇到场景模糊,纹理失真的现象,似乎three.js ...

  3. MySQL进阶篇:详解存储引擎InnoDB

    本篇基础环境是使用navicat 12和Mysql8.0 MySQL进阶篇:第一章_一.二_存储引擎特点_InnoDB 1.1 存储引擎特点 1.1.1 InnoDB 1). 介绍 InnoDB是一种 ...

  4. CutMix&Mixup详解与代码实战

    摘要:本文将通过实践案例带大家掌握CutMix&Mixup. 本文分享自华为云社区<CutMix&Mixup详解与代码实战>,作者:李长安. 引言 最近在回顾之前学到的知识 ...

  5. JavaScript回调函数的高手指南

    摘要:本文将会解释回调函数的概念,同时帮你区分两种回调:同步和异步. 回调函数是每个前端程序员都应该知道的概念之一.回调可用于数组.计时器函数.promise.事件处理中. 本文将会解释回调函数的概念 ...

  6. CTPN+CRNN算法端到端实现文字识别的实战开发

    本文分享自华为云社区<CTPN+CRNN 算法端到端实现文字识别>,作者:HWCloudAI. OCR介绍 光学字符识别(英语:Optical Character Recognition, ...

  7. 云小课 | 一个三分钟快速定制OCR应用的神器,要不?

    摘要:ModelArts Pro提供了文字识别套件,基于丰富的文字识别算法和行业知识积累,帮助客户快速构建满足不同业务场景需求的文字识别服务.三分钟即可快速定制OCR服务,实现多种版式图像的文字信息结 ...

  8. 详解4种微服务框架接入Istio方案

    摘要:使用k8s和lstio网格进行开发,将服务发现.服务治理留给基础设施,可以将开发人员从复杂的服务中解脱出来,专注于业务开发,是当前来说比较好的解决方案. 本文分享自华为云社区<传统微服务框 ...

  9. Weex原理及架构剖析

    早期H5和Hybrid方案的本质是,利用客户端App的内置浏览器(也就是webview)功能,通过开发前端的H5页面满足跨平台需求.比如PhoneGap cordova ionic -- 该方案提升开 ...

  10. Jenkins Pipeline 流水线 - withCredentials 使用

    添加凭证 Pipeline script pipeline { agent any stages { stage('withCredentials 使用凭证') { steps { withCrede ...