在ElasticSearch6.8及以上版本开启安全认证功能

这篇具有很好参考价值的文章主要介绍了在ElasticSearch6.8及以上版本开启安全认证功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


title: 在ElasticSearch6.8及以上版本开启安全认证功能
date: 2019-06-20 20:01:00
tags:

  • elastic search
  • es安全认证
    categories:
  • 搜索引擎
  • ElasticSearch

在6.8之前免费版本并不包含安全认证功能,之后版本有开放一些基础认证功能,对于普通用户来说是够用的。

在ElasticSearch6.8及以上版本开启安全认证功能

免费版本

  1. TLS 功能,可对通信进行加密
  2. 文件和原生 Realm,可用于创建和管理用户
  3. 基于角色的访问控制,可用于控制用户对集群 API 和索引的访问权限;
  4. 通过针对 Kibana Spaces 的安全功能,还可允许在 Kibana 中实现多租户。

收费版本包含更丰富的安全功能,比如:

  1. 日志审计
  2. IP过滤
  3. LDAP、PKI和活动目录身份验证
  4. 单点登录身份验证(SAML、Kerberos)
  5. 基于属性的权限控制
  6. 字段和文档级别安全性
  7. 静态数据加密支持

需要同时在ES和kibana端开启安全认证功能,下面介绍如何操作。

ES端

启用安全模块

  1. 打开ES配置文件 $ES_PATH_CONF/elasticsearch.yml 添加设置:xpack.security.enabled:true,在免费版本中此项设置是禁用的,所以需要显式打开它。
  2. 非集群模式下启用单节点发现 discovery.type: single-node。如果你是在ES集群中配置则忽略本项,因为集群模式下要配置TLS。

启用Elasticsearch安全功能时默认情况下会启用基本身份验证,要与集群通信你必须指定用户名和密码,除非启用匿名访问,否则所有不包含用户名和密码的请求都将被拒绝。

为系统默认用户创建密码

Elastic Stack安全功能提供内置的用户凭据可帮助你启动运行ES,这些用户具有一组固定的权限,在设置密码之前无法进行身份验证,其中elastic用户可以用来设置所有内置的用户密码。

上面的内置用户存储在一个特殊 .security 索引中,该索引由Elasticsearch管理。如果禁用内置用户或其密码更改,则更改将自动反映在集群中的每个节点上。但是,如果从快照中删除或恢复索引,则已应用的任何更改都将丢失。

  1. 先创建keystore文件 bin/elasticsearch-keystore create
  2. 在Elasticsearch目录中运行命令:./bin/elasticsearch-setup-passwords interactive,回车之后为每一个用户设置独立的密码。记住ES实例必须启动。
  3. 你需要在后续步骤中使用这些内置用户,因此务必牢记前面设置的密码!

在集群上配置TLS

如果你在操作单节点ES则可以跳过本内容。

Elastic Stack安全功能使你可以加密来自Elasticsearch集群的流量。使用传输层安全性(TLS)来保护连接,传统层安全性通常称为“SSL”。

为每个Elasticsearch节点生成私钥和X.509证书

  1. 生成CA证书 bin/elasticsearch-certutil ca,将产生新文件 elastic-stack-ca.p12。该 elasticsearch-certutil 命令还会提示你输入密码以保护文件和密钥,请保留该文件的副本并记住其密码。
  2. 为集群中的每个节点生成证书和私钥 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12,将产生新文件 elastic-certificates.p12。系统还会提示你输入密码,你可以输入证书和密钥的密码,也可以按Enter键将密码留空。默认情况下 elasticsearch-certutil 生成没有主机名信息的证书,这意味着你可以将证书用于集群中的每个节点,另外要关闭主机名验证。
  3. elastic-certificates.p12 文件复制到每个节点上Elasticsearch配置目录中。例如,/home/es/config/certs。无需将 elastic-stack-ca.p12 文件复制到此目录。
    mkdir config/certs
    mv elastic-certificates.p12 config/certs/
    

配置集群中的每个节点以使用其签名证书标识自身并在传输层上启用TLS

  1. 启用TLS并指定访问节点证书所需的信息,将以下信息添加到每个节点的 elasticsearch.yml 文件中:
    xpack.security.transport.ssl.enabled: true
    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 
    
  2. 如果你在创建证书时输入了密码,那可以通过下面的方法设置。
    bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
    
    bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
    
  3. 重启Elasticsearch

配置为使用TLS的节点无法与使用未加密网络的节点通信(反之亦然)。启用TLS后,必须重新启动所有节点才能保持群集之间的通信。

你还可以选择在HTTP层上启用TLS,这里就不作介绍了。

  • 处理 [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535] 问题,打开 /etc/security/limits.conf 文件并添加下面内容,其中es表示启动ES实例的用户。
    es   soft    nofile          65536
    es   hard    nofile          65536
    es   memlock unlimited
    

其它组件中启用加密(非强制)

根据自己的需要配置,不配置并不影响本次启用安全认证功能。

  1. 配置X-Pack监视以使用加密连接
  2. 配置Kibana以加密浏览器和Kibana服务器之间的通信,并通过HTTPS连接到Elasticsearch。
  3. 配置Logstash以使用TLS加密。
  4. 配置Beats以使用加密连接。
  5. 配置Java传输客户端以使用加密通信。
  6. 配置Elasticsearch for Apache Hadoop以使用安全传输。

Kibana端

启用Elasticsearch安全功能后,用户必须使用有效的用户ID和密码登录Kibana。

将内置用户添加到Kibana

  1. kibana.yml 文件中填写连接ES的用户凭证,上一步有为 kibana 用户初始化密码。
    elasticsearch.username: "kibana"
    elasticsearch.password: "your_password"
    
  2. 如果你不想将用户ID和密码放在kibana.yml文件中明文配置,可以将它们存储在密钥库中。运行以下命令以创建Kibana密钥库并添加配置:
    ./bin/kibana-keystore create
    ./bin/kibana-keystore add elasticsearch.username
    ./bin/kibana-keystore add elasticsearch.password
    
  3. 重启kibana。

测试

重新访问kibana会跳转到登录页面,用上面初始化的内置账号比如elastic来登录即可。进入Manager菜单可以添加用户和角色,权限是和角色绑定的。


参考文献文章来源地址https://www.toymoban.com/news/detail-458009.html

  1. https://www.elastic.co/guide/en/elastic-stack-overview/6.8/ssl-tls.html

到了这里,关于在ElasticSearch6.8及以上版本开启安全认证功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache zookeeper kafka 开启SASL安全认证 —— 筑梦之路

      Kafka是一个高吞吐量、分布式的发布-订阅消息系统。Kafka核心模块使用Scala语言开发,支持多语言(如Java、Python、Go等)客户端,它可以水平扩展和具有高吞吐量特性而被广泛使用,并与多类开源分布式处理系统进行集成使用。   Kafka作为一款开源的、轻量级的、分布式、可

    2024年02月11日
    浏览(32)
  • ElasticSearch6.x版本概念介绍以及在Kibana上增删改查的操作

    教学讲解视频地址:视频地址 1.接近实时(NRT Near Real Time ) Elasticsearch是一个 接近实时 的搜索平台。这意味着, 从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒内) 2.索引(index) 一个索引就是一个拥有几分相似特征的文档的集合 。比如说,你可以有一个

    2023年04月24日
    浏览(44)
  • ElasticSearch6.x版本的Scroll滚动查询讲解及Kibana和SpringBoot实操演示

    ElasticSearch中在进行普通的查询时, 默认只会查询出来10条数据 。我们通过设置ElasticSearch中的 size 可以将最终的查询结果从 10 增加到 10000 。但这时候如果我们需要查询的数据大于10000条怎么办呢?这时候有两种方法: 深度分页 和 滚动查询 。在这里我们优选选择 滚动查询

    2024年01月17日
    浏览(40)
  • 单机多节点 elasticsearch 集群安全认证

    es 版本:7.6.2 部署环境:CentOS Linux release 7.6.1810 (Core) cd 到 es 的安装目录,并执行下面的命令来生成 ca 证书: 碰到第一个直接回车,不用管。 碰到第二个输入密码,例如 123456。 完成后会在当前目录生成一个文件: elastic-stack-ca.p12 需要输入密码时就直接输入刚才的密码,需

    2024年02月09日
    浏览(42)
  • Android9.0及以上版本,开启Http的访问权限

    前言: 在android 9.0及以上版本中,cleartextTrafficPermitted默认设置为false阻止了从应用程序发送的任何http请求,官方说明:行为变更:以 API 级别 28 及更高级别为目标的应用  |  Android 开发者  |  Android Developers 1.在res新增xml文件:network_security_config.xml,内容如下: 全部: 过滤:

    2024年02月13日
    浏览(44)
  • ElasticSearch7.3.0 集群搭建及配置安全认证

    注: 由于是测试,搭建的环境就在一台机器上(操作系统是 CentOS 7) 配置 Elasticsearch Elasticsearch 的配置文件是 elasticsearch/elasticsearch.yml 集群的名称 配置集群的名称,所有的node节点集群名称要一致 节点的名称 配置每个节点的名称,节点的名称要在集群中唯一 索引文件的存储位置 默认

    2023年04月13日
    浏览(65)
  • elasticsearch-5.6.15集群部署,如何部署x-pack并添加安全认证

    目录 一、环境 1、JDK、映射、域名、三墙 2、三台服务器创建用户、并为用户授权 二、配置elasticsearch-5.6.15实例 1、官网获取elasticsearch-5.6.15.tar.gz,拉取到三台服务器 2、elas环境准备 3、修改elasticsearch.yml配置 4、修改软、硬件线程数 5、修改最大连接  6、修改jvm内存 7、所有节

    2024年01月22日
    浏览(38)
  • 解决forest低版本请求不安全的网站出现SSL认证不通过问题

    先说结论:无法解决 那既然无法解决,为啥还要写这样一篇文章呢,是因为这个问题我弄了一天多,我觉得有必要记录一下; 同时后面也是使用了hutool 的http作为代替方案,也是因为在hutool的官网没有特意标明,所以这也是一个理由吧! 简单点说,就是公司系统,只允许使

    2024年02月13日
    浏览(35)
  • Elasticsearch 7 以上版本显示hits.total超过10000条设置

    添加rest_total_hits_as_int=true即可   需要在sql里面添加  /*! TRACK_TOTAL_HITS(true) */ 或者用 /*! TRACK_TOTAL_HITS(10001) */ 直接限制记录数量查询即可  请求地址 http://172.21.72.165:9200/_nlpcn/sql 请求头 Content-Type:application/json Authorization:Basic ZWxhc3RpYzoxMjM0NTY= 请求入参 {     \\\"sql\\\": \\\"select /*! TRACK_TO

    2024年02月03日
    浏览(40)
  • ES(Elasticsearch)8.x 以上启用自动安全配置,手动安全配置

    ES 8.x 以后,默认启用了自动安全配置,即 $ES_PATH_CONF/elasticsearch.yml 中默认的  xpack.security.enabled: false 变成了默认的 xpack.security.enabled: true ,启用elasticsearch 的安全配置。 自动进行以下安全配置: 为传输层和 HTTP 层生成 TLS 证书和密钥。 TLS 配置设置写入 elasticsearch.yml 。 为

    2024年01月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包