ELK下Kibana和Elasticsearch之间相互TLS身份验证
介绍
安全套接字层(SSL)和传输层安全性(TLS)为传输中的数据提供加密。虽然这些术语通常可以互换使用,但Kibana仅支持TLS,它取代了旧的SSL协议。
TLS需要X.509证书来验证通信方并执行传输中数据的加密。每个证书都包含一个公钥,并具有一个关联的(但独立的)私钥;这些密钥用于加密操作。Kibana支持PEM或PKCS#12格式的证书和私钥。
在标准TLS配置中,服务器会提供签名证书以向客户端进行身份验证。在双向TLS配置中,客户端还会提供签名证书以向服务器进行身份验证。
在集群上启用Elasticsearch安全功能后,必须对Kibana(客户端)对Elasticsearch(服务器)的每个请求进行身份验证。最终用户通过Kibana向Elasticsearch发出的大多数请求都使用登录用户的凭据进行身份验证。但是,Kibana需要向Elasticsearch提出一些内部要求。因此,您必须为Kibana配置凭据以用于这些请求。
如果Kibana已elasticsearch.username和elasticsearch.password配置,它会尝试通过使用这些来验证Elasticsearch 原生的境界。但是,Kibana还支持通过公钥基础结构(PKI)领域与Elasticsearch进行相互TLS身份验证。为此,Elasticsearch需要验证Kibana客户端证书上的签名,还需要将客户端证书的专有名称(DN)映射到适当的kibana_system角色。
使用PKI领域是一项黄金功能。有关弹性许可级别的比较,请参阅预订页面。
要将Kibana和Elasticsearch配置为使用双向TLS身份验证,请执行以下操作:
1、设置Kibana以使用具有用户名和密码的Elastic Stack安全功能。
2、在Kibana和Elasticsearch之间设置TLS加密。
这需要为Elasticsearch生成一个“服务器证书”,以供在HTTP层上使用。
3、获取Kibana的客户证书和私钥。
连接到Elasticsearch时,Kibana必须具有此“客户端证书”和相应的私钥。
这与Kibana将提供给Web浏览器的服务器证书不同。
您可以选择使用该elasticsearch-certutil工具生成客户端证书和私钥。如果您遵循用于生成节点证书的Elasticsearch文档,则您可能已经设置了证书颁发机构(CA)来对Elasticsearch服务器证书进行签名。您可以选择使用同一CA来签署Kibana客户端证书。例如:
这将在名为的PKCS#12文件中生成客户端证书和私钥kibana-client.p12。在此示例中,客户端证书的公共名称(CN)为"kibana-client"和主题备用名称(SAN)为"<your_kibana_hostname>"。如果您在Elasticsearch上启用了主机名验证,则可能需要SAN。
4、获取Kibana的证书颁发机构(CA)证书链。
当从Kibana接收连接时,Elasticsearch需要适当的CA证书链来正确建立信任。
如果按照说明生成客户端证书,则将有Kibana的PKCS#12文件。您可以从该文件中提取CA证书链。例如:
这将生成一个名为PEM格式的文件kibana-ca.crt,该文件包含PKCS#12文件中的CA证书。
5、使用PKI领域和本机领域配置Elasticsearch。
默认情况下,Elasticsearch提供用于使用用户名和密码进行身份验证的本机领域。但是,要同时支持PKI领域(针对Kibana)和本机领域(针对最终用户),必须在elasticsearch.yml以下位置配置每个领域:
6、配置Elasticsearch以请求客户端证书。
默认情况下,建立TLS连接时,Elasticsearch将不请求客户端证书。要更改此设置,您必须在中设置可选的客户端证书身份验证elasticsearch.yml:
7、重新启动Elasticsearch。
8、使用Kibana在Elasticsearch中为客户端证书创建角色映射。
此角色映射会将角色分配kibana_system给与包含的映射规则匹配的任何用户,该规则设置为等于客户端证书的DN属性:
有关更多信息,请参见角色映射。
9、配置Kibana以使用客户端证书和私钥。
您需要指定访问客户端证书和相应私钥所需的信息。
a.如果您的证书和私钥包含在PKCS#12文件中:
在中指定您的PKCS#12文件kibana.yml:
如果您的PKCS#12文件已加密,则将解密密码添加到Kibana密钥库中:
如果您的PKCS#12文件没有使用密码保护,则取决于生成方式,您可能需要将其设置 elasticsearch.ssl.keystore.password为空字符串。
b、否则,如果您的证书和私钥为PEM格式:
在中指定您的证书和私钥kibana.yml:
如果您的私钥已加密,则将解密密码添加到您的Kibana密钥库中:
10、将Kibana配置为不对 Elasticsearch使用用户名和密码。
您必须从中删除elasticsearch.username和elasticsearch.password设置kibana.yml。如果存在这些内容,Kibana将尝试使用它们通过本机领域向Elasticsearch进行身份验证。
11、重新启动Kibana。
这些步骤使Kibana可以使用证书对Elasticsearch进行身份验证。但是,最终用户将只能使用用户名和密码向Kibana进行身份验证。要允许最终用户使用客户端证书向Kibana进行身份验证,请参阅Kibana PKI身份验证。
参考链接 :
https://www.elastic.co/guide/en/kibana/current/elasticsearch-mutual-tls.html
ELK下Kibana和Elasticsearch之间相互TLS身份验证相关推荐
- tls 使用java生成_同时使用传入和传出连接时,相互TLS身份验证存在Java问题
tls 使用java生成 在大多数企业环境中,应用程序之间的连接中使用某种形式的安全通信(例如TLS或SSL). 在某些环境中, 相互(双向)身份验证也是一项非功能性要求. 有时将其称为双向SSL或双 ...
- 同时使用传入和传出连接时,相互TLS身份验证存在Java问题
在大多数企业环境中,在应用程序之间的连接中使用某种形式的安全通信(例如TLS或SSL). 在某些环境中, 相互(双向)身份验证也是一项非功能性要求. 有时将其称为双向SSL或双向TLS身份验证. 因此 ...
- 成功解决Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴的问题
成功解决Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴的问题 导读 针对这个问题,网上一大把瞎指挥教程.都不对,不对!真是误人子弟! 目录 解决问题 解决思路 解决方法 解决问题 Win ...
- Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴(亲测可用)
文章目录 一.问题 二.解决思路 三.解决方法 一.问题 Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴 二.解决思路 两个系统之间不能直接粘贴复制,安装辅助工具即可. 三.解决方法 s ...
- Elasticsearch:无需基本身份验证即可创建用于访问的不记名令牌
在很多的时候我们并不希望把用户名及密码分发出去,这是因为一旦拥有用户名及密码,你就可以直接登录系统,你甚至可以做更多的事情.另外一方面,用户名及密码还没有期限设定,除非我们在系统中把这个用户删除掉.为 ...
- ELK下kibana安装Metricbeat工具
metricbeat简介 将 Metricbeat 部署到您所有的 Linux.Windows 和 Mac 主机,Metricbeat可以定期收集操作系统和服务器的运行指标(CPU,内存,硬盘,IO, ...
- ELK下Kibana的使用
在kibana的discover中可以根据自己选择的fileds筛选出自己想要看到的字段比如: 但是如何统计某条日志出现的次数或者说某种类型的日志出现的次数并且以可视化图表的形式展现出来 这个时候就可 ...
- ELK下Kibana性能调优
介绍 Kibana是一个单页Web应用 首先,Kibana是一个单页的web应用.何为单页web应用?即所有的页面的读取都是在浏览器上完成,而与后台服务器无关.与后台服务器的通信只关乎数据,而非页面. ...
- RFC8705-OAuth 2.0双向TLS客户端身份验证和证书绑定访问令牌
RFC8705-OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens 目录 摘要 1. 简介(I ...
最新文章
- YOLOv4来了,大型调优现场,速度和准确率俱佳
- 单片机ad转换测电压c语言,大家帮我看下这个STC AD转换 测电压程序错在哪里,谢谢了...
- centos下配置gitosis服务器
- Python实例 -- 如何快速获取列表中最大的三个元素
- 机器学习(2.sklearn(Scikit-learn)库、字典数据的特征抽取)
- Java—BIO模型
- linux下的Tomcat启动
- New module changes in Go 1.16
- python读取文件特定内容_利用python代码获取文件特定的内容,并保存为文档
- CCF 2016-4-4游戏
- silverlight的开发暂时是痛苦的
- appnode报错_appnode
- 2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
- linux中怎么粘贴复制文件路径,如何在Linux中复制文件和目录
- 股票中,什么是净资产收益率,有什么作用?
- Ubuntu 无法解析域名 提示错误
- python中 and 和 or 操作的返回值。
- c++中CString和String
- [Java 编程] -- style属性
- ssm体育用品库存管理毕业设计-附源码211712
热门文章
- dreamweaver 正则表达式为属性值加上双引号_「前端篇」不再为正则烦恼
- 多项目结构_[网红项目]碳云大厦
- mysql 分页_MySQL 如何优化大分页查询?
- Linux内核源代码分析——可执行文件header处理(二进制文件读写范例,写DUL工具入门指引)...
- 设计模式原则之六:依赖倒置原则
- 北师大计算机学院调剂,北师大数学科学学院2020年硕士研究生调剂方案
- java模块依赖关系_链接模块依赖关系未解决
- 软工实践第一次作业-自我审视和规划
- 阿里巴巴的AI都能做英文阅读理解了 你还不赶快多背几个单词?
- 撞库***:一场需要用户参与的持久战