本文档所描述的内容属于神策产品的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询神策值班同学获取一对一的协助。
神策分析从 1.13 版本开始集成了 LDAP 登录认证,大致登录流程如下:
- 用户在神策系统中正常使用用户名和密码进行登录。
- 神策系统会使用用户填写的用户名和密码去后台配置的 LDAP 系统当中进行登录认证,登录成功之后用户就可以正常使用神策系统。
- 在 LDAP 系统中新建用户需要在神策登录之后,神策系统才会自动创建对应的用户。
admin 帐号不受 LDAP 控制
当配置了 ldap_type 配置项,表示开启了 LDAP,此后除了 admin 之外的帐号密码体系,都只通过 LDAP 进行验证。故如配置不成功,需要进行快速恢复,将 ldap_type 配置项进行删除即可。
配置项说明
参数 | 范例 | 是否必填 | 参数说明 |
---|---|---|---|
ldap_type | OpenLDAP、AdLDAP | 是 | 支持的 LDAP 类型 |
ldap_url | ldap://10.XXX.XXX.XXX:389/ | 是 | LDAP 服务的地址 |
ldap_account_pattern | sAMAccountName=${username} | 是 | 搜寻 LDAP 帐号的条件, 范例的含意是,搜寻属性 sAMAccountName 为 某帐号 的数据。通常 AdLDAP 为 sAMAccountName=${username} OpenLDAP 为 uid=${username} |
ldap_base_dn | ou=Members,DC=sensorsdata,DC=cn | 是 | LDAP Base DN,进行LDAP 用户名检索的 Base Dn。 DC 为 域名,范例的含意则表示域名为 sensorsdata.cn。 OU 为 组织结构,LDAP 的结构为 DN → RDN → CN → OU → O → DC。 |
bind_ldap_admin | true、false | 否 | 是否通过下面的 ldap_bind_user、ldap_bind_password 去登入 LDAP 系统,默认为 false。 一般在 LDAP 禁止了匿名访问的时候需要设置为 true 并配置 bind_ldap_admin、ldap_bind_password。 如果为 false 则用在神策登录页面的 帐号、密码 直接去登录 LDAP 系统。 |
ldap_bind_user | sensorsAD | 否 | 当 LDAP 配置了禁止匿名访问的时候需要绑定的管理员账号,等同于 Bind DN。 |
ldap_bind_password | ********** | 否 | 当 LDAP 配置了禁止匿名访问的时候需要绑定的管理员密码。 |
ldap_search_filter | 否 | 在 LDAP 中查找用户时是否按照指定的 filter 进行筛选 | |
ldap_email_suffix | @sensorsdata.cn | 否 | 登录后的用户名添加邮箱后缀。 主要使用场景是接入 LDAP 之前已经使用了邮箱格式的用户名,接入 LDAP 之后使用的是不需要邮箱后缀的用户名,但仍然希望登录后和之前保持是同一个账号。 |
ldap_default_project | production | 否 | LDAP 默认登录的项目,不设置默认为测试项目 |
配置方式
修改单个配置
在 sa_cluster 账户下执行下列 shell 命令修改单个配置项:
sbpadmin business_config set -p sbp -k 参数名 -v 参数值
删除单个配置
在 sa_cluster 账户下执行下列 shell 命令删除单个配置项。如果需要关闭 LDAP 的话,需要通过删除单个配置的方式实现。上方表格里所有参数都需要执行。
注:不支持删除配置项,只能将配置项设置为空字符串
sbpadmin business_config set -p sbp -k 参数名 -v
查看当前所有配置项
sbpadmin business_config getall -p sbp
一个完整的配置示例
sbpadmin business_config set -p sbp -k ldap_type -v 'AdLDAP'
sbpadmin business_config set -p sbp -k ldap_url -v 'ldap://10.XXX.XXX.XXX:389/'
sbpadmin business_config set -p sbp -k ldap_account_pattern -v 'sAMAccountName=${username}'
sbpadmin business_config set -p sbp -k ldap_base_dn -v 'ou=Members,DC=sensorsdata-inc,DC=cn'
sbpadmin business_config set -p sbp -k bind_ldap_admin -v true
sbpadmin business_config set -p sbp -k ldap_bind_user -v 'sensorsAD'
sbpadmin business_config set -p sbp -k ldap_bind_password -v '**********'
sbpadmin business_config set -p sbp -k ldap_search_filter -v 'memberOf=cn=xxx,ou=people,dc=example,dc=com'
sbpadmin business_config set -p sbp -k ldap_email_suffix -v '@email.com'
配置验证方式
安装 ldapsearch
# 在 root 用户下执行
yum install openldap-clients
查看配置
sbpadmin business_config getall -p sbp
通过 ldapsearch 验证配置内容
# 格式:ldapsearch -p ${port} -h ${ip} -D '${ldap_bind_user}' -w '${ldap_bind_password}' -b '${ldap_base_dn}'
ldapsearch -p 389 -h 10.XXX.XXX.XXX -D 'sensorsAD' -w '**********' -b 'ou=Members,DC=sensorsdata,DC=cn'
确定能正常返回数据
IP 或 端口 错误,返回 Can't contact LDAP server (-1)
帐号密码错误,返回 Invalid credentials (49)
ldap_base_dn 的 DC 错误,返回 DSID-031007F9
ldap_base_dn 的 ou 错误,返回 DSID-03100241
确定帐号搜寻条件一致
# 格式:ldapsearch -p ${port} -h ${ip} -D '${ldap_bind_user}' -w '${ldap_bind_password}' -b '${ldap_base_dn}' -x '${ldap_account_pattern}'
ldapsearch -p 389 -h 10.XXX.XXX.XXX -D 'sensorsAD' -w '**********' -b 'ou=Members,DC=sensorsdata,DC=cn' -x 'sAMAccountName=myUsername'
过滤条件错误,将搜寻不到数据
使用神策命令进行登录验证
# 此命令适用于 SBP 0.6+ 版本
sbpadmin debug ldap -u '用户名' -p '密码'
重启 Web
测试成功后,重启 web 生效:
spadmin restart -m web -p sbp
同步LDAP域中的用户信息到神策(SBP >= 1.1.0)
SBP >= 1.1.0 时:支持客户在登录时获取ldap域中的信息同步到神策系统
查看ldap域中的客户属性
# 此命令适用于 SBP 1.1.0+ 版本
sbpadmin debug ldap -u '用户名' -p '密码' -d
根据ldap域中的客户属性配置映射信息
在登录时将ldap域中的用户信息同步到神策系统,目前支持的信息有:用户姓名,手机号,邮箱。
SBP >= 1.4.0:额外支持账户信息(username字段)。场景:期望将ldap登录账号的属性与神策已有账号关联,可通过此配置完成。
# 以k-v的形式配置,其中userCname、phone、email、username分别对应用户姓名、手机号、邮箱、账号名,不可修改。user_cname_field,phone_field,email_field为ldap域中的客户属性字段。本例表示通过ldap登陆创建出来的神策账号使用ldap属性中的邮箱当作账号名。
sbpadmin business_config set -p sbp -k ldap_user_mapping_map -v "{\"userCname\":\"user_cname_field\",\"phone\":\"phone_field\",\"email\":\"email_field\",\"username\":\"email_field\"}"
说明:以k-v的形式配置,其中userCname、phone、email、分别对应用户姓名,手机号和邮箱,不可修改。user_cname_field,phone_field,email_field为ldap域中的客户属性字段。