通过LDAP接入OpenSearch集群
LDAP(Light Directory Access Portocol)是基于X.500标准的轻量级目录访问协议。基于LDAP协议的LDAP服务可以提供用户身份验证的能力。CSS服务通过使用Open Distro的Security插件,在集群中加入Active Directory作为身份验证后端,使集群无缝接入到LDAP服务中。本文会讲解CSS集群接入LDAP认证的基本方式,并会讲解基本原理。
本文介绍如何在CSS服务的OpenSearch集群中配置轻量目录访问协议LDAP认证,以实现相应角色的LDAP用户接入OpenSearch集群。
准备工作
- 已经在CSS服务上准备好一个OpenSearch安全模式的集群,且集群处于可用状态。
- 已准备好和OpenSearch集群在同VPC下的LDAP服务和用户数据。具体操作请参见OpenLDAP官方文档。
接入集群
- 在弹性云服务器ECS上安装LDAP服务,如果已提前准备好LDAP服务和用户数据,则可以跳过该步骤。
- 创建ECS。ECS需要选择Windows系统,且和CSS服务的安全集群在同一个虚拟私有云和安全组中。ECS的Windows Server自带支持LDAP协议的Active Directory服务。
具体操作请参见快速购买和使用Windows ECS。
- 登录ECS开启Active Directory服务,新建域、管理员、用户和用户组。
图1 Active Directory服务目录1图2 Active Directory服务目录2
- “test.ldap.com”:新建域的示例名称。
- “adminAD”:管理员用户
- “ITDepartment”: LDAP用户目录
- “groups”: 每一个用户对应一个权限组。
- 创建ECS。ECS需要选择Windows系统,且和CSS服务的安全集群在同一个虚拟私有云和安全组中。ECS的Windows Server自带支持LDAP协议的Active Directory服务。
- 在CSS服务上修改OpenSearch安全集群的参数配置,在“opensearch.yml”中配置静态参数后才可以连接LDAP服务。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,单击目标集群名称,进入集群详情页。
- 选择“集群配置 > 参数配置”,单击“编辑”,在“自定义”模块添加如下参数配置。
- 参数名称:plugins.security.unsupported.restapi.allow_securityconfig_modification
- 参数值:true
- 添加完成后,单击上方的“提交”弹出“提交配置”窗口,确认参数无误后勾选“参数修改后需要手动重启才能生效”,单击“确定”。
当下方的参数修改列表显示“作业状态”为“成功”时,表示修改保存成功。系统最多显示20条修改记录。
- 参数修改保存成功后,单击页面右上方的“重启”重启集群,使修改的配置生效。
图3 重启集群
- 如果修改了参数配置,未重启集群,则在集群列表的“任务状态”栏显示为“配置未更新”。
- 如果修改后重启集群,集群列表的“任务状态”显示“配置错误”,则表示修改参数配置文件失败。
- 在CSS服务上配置OpenSearch集群的集群路由,确保集群可以正常访问LDAP服务。
- 在集群详情页,选择“概览”页签。
- 在“配置信息”下方,单击“集群路由”后面的“添加路由”。
- 在“添加路由”弹窗中,配置路由信息。
表1 添加路由 参数
说明
ip地址
填写LDAP服务器的子网。如果使用的是ECS上的LDAP服务,则此处直接填写ECS的子网。
子网掩码
填写LDAP服务器的子网掩码。如果使用的是ECS上的LDAP服务,则此处直接填写ECS的子网掩码。
- 单击“确定”添加路由。
- 在OpenSearch安全集群中配置LDAP认证。
- 在集群详情页,单击页面右上方的“Dashboards”,登录OpenSearch Dashboards。
- 在左侧导航栏选择“Dev Tools”,进入操作页面。
- 执行如下命令,配置LDAP认证。
- X.500目录协议(包含LDAP)的相关定义:
- CN = Common Name
- OU = Organizational Unit
- DC = Domain Component
- DN = Distinguished Name
其中,CN、OU、DC必须按顺序一一对应,否则无法认证。
- 配置文件主要分为两个部分“authc”和“authz”。
- authc(authentication,认证):主要作用是验证用户是否是其宣称的人(验证密码)。
- authz(authorization,授权):主要作用是判断当前用户是否具有相应权限。
PUT _plugins/_security/api/securityconfig/config { "dynamic": { "authc": { "basic_internal_auth_domain": { "description": "Authenticate via HTTP Basic against internal users database", "http_enabled": true, "transport_enabled": true, "order": 1, "http_authenticator": { "type": "basic", "challenge": true }, "authentication_backend": { "type": "intern" } }, "ldap": { "description": "Authenticate via LDAP or Active Directory", "http_enabled": true, "transport_enabled": true, "order": 2, "http_authenticator": { "type": "basic", "challenge": false }, "authentication_backend": { "type": "ldap", "config": { "enable_ssl": false, "enable_start_tls": false, "enable_ssl_client_auth": false, "verify_hostnames": true, "hosts": ["10.0.XXX.XXX:389"], "bind_dn": "CN=adminAD,DC=test,DC=ldap,DC=com", "password": "<password>", "userbase": "OU=ITDepartment,DC=test,DC=ldap,DC=com", "usersearch": "(sAMAccountName={0})", "username_attribute": "uid" } } } }, "authz": { "roles_from_myldap": { "description": "Authorize via LDAP or Active Directory", "http_enabled": true, "transport_enabled": true, "authorization_backend": { "type": "ldap", "config": { "enable_ssl": false, "enable_start_tls": false, "enable_ssl_client_auth": false, "verify_hostnames": true, "hosts": ["10.0.XXX.XXX:389"], "bind_dn": "CN=adminAD,DC=test,DC=ldap,DC=com", "password": "<password>", "rolebase": "OU=groups,DC=test,DC=ldap,DC=com", "rolesearch": "(member={0})", "userroleattribute": null, "userrolename": "disabled", "rolename": "CN", "resolve_nested_roles": true, "userbase": "OU=ITDepartment,DC=test,DC=ldap,DC=com", "usersearch": "(uid={0})" } } } } } }
其中,表表2中的参数需要基于实际环境修改。
- X.500目录协议(包含LDAP)的相关定义:
- 在OpenSearch安全集群中配置LDAP用户权限和OpenSearch权限的映射,实现集群用户的细粒度权限。
LDAP服务器的rolebase权限组需要和OpenSearch集群中的role相对应,映射关系如图4所示。详细的配置指导请参见创建OpenSearch集群用户并授权使用。
- 在OpenSearch Dashboards页面,选择左侧导航栏的“Security”,进入Security页面。
- 选择“Roles”,进入Open Distro Security Roles页面。单击“Create Role”,配置Name、Cluster Permissions、 Index permissions和Tenant permissions。单击“Save Role Definition”,保存角色设置。
- Name:Role的名字
- Cluster Permissions:集群权限
- Index permissions:索引权限
- Tenant permissions:租户权限
- 单击新建的Role,选择“Mapped users”,在“Backend roles”中输入LDAP服务中的group权限组,单击“Map”完成权限映射。
- 查看配置结果。
图5 权限映射
- 重复5.b-5.d完成其他权限组的映射。
- 使用LDAP用户登录OpenSearch Dashboards,验证结果。
- 登录云搜索服务管理控制台。
- 在左侧导航栏,选择“集群管理 > OpenSearch”。
- 在集群列表,选择目标集群,单击操作列“Dashboards”,使用LDAP用户登录OpenSearch Dashboards页面。
登录成功,表示配置成功,用户可以通过LDAP接入集群,集群的具体操作权限受OpenSearch的角色权限控制。