暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch 角色与用户管理

新智锦绣 2024-12-18
862

点击蓝字关注我们


Elasticsearch 是一个分布式搜索和分析引擎,广泛应用于日志分析、全文搜索和数据分析等场景。在企业级环境中,为了确保数据安全和操作合规性,角色与用户的权限管理是 组成Elasticsearch 安全性的重要部分。


1

 安全性概览


Elasticsearch 的安全功能包括用户身份验证、权限控制和审计日志等。其核心思想是通过角色定义权限,并将角色分配给用户来实现精细化的权限管理。

  • 用户 (User):执行操作的主体。

  • 角色 (Role):一组权限的集合,定义用户可以执行的操作和访问的资源。

  • 权限 (Privilege):具体的操作权限,如读、写、删除等。

要启用安全性功能,需要配置 Elasticsearch 的相关配置,常见的相关配置:


1.1 开启集群安全:


配置项:

xpack.security.enabled: true

功能:

启用或禁用 Elasticsearch 的安全功能。

默认值:false(默认情况下安全功能是关闭的)。

用法:

将其设置为 true 后,启用用户身份验证、权限管理、SSL/TLS 加密等功能。

需要重新启动 Elasticsearch 节点以应用更改。


1.2 SSL/TLS 加密配置


配置项:

xpack.security.transport.ssl.enabled: true

xpack.security.http.ssl.enabled: true

xpack.security.transport.ssl.verification_mode: certificate

功能:

启用节点间通信的 SSL/TLS 加密和客户端 HTTP 请求的加密。默认值:false。

子配置:

xpack.security.transport.ssl.enabled:启用节点间通信加密。

xpack.security.http.ssl.enabled:启用 HTTP 客户端通信加密。

xpack.security.transport.ssl.verification_mode:

none:不验证 SSL。

certificate:验证证书是否受信任。

full:验证证书和主机名匹配。


1.3 配置证书路径、密钥路径等参数


配置项:

xpack.security.transport.ssl.key: path/to/key.key

xpack.security.transport.ssl.certificate: path/to/cert.crt

xpack.security.transport.ssl.certificate_authorities: ["/path/to/ca.crt"]


更多详细配置请参考:Security settings in Elasticsearch | Elasticsearch Guide [8.16] | Elastic


2

 Elasticsearch 默认角色和用户


在 Elasticsearch 安装后,系统会默认创建一些常用角色和用户。


2.1 默认角色


1. superuser:

    拥有所有权限,包括索引操作、集群管理等。

    用于管理员账户。

2. kibana_admin:

    用于管理 Kibana 配置的角色。

    允许访问所有 Kibana 功能并管理用户仪表盘。

3. monitoring_user:

    提供对监控数据的读取权限。

    可用于监控 Elasticsearch 集群的状态。

4. logstash_system:

    用于 Logstash 与 Elasticsearch 交互的内部角色。

5. beats_system:

    用于 Beats(如 Filebeat、Metricbeat)与 Elasticsearch 交互的内部角色。


2.2 默认用户


1. elastic:

    超级用户,默认密码需在首次启动后通过 `elasticsearchsetuppasswords` 工具设置。

自定义设置密码:

自定义密码:./bin/elasticsearch-setup-passwords interactive  

2. kibana:

    用于 Kibana 服务的内部用户,自动配置为 `kibana_system` 角色。

3. logstash_system:

    Logstash 内部用户,默认用于与 Elasticsearch 的通信。

4. beats_system:

    Beats 内部用户,默认用于与 Elasticsearch 的通信。


3

 创建用户和角色


3.1 配置安全性


确保 Elasticsearch 安装了 XPack 插件并启用了安全性模块。修改 `elasticsearch.yml` 文件,添加以下配置:

xpack.security.enabled: true

xpack.security.transport.ssl.enabled: true

xpack.security.http.ssl.enabled: true

重启 Elasticsearch 以应用配置。


3.2 创建角色


角色定义了具体的权限,可以通过 REST API 创建。例如,创建一个名为 `log_reader` 的角色,仅允许读取日志索引:

    PUT _security/role/log_reader
    {
     "cluster": ["monitor"],
     "indices": [
       {
         "names": ["logs*"],
         "privileges": ["read"],
         "field_security": {
           "grant": ["@timestamp", "message"]
         },
         "query": "{\"match\": {\"status\": \"active\"}}"
       }
     ]
    }
    复制

    cluster: 授予集群级别的监控权限。

    indices: 限制角色对 `logs*` 索引的访问权限。

    field_security: 限制用户只能读取特定字段。

    query: 进一步通过查询条件限制访问的数据范围。


    3.3 创建用户


    通过 REST API 创建用户并分配角色。例如,创建一个名为 log_monitor用户,并分配 log_reader角色:

      POST _security/user/log_monitor
      {
      "password" : "securepassword",
      "roles" : ["log_reader"],
      }
      复制


      4

       管理用户和角色:


      列出所有角色:

      GET _security/role

      列出所有用户:

      GET _security/user

      修改用户的角色或其他信息:

        PUT _security/user/log_monitor
        {
         "roles": ["log_reader", "another_role"]
        }
        复制

        删除用户:

        DELETE _security/user/ log_monitor

        删除角色:

        DELETE _security/role/ log_monitor


        5

         相关建议


        在创建和管理我们的角色用户时,可以遵循以下相关建议:

        1. 最小权限原则:为用户分配尽可能少的权限,以减少安全风险。

        2. 分离职责:通过多个角色实现操作的分离,例如数据读写与系统管理。

        3. 定期审计:定期检查用户和角色的配置,确保没有多余的权限。

        4. 复杂密码策略:使用强密码并定期更换,防止密码泄露。


        6

         结论


        通过角色与用户的管理,Elasticsearch 可以实现精细化的权限控制,从而提升数据安全性和系统可控性。本文介绍了角色与用户的基本概念、默认配置、创建和管理方法,并提供了一些基础的操作示例。希望能帮助大家更好地管理 Elasticsearch 。


        关于公司

        感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。


        欢迎关注我们,获取更多技术资讯和数字化转型方案,共创美好未来!

        Elastic 微信群

        EDB 微信群


        发现“分享”“赞”了吗,戳我看看吧


        文章转载自新智锦绣,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论