通过 SAML 身份验证,您可以将 Elasticsearch 和 OpenSearch 实例接入企业身份认证体系,实现用户通过单点登录访问。本文介绍如何配置 SAML 身份验证实现单点登录。
单点登录(Single Sign-On,SSO)是一种统一身份认证机制,允许用户通过一次身份验证即可访问多个相互信任的应用系统,无需重复登录。SAML(Security Assertion Markup Language)2.0 是一种基于 XML 的开放标准,广泛应用于企业级单点登录场景,通过身份提供商(Identity Provider,IdP)与服务提供商(Service Provider,SP)之间交换身份认证信息,实现用户身份的安全认证和授权。
在 Elasticsearch 和 OpenSearch 实例中启用 SAML 身份验证后,Elasticsearch 和 OpenSearch 实例作为服务提供商(SP),将用户身份认证委托给身份提供商(IdP)。用户完成身份认证后,IdP 会向 Elasticsearch 和 OpenSearch 实例返回包含用户身份和角色信息的 SAML 断言(Assertion),Elasticsearch 和 OpenSearch 实例根据断言完成用户登录和权限控制,从而实现基于 SAML 2.0 的单点登录。
已创建 Elasticsearch 或 OpenSearch 实例。具体操作,请参见创建实例。 - 仅 OpenSearch 2.9、3.3 和 Elasticsearch 7 实例支持 SAML 身份验证。
- 开启、编辑或关闭 SAML 身份验证将使实例重启,建议在业务低峰期操作。
- 在左侧导航栏选择基本信息,然后在访问认证区域的 SAML 身份验证右侧单击开启免密登录。
- 在启用 SAML 身份验证面板,配置以下参数,然后单击确定。
说明
配置后各节点将逐个重启,实例进入更新中状态,请耐心等待。当实例恢复运行中状态时,SAML 身份验证开启成功。
开启 SAML 身份验证后,用户通过 SAML 协议访问 Elasticsearch 或 OpenSearch 实例时,身份信息和角色信息由 IdP 返回。subject_key 和 roles_key 用于约定 IdP 返回的用户身份字段和角色字段。例如,IdP 返回如下信息:
"subject_key": "xxx@volcengine.com",
其中,subject_key 表示登录用户名,roles_key 表示用户所属角色。实例将根据返回的角色信息为用户授予相应权限。
请确保 IdP 返回的角色已在实例中创建,并已配置相应权限,否则用户登录后可能无法正常访问相关资源。以下示例演示如何通过 Dev Tools 创建一个对 logs-* 索引只读的角色:
PUT _opendistro/_security/api/roles/my_role
"cluster_permissions": [],
"index_patterns": ["logs-*"],
"allowed_actions": ["read"]
"tenant_permissions": []
PUT _opendistro/_security/api/rolesmapping/my_role
"backend_roles": ["my_role"]
说明
以上示例创建的为只读角色。如需更多权限,可通过调用 API 创建。具体操作,请参见 API 参考。 开启 SAML 身份验证后,您还可以根据需要修改 SAML 身份验证配置。
- 在左侧导航栏选择基本信息,然后在访问认证区域的 SAML 身份验证右侧单击编辑。
- 在编辑 SAML 身份验证面板,根据需要修改 IdP 信息,然后单击确定。具体参数说明,请参见开启 SAML 身份验证。
当您不再需要通过 SAML 身份验证实现单点登录,可关闭SAML 身份验证。
- 在左侧导航栏选择基本信息,然后在访问认证区域的 SAML 身份验证右侧单击关闭。