Kibana单点登录

单点登录SSO
最后更新时间: 1/19/2024, 6:04:34 PM

# 说明

Elasticsearch支持通过SAML协议单点登录Kibana。本文为您介绍IDaaS配置基于SAML协议配置本地部署的Elasticsearch,实现单点登录Kibana。

elastic官方配置文档 (opens new window)

# 集成条件

实现SAML认证,需要Elastic Stack产品安装xpack插件,版本在5.0以后的版本该插件为付费产品。

Elasticsearch的Elasticsearch.yml文件中开启xpack.security.enabled: true

# 认证配置

# IDaaS配置

  1. 添加预集成应用Kibana。

  2. 配置认证参数。

    参数 说明
    SP Entity ID Kibana实例的唯一标识符,Kibana实例的基本URL作为实体ID
    断言消费地址 用来接受来自IdP的身份验证消息,此ACS端点仅支持SAML HTTP-POST绑定,通常配置为{kibana-url}/api/security/v1/saml ,其中{kibana-url}为Kibana基础URL。
    NameID 账号名
    NameID Format 默认
    Audience URI 同SP Entity ID
    Single Logout URL {kibana-url}/logout

    关于断言消费地址,在Elasticsearch 7.10版本中使用 /api/security/v1/saml时,Kibana日志中会产生warn日志: The "/api/security/v1/saml" URL is deprecated and will stop working in the next major version, please use "/api/security/saml/callback" URL instead. ,说明低版本在陆续弃用 /api/security/v1/saml, 8.0版本将彻底不支持,建议使用 /api/security/saml/callback代替。

  3. 映射配置-添加映射。

  4. 进入应用详情-授权管理-应用账号,点击添加账号按钮,选择授权用户。

# Kibana和Elasticsearch配置

  1. 登录Kibana控制台,选择Management-Stack Management,Stack Management页面,选择Security-Roles,创建角色,角色名称自定义,如saml,添加Elasticsearch、Kibana 特权。

  2. 将创建好的自定义角色与IDaaS SAML做映射,选择Management-Dev Tools,在Console标签下执行如下示例代码。

    PUT /_security/role_mapping/zhuyunidaas
    {
      "roles": [ "saml" ], 
      "enabled": true,
      "rules": {
        "field": { "realm.name": "saml1" }
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

    其他高阶配置,请参见官方文档 Configuring role mappings (opens new window)

  3. 配置Elasticsearch和Kibana的YML配置文件,下载IDaaS IDP元数据IDPMetadata.xml 文件,上传至Elasticsearch的config/saml路径下,下载IDaaS的IDP元数据请访问 https://{your_domain}/api/v1/saml2/idp/metadata。

    Elasticsearch.yml配置示例如下:

    xpack.security.authc.token.enabled: true
    xpack.security.authc.realms.saml.saml1:
      order: 2
      idp.metadata.path: saml/IDPMetadata.xml
      idp.entity_id: "https://竹云IDaaS域名.bccastle.com/api/ams/saml/idp"
      sp.entity_id:  "{kibana-url}"
    
      ## 8.0版本,建议使用 {kibana-url}/api/security/saml/callback代替
    
      sp.acs: "{kibana-url}/api/security/v1/saml"
      sp.logout: "{kibana-url}/logout"
      attributes.principal: "nameid"
      attributes.groups: "roles"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    Kibana.yml配置示例如下,更多配置信息请参见Configuring Kibana (opens new window)

    xpack.security.authc.selector.enabled: true
    
    ## 登录帮助地址
    
    xpack.security.loginHelp: "**Help** info with a [link](...)"
    xpack.security.authc.providers:
      basic.basic1:
        order: 0
        icon: "logoElasticsearch"
        hint: "Typically for administrators"
      saml.saml1:
        order: 1
        realm: saml1
        description: "Log in with SSO"
    
        ## logo地址
    
    ​    icon: "https://my-company.xyz/saml-logo.svg"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
  4. 修改完配置后,重启ElasticSearch和Kibana。

# 登录验证

  1. 访问Kibana控制台,单击Log in with SSO。

  2. 跳转至IDaaS认证页面。

  3. 输入用户名密码后,进入Kibana控制台。