全部产品
Search
文档中心

检索分析服务Elasticsearch版:开启ES单点登录认证

更新时间:Jul 03, 2024

阿里云Elasticsearch(简称ES)支持单点登录到Kibana,开启SAML身份验证后,允许您使用符合SAML 2.0 的身份提供者IDP访问阿里云ES和Kibana。本文介绍通过配置安全断言标记语言SAML的身份提供者IDP和服务提供者ES及Kibana,实现单点登录Kibana控制台。

背景信息

在安全断言标记语言SAML中,ES和Kibana作为服务提供者SP(Service Provider),支持SAML 2.0 协议的Web浏览器SSO和SAML 2.0 Single Logout配置 ,使您能够使用任何符合SAML 2.0 的身份提供者IDP( IDentity Provider)访问阿里云ES和Kibana,例如,阿里云应用身份服务IDaaS、联合身份验证服务ADFS(Active Directory Federation Services)等。本文以IDaaS为例进行介绍。

说明
  • 单点登录SSO(Single Sign On):

    指在多个应用系统中,用户只需要登录一次,就可以访问所有相互信任的应用系统。

  • 安全断言标记语言SAML(Security Assertion Markup Language):

    基于XML协议,使用包含断言(Assertion)的安全令牌,在身份提供者IDP和服务提供者SP之间传递身份信息,实现基于网络跨域的单点登录。SAML协议是成熟的认证协议,在公有云和私有云中有非常广泛的运用。

  • 阿里云应用身份服务IDaaS(Alibaba Cloud Identity as a Service):

    阿里云为企业用户提供的一套集中式身份、权限、应用管理服务,IDaaS支持多种产品,例如EIAM、CIAM等。

前提条件

  • 已创建阿里云ES实例,并开启HTTPS访问协议。本文以7.10版本实例为例,其他版本的操作可能存在差异,具体以实际界面为准。

    说明
  • 开通IDaaS服务的EIAM实例。

    说明

    Elastic仅支持SAML身份验证的HTTP-Redirect binding方式,不支持HTTP-POST binding及其他方式,因此只需保证PC端可以访问IDP及SP服务即可。

Kibana公网端口为443

操作步骤

说明

开启SAML身份验证需要重启集群生效,为了减少变更影响,请在业务低峰期操作。

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch实例
  3. 进入目标实例。
    1. 在顶部菜单栏处,选择资源组和地域。
    2. Elasticsearch实例中单击目标实例ID。
  4. 在目标实例的左侧导航栏,选择配置与管理 > 安全配置

  5. 集群访问设置区域,打开SAML身份验证开关。

    说明

    如果当前实例暂未开启HTTPS访问协议,对话框中会提示请先在当前页面集群网络配置中开启HTTPS协议。

  6. 启用SAML身份验证控制面板,配置SAML应用。

    1. 配置SAML应用向导页面,选择访问方式,本文选择公网访问Kibana

    2. 下载IdP元数据。具体操作,请参见配置IDaaS SAML应用

      说明

      单点登录地址ACS URL和应用唯一标识SP Entity ID可在配置SAML应用向导页面复制。

    3. 单击或拖拽上传IdP元数据

    4. 单击下一步

  7. 关联ES自定义角色。

    1. 关联ES自定义角色向导页面,输入ES访问密码。

      • 角色名称:默认es_saml1_default,不支持修改。

      • 操作权限:默认为创建的角色es_saml1_default开启所有权限。如果您需要配置更细粒度的权限,可创建角色后在Kibana中修改角色的权限。具体操作,请参见通过Elasticsearch X-Pack角色管理实现用户权限管控

      • 访问密码:输入ES访问密码,用于校验用户是否具有创建角色的权限。

    2. 单击创建并关联角色

      创建角色,并将角色与SAML进行映射。

    3. 单击下一步

  8. 配置yml参数。

    分类

    项目

    描述

    SAML信息

    身份认证领域

    需要和前面的映射保持一致,默认仅支持配置saml1,不支持修改。

    order

    领域优先级,数值越低,优先级越高。默认为2,不允许用户修改。

    idp.entity_id

    IDP使用的身份标识符。

    sp.entity_id

    Kibana实例唯一标识符,与SAML应用的应用唯一标识SP Entity ID相同。如果将Kibana添加为IDP的服务提供商,需要设置此值。

    sp.acs

    断言消费服务ACS端点,用来接收来自IDP的身份验证信息。与SAML应用的单点登录地址ACS URL相同。

    attributes.principal

    断言信息,例如,nameid:persistent。具体请参见Attribute mapping

    attributes.groups

    断言信息,例如,roles。具体请参见Attribute mapping

    高级设置

    Kibana Basic登录

    默认正常展示Kibana的基础登录入口,您可以选择不展示该入口。

    Kibana SAML登录描述

    填写SAML登录Kibana的描述。

    说明
    • 配置完成后,系统自动生成后端可识别的标准yml格式,并修改当前实例的yml配置。

    • 其他参数如idp.metadata.path为后端管控需要配置的xml路径,自动生成,不支持用户编辑和修改。

  9. 单击完成

    页面上方提示开启Saml身份验证成功,表明已成功配置开启Saml身份验证,实例重启中。

  10. 实例重启完成后,验证Kibana单点登录。

    1. 在左侧导航栏,选择配置与管理 > 可视化控制

    2. Kibana区域,单击公网入口

    3. 选择Log in with Elasticsearch

    4. 输入用户名和密码,单击登录

      您可以看到已成功登录Kibana页面。

    说明
    • 关于登录Kibana的更多信息,请参见登录Kibana控制台

    • 您可以在实例的安全配置页面,查看并修改SAML身份认证的相关配置,如果SAML配置正确但仍存在无法登录的情况,请检查是否正确配置Kibana访问白名单或安全组。具体操作,请参见配置Kibana公网或私网访问白名单

配置IDaaS SAML应用

  1. 登录IDaaS管理平台

  2. 单击目标IDaaS实例ID。

  3. 添加应用。

    1. 在左侧菜单栏,单击应用

    2. 应用页面,单击添加应用

    3. 单击标准协议页签。

    4. SAML 2.0区域,单击添加应用

    5. 输入应用名称,单击立即添加

  4. 登录访问单点登录页签下,完成应用的单点登录配置

    配置如下参数,其他参数保持默认。更多参数信息,请参见IDaaS 侧配置字段说明

    分类

    参数

    说明

    基本配置

    单点登录地址

    ACS URL

    单点登录地址用来接收来自IDP的身份验证信息。您可以在ES控制台的配置SAML应用向导页面,复制单点登录地址ACS URL。

    应用唯一标识

    SP Entity ID

    应用唯一标识是服务提供者SP的访问URL,本文的服务提供者为Kibana。您可以在ES控制台的配置SAML应用向导页面,复制应用唯一标识SP Entity ID。

    授权范围

    选择授权范围。

    如果选择手动授权,需要在登录访问应用授权页签中进行权限分配。

    高级配置

    NameID 格式

    NameIDFormat

    选择2.0 persistent

    配置示例:

    image.png

  5. 应用配置信息区域,单击IdP元数据后的下载

  6. 单击保存,保存添加的应用。

其他操作

您可以在实例的安全配置页面,在集群访问设置区域,查看、修改SAML身份认证配置或关闭SAML身份验证。

项目

操作

查看SAML身份认证配置

单击SAML身份验证后的修改配置,查看SAML身份验证配置信息。

修改SAML身份认证配置

单击SAML身份验证后的修改配置

  • ES配置参数区域右上角单击编辑,重新上传IdP元数据或编辑yml参数。修改该配置会重启集群。

  • ES自定义角色关联:不支持修改关联的角色。允许您在Kibana中调整es_saml1_default角色的权限范围。

  • Kibana配置参数区域右上角单击编辑,修改Kibana登录相关配置,修改该配置会重启Kibana节点。

关闭SAML身份验证

关闭SAML身份验证开关,在弹出的对话框中单击确定,集群重启后即可生效。

说明

确认关闭SAML身份验证后,当前SAML身份认证相关的配置将被清除。

Kibana公网端口为5601

步骤一:配置IDaaS SAML应用

  1. 登录IDaaS管理平台

  2. 单击目标IDaaS实例ID。

  3. 添加应用。

    1. 在左侧菜单栏,单击应用

    2. 应用页面,单击添加应用

    3. 单击标准协议页签。

    4. SAML 2.0区域,单击添加应用

    5. 输入应用名称,单击立即添加

  4. 登录访问单点登录页签下,完成应用的单点登录配置

    配置如下参数,选择授权范围,其他参数保持默认。更多参数信息,请参见IDaaS 侧配置字段说明

    分类

    参数

    说明

    基本配置

    单点登录地址

    ACS URL

    用来接收来自IDP的身份验证信息,此ACS端点仅支持SAML HTTP-POST绑定,通常配置为:${kibana-url}:5601/api/security/v1/saml

    应用唯一标识

    SP Entity ID

    服务提供者SP的访问URL。本文的服务提供者为Kibana,应用唯一标识需要配置为${kibana-url}:5601

    授权范围

    选择授权范围。如果选择手动授权,需要在登录访问应用授权页签中进行权限分配。

    高级配置

    NameID 格式

    NameIDFormat

    选择2.0 persistent

    说明

    配置示例:

    image.png

  5. 应用配置信息区域,单击IdP元数据后的下载

    下载的文件即为IDaaS SAML元配置文件,以备后用。

步骤二:创建自定义角色并配置elastic SAML

  1. 在目标实例中登录Kibana控制台。具体操作,请参见登录Kibana控制台

  2. 创建一个角色。具体操作,请参见通过Elasticsearch X-Pack角色管理实现用户权限管控

  3. 将角色与SAML进行映射。

    <admin_role>需要替换为上一步创建的角色名称。

    PUT /_security/role_mapping/idaas-test
    {
      "roles": "<admin_role>" ,
      "enabled": true,
      "rules": {
        "field": { "realm.name": "saml1" }
      }
    }
  4. 制作Elasticsearch和Kibana的YML配置文件,在配置文件中添加SAML信息。

    说明

    YML参数信息需要与配置IDaaS SAML应用中配置的SAML信息保持一致。

    • elasticsearch.yml配置文件内容

      #elasticsearch.yml配置
      
      xpack.security.authc.token.enabled: 'true'
      xpack.security.authc.realms.saml.saml1:
        order: 2
        idp.metadata.path: saml/metadata.xml
        idp.entity_id: "https://es-cn-n6xxxxxx1d.elasticsearch.aliyuncs.com/"
        sp.entity_id: "https://es-cn-n6xxxxxx1d.kibana.elasticsearch.aliyuncs.com:5601/"
        sp.acs: "https://es-cn-n6xxxxxx1d.kibana.elasticsearch.aliyuncs.com:5601/api/security/v1/saml"
        attributes.principal: "nameid:persistent"
        attributes.groups: "roles"

      参数

      说明

      xpack.security.authc.token.enabled

      是否开启Token服务。需要设置为true,才可配置SAML单点登录,详细信息请参见saml-enable-token

      xpack.security.authc.realms.saml.saml1

      定义的身份认证领域,本文示例为saml1。领域的详细信息请参见Realms

      order

      领域优先级,数值越低,优先级越高。

      说明

      8.x版本要求order数值唯一性,建议使用2。

      idp.metadata.path

      IDP元数据文件路径。

      idp.entity_id

      IDP使用的身份标识符,和元数据文件中的EntityID相匹配。

      sp.entity_id

      Kibana实例唯一标识符,与SAML应用的应用唯一标识SP Entity ID相同。如果将Kibana添加为IDP的服务提供商,需要设置此值,推荐配置为Kibana的URL。

      重要

      请确保参数值与业务环境保持一致。如果您配置了反向代理访问Kibana,而不是直接通过URL访问,需要将该参数配置为反向代理的地址和端口。

      sp.acs

      断言消费服务ACS端点,与SAML应用的单点登录地址ACS URL相同。用来接收来自IDP的身份验证信息,此ACS端点仅支持SAML HTTP-POST绑定,通常配置为${kibana-url}:5601/api/security/v1/saml

      说明

      ${kibana-url}为Kibana公网地址。

      attributes.principal

      断言信息,具体请参见Attribute mapping

      attributes.groups

      断言信息,具体请参见Attribute mapping

    • kibana.yml配置文件内容

      # kibana配置
      
      xpack.security.authc.providers:
        saml.saml1:
          order: 0
          realm: "saml1"
        basic.basic1:
          order: 1
          icon: "logoElasticsearch"
          hint: "Typically for administrators"

      参数

      说明

      xpack.security.authc.providers

      添加SAML提供程序,以设置Kibana使用SAML SSO作为身份验证方法。

      xpack.security.authc.providers.saml.<provider-name>.realm

      设置SAML领域名称。请将<provider-name>替换为elasticsearch.yml中配置的领域名称。本文示例为saml1。

      xpack.security.authc.providers.basic.basic1

      Kibana配置SAML后,仅支持符合SAML身份验证的用户登录Kibana。为了便于在Kibana登录页面支持basic身份登录(尤其在测试环节,可能需要使用elastic用户名和密码登录集群,创建角色及角色映射),可指定basic.basic1部分配置。指定后,Kibana登录页面会添加基本身份登录入口,详细信息请参见Authentication in kibana

      说明

      如果用户不需要使用basic身份登录Kibana控制台,可在kibana.yml中不设置basic身份登录。

步骤三:提交文件

提交工单,将以下文件提交给阿里云Elasticsearch技术支持人员。

  • IDaaS SAML元配置文件。技术人员会将SAML元配置文件上传至elasticsearch的config/saml路径下。

  • elasticsearch.yml配置文件。技术人员会按照您提交的文件内容,在后端更新您集群的yml文件。

  • kibana.yml配置文件。技术人员会按照您提交的文件内容,在后端更新您集群的yml文件。

步骤四:验证Kibana单点登录

待技术人员配置完成后,验证Kibana单点登录。

  1. 进入Kibana控制台登录页面,单击Log in with saml/saml1

    具体操作,请参见登录Kibana控制台

  2. 输入IDaaS关联的账号,单击提交

    您可以看到已成功登录Kibana页面。