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

一、背景

默认情况下,当我们搭建好es集群后,我们通过http://localhost:9200就可以直接访问到es集群的一些信息,这显然是不安全的。在同一个局域网中,如果我们启动了多个es节点,且集群的名字相同,那么他们可能会自动加入集群,这显然是不安全的。因此我们要想个办法来解决它。es自带的插件x-pack就可以解决上述的要求。在高版本的es中,x-pack插件是默认就集成了。

二、需要解决的问题

1、给es增加用户名和密码访问。
2、集群之间的通讯采用TLS通讯。

三、给es增加用户名和密码访问

1、修改config/elasticsearch.yml

# 1、修改 ES_HOME/config/elasticsearch.yml
# 增加如下配置
vim config/elasticsearch.yml
xpack.security.enabled: true

2、访问es集群

此时可以看到访问es集群就需要用户名和密码了,那么我们这个用户名和密码从哪里获取呢?

3、启用es集群内建的用户

1、让es自动设置初始化密码

./bin/elasticsearch-setup-passwords auto

如果执行上面这个语句,那么es会自动设置密码,我们需要自己把这个密码保存下来。

2、自动手动设置密码

./bin/elasticsearch-setup-passwords interactive

此处为了简单,将每个用户的用户名和密码都设置成 123456,生产环境需要设置成一个复杂的接口。

注意️:

当我们设置了elastic用户的密码后,就不可在执行elasticsearch-setup-passwords命令了。

3、重新访问es,输入用户名和密码


重新访问es集群,输入用户名和密码之后,就可以访问到集群的信息了。

四、kibana连接到es集群

1、设置kibana的用户名和密码

# 设置用户名和密码
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"

该用户名和密码,是由上一步设置好的。

2、访问kibana


此时可以看到,我们的kibana就需要用户名和密码访问了。

3、通过kibana创建用户和角色

五、配置es集群之间的TLS通讯

1、在es集群的生产模式中,节点之间的通讯必须要使用TLS通讯,否则集群无法启动。

2、配置集群以TLS通讯,还可以防止不受信任的节点加入es集群。

1、何为es的生产模式

  1. 集群之间的服务发现不可是 single-node discovery 服务发现。

  2. 节点之间可以使用非回环地址加入集群。

2、配置步骤

1、生成证书(CA)

# 生成证书
bin/elasticsearch-certutil ca

2、为每个节点签发证书

# --ca 指定证书的路径
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

3、查看证书的生成路径

4、为集群中的每个节点配置证书

# 1、将证书拷贝到每个节点的 config 目录下
mv elastic-certificates.p12 config # 2、修改elasticsearch.yml文件,增加如下配置
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

5、重启es集群

6、重新加载集群的证书、密钥等信息

使用resource.reload.interval.high参数配置,默认是5s

六、java client中basic认证的写法

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient; /**
* @author huan.fu 2021/4/22 - 下午2:48
*/
public class AbstractEsApi { protected final RestHighLevelClient client; public AbstractEsApi() {
final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "123456")); client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http"),
new HttpHost("localhost", 9202, "http")
)
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider))
);
}
}

七、参考链接

1、给es集群设置简单的用户名、密码访问

2、配置集群之间TLS通讯

3、es集群的开发模式和生产模式

4、配置rest通过https访问

elasticsearch基于RBAC认证和集群之间的TLS通讯的更多相关文章

  1. centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)

    目录 目录 前言 集群详情 环境说明 安装前准备 提醒 一.创建TLS证书和秘钥 安装CFSSL 创建 CA (Certificate Authority) 创建 CA 配置文件 创建 CA 证书签名 ...

  2. ElasticSearch入门 第二篇:集群配置

    这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  3. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  4. ElasticSearch和Kibana 5.X集群的安装

    ElasticSearch和Kibana 5.X集群的安装 1.准备工作 1.1.下载安装包 1.2.系统的准备 2.ElasticSearch集群的安装 2.1.修改 config/elastics ...

  5. mac 下搭建Elasticsearch 5.4.3分布式集群

    一.集群角色 多机集群中的节点可以分为master nodes和data nodes,在配置文件中使用Zen发现(Zen discovery)机制来管理不同节点.Zen发现是ES自带的默认发现机制,使 ...

  6. ElasticSearch 深入理解 三:集群部署设计

    ElasticSearch 深入理解 三:集群部署设计 ElasticSearch从名字中也可以知道,它的Elastic跟Search是同等重要的,甚至以Elastic为主要导向. Elastic即可 ...

  7. 基于docker安装pxc集群

    基于docker安装pxc集群 一.PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上.这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据 ...

  8. Elasticsearch 主从同步之跨集群复制

    文章转载自:https://mp.weixin.qq.com/s/alHHxXont6XFm_m9PfsGfw 1.什么是跨集群复制? 跨集群复制(Cross-cluster replication, ...

  9. ElasticSearch 5学习(7)——分布式集群学习分享2

    前面主要学习了ElasticSearch分布式集群的存储过程中集群.节点和分片的知识(ElasticSearch 5学习(6)--分布式集群学习分享1),下面主要分享应对故障的一些实践. 应对故障 前 ...

随机推荐

  1. 别再自建仓库了,云效Maven仓库不限容量免费用

    别再自建仓库了,云效Maven仓库不限容量免费用云效制品仓库 Packages提供maven私有仓库.npm私有仓库.通用制品仓库等企业级私有制品仓库,用于maven.npm等软件包和依赖管理.不限容 ...

  2. 利用k8s yaml配置文件起一个http能够让外部访问

    1.首先建一个http的Deployment apiVersion: apps/v1 #版本信息 kind: Deployment #文件类型 metadata: #Deployment资源的元数据信 ...

  3. VBox 虚拟机安装 Openwrt 做旁路由

    VBox 虚拟机安装 Openwrt 做旁路由 需求:开个虚拟机做旁路由,电脑把网关设置成旁路由地址,用它跑个上网或其他什么东西. 安装及配置过程简述 这件事流程很简单,总结起来主要有以下几点: 安装 ...

  4. PHP中的强制类型转换

    学过静态语言开发的朋友对类型转换不会陌生,比如Java.C#.C++等.静态语言的好处就是变量强制必须指定类型,这也是编译的要求,所以大部分编译型的语言都会有强制变量类型的要求.而PHP据说也会在PH ...

  5. 如何快速下载ubuntu镜像

    使用国内镜像地址下载: 中科大http://mirrors.ustc.edu.cn/ubuntu-releases/ 阿里云开源镜像站http://mirrors.aliyun.com/ubuntu- ...

  6. 由浅入深了解cookie

    什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 c ...

  7. css3中的陌生词汇

    Transform transform属性是静态属性,一旦写到style里面,将会直接显示作用,无任何变化过程.transform的主要用途是用来做元素的特殊变形. 关于图形变形的基础条件当中的原点设 ...

  8. Spring Cloud Gateway 没有链路信息,我 TM 人傻了(下)

    本系列是 我TM人傻了 系列第五期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 获取异 ...

  9. 单页应用后退不刷新方案(vue & react)

    引言 前进刷新,后退不刷新,是一个类似app页面的特点,要在单页web应用中做后退不刷新,却并非一件易事. 为什么麻烦 spa的渲染原理(以vue为例):url的更改触发onHashChange/pu ...

  10. 揭秘:懂Python的测试员薪资到底有多高?

    前言 面试的时候,面试官经常会问:会Python吗?有在工作中写过项目吗?会搭建自己的框架吗?我:恩,我只简单写过一些demo. 有时候问一些简单的Python,一问就会懵.比如:json和字典有什么 ...