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

Elasticsearch 中的高级用户管理:领域、API 密钥和 JWT 集成

新智锦绣 2025-07-25
765

点击蓝字关注我们


作为一款处理海量数据的引擎,ES 的用户管理直接关系到数据安全和访问控制。默认的用户名/密码认证太基础了,我们来聊聊“领域”(Realms)、API 密钥和 JWT 集成。这些工具能让你实现更精细、更安全的用户验证,尤其适合企业级应用。


领域(Realms)——认证的多源头


领域是 ES 验证用户的机制,分内部和外部。内部简单自管,外部连外部系统。默认启用 native 或 file 领域,其他需配置。


内部领域


  • Native Realm:用户存 ES 索引,支持用户名/密码。默认可用,用 Kibana 或 API 管理用户。适合小团队,无需外部依赖。

  • File Realm:用户定义在节点文件上,支持用户名/密码。每个节点存储,适用于 Kubernetes。自部署可用。


外部领域


这些连接外部 ID 系统,多实例配置:

  • LDAP 和 Active Directory:连 LDAP/AD 服务器,用户名/密码验证。适合企业目录集成,但 Elastic 云托管版不支持。

  • PKI:用 X.509 证书验证 DN(Distinguished Name)。

  • SAML:SAML 2.0 Web SSO,专为 Kibana 设计,非 REST API。

  • Kerberos:用 Kerberos 票据验证。

  • OIDC:OpenID Connect 集成,ES 作为 Relying Party,支持 Kibana SSO。

  • JWT:用 JWT 令牌验证。


配置示例:


    xpack.security.authc.realms.ldap.ldap1: 
    order: 1
    type: ldap 
    #其他 LDAP 设置如 url, bind_dn 等
    #优先级用 order 控制,低数字先试。多个领域可链式或分组域
    #Tips:生产中,结合内部+外部,避免单点故障。自定义插件可扩展领域。


    API 密钥——无状态的访问令牌


    API 密钥是 ES 的“长期票据”,适合脚本、应用或第三方集成,无需每次登录。比用户名密码更安全,能设置过期、角色限制。


    创建和管理


      POST /_security/api_key 

      "name""my-api-key"
      "role_descriptors": { 
      "role1": { 
      "cluster": ["monitor"], 
      "index": [ 

      "names": ["my-index-*"], 
      "privileges": ["read"



      }, 
      "expiration""1d"// 过期时间,可选 
      }

      管理:

      • 查询:GET _security/api_key?name=xxx

      • 失效:POST _security/invalidate_api_key { "ids": ["id1"] }

      • 更新:用角色映射 API 调整权限。

      8.x 后更新:支持元数据、细粒度角色,及跨集群 API 密钥。


      JWT 集成——现代 token 验证


      JWT(JSON Web Token)领域让 ES 信任外部 JWT 服务,作为 bearer token。区分客户端和用户身份,适用于 OIDC 或自定义流程。从 8.2 起支持 id_token,8.7 加 access_token。


      配置步骤


      在 elasticsearch.yml 添加:

        xpack.security.authc.realms.jwt.jwt1:
          order: 3
          token_type: id_token  // 或 access_token
          client_authentication.type: shared_secret"
          allowed_issuer: "https://your-issuer.com"
          allowed_audiences: ["aud1"]
          allowed_signature_algorithms: ["RS256""HS256"]
          pkc_jwkset_path: "jwkset.pem"  // JWKS 文件或 URL
          claims.principal: "sub"  claims.groups: "groups"

        用 keystore 存秘密:

          ./bin/elasticsearch-keystore xpack.security.authc.realms.jwt.jwt1.client_authentication.shared_secret


          支持算法和 claim 映射


          算法:RSA/EC PKC via JWKS,HMAC 密钥。必须验证 iss、sub、aud、exp 等。

          映射:

          • principal: 用户名 (sub)

          • groups: 组 (roles)

          • name/mail/dn: 可选

          与 OIDC:JWT 可处理 OIDC ID Token,但 OIDC 领域更适合 Kibana SSO。access_token 需 strict 验证 subjects。

          安全考虑:启用 JWKS 重载,监控过期。角色映射用 API,非 yml 文件。

           

          关于公司

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


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

          Elastic 微信群

          EDB 微信群


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


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

          评论