使用 OpenLDAP 进行身份验证¶
本文介绍如何将 NebulaGraph 连接到 OpenLDAP 服务器,使用 OpenLDAP 中定义的 DN(Distinguished Name)和密码进行身份验证。
Enterpriseonly
仅企业版支持本功能。
认证方式¶
启用 OpenLDAP 身份验证后,输入用户的账号和密码登录 NebulaGraph 时,NebulaGraph 会在 Meta 服务中查找登录账号是否存在,如果账号存在,再根据认证方式去 OpenLDAP 中找到对应的 DN,验证密码。
OpenLDAP 支持的认证方式有两种:简单绑定认证和搜索绑定认证。
简单绑定认证(SimpleBindAuth)¶
简单绑定认证会根据登录账号和 Graph 服务配置信息,拼接成 OpenLDAP 可以识别的 DN,然后根据 DN 和密码,在 OpenLDAP 上进行验证。
搜索绑定认证(SearchBindAuth)¶
搜索绑定认证会读取 Graph 服务配置信息,查询配置信息中的uid
和登录账号是否匹配,如果匹配,就读取这个 DN,然后用 DN 和密码,在 OpenLDAP 上进行验证。
Caution
NebulaGraph 仅支持使用 OpenLDAP 中的uid
属性指定用户名进行搜索绑定认证。
前提条件¶
- 已安装 OpenLDAP。
- 已在 OpenLDAP 上导入用户的账号和密码信息。
- OpenLDAP 所在服务器已开放相应认证端口。
操作步骤¶
以 OpenLDAP 上已存在的账号test2
、密码passwdtest2
为例进行演示。
-
连接 NebulaGraph,创建与 OpenLDAP 中对应的影子账号
test2
并授权。nebula> CREATE USER test2 WITH PASSWORD ''; nebula> GRANT ROLE ADMIN ON basketballplayer TO test2;
Note
NebulaGraph 内创建用户时,密码可以任意设置。
-
编辑配置文件
nebula-graphd.conf
(默认目录为/usr/local/nebula/etc/
):-
简单绑定认证(推荐)
# 是否从配置文件获取配置信息。 --local_config=true # 是否开启身份验证 --enable_authorize=true # 身份验证方式:password、ldap、cloud --auth_type=ldap # OpenLDAP 服务器地址 --ldap_server=192.168.8.211 # OpenLDAP 服务器端口 --ldap_port=389 # OpenLDAP 中的 Schema 名称 --ldap_scheme=ldap # DN 前缀 --ldap_prefix=uid= # DN 后缀 --ldap_suffix=,ou=it,dc=sys,dc=com
-
搜索绑定认证
# 是否从配置文件获取配置信息。 --local_config=true # 是否开启身份验证 --enable_authorize=true # 身份验证方式:password、ldap、cloud --auth_type=ldap # OpenLDAP 服务器地址 --ldap_server=192.168.8.211 # OpenLDAP 服务器端口 --ldap_port=389 # OpenLDAP 中的 Schema 名称 --ldap_scheme=ldap # 绑定目标对象的 DN --ldap_basedn=ou=it,dc=sys,dc=com # OpenLDAP 服务器登录用户名。支持匿名访问时,该项为选填,否则为必填。 --ldap_binddn=cn=admin,dc=example,dc=org # OpenLDAP 服务器登录密码。支持匿名访问时,该项为选填,否则为必填。 --ldap_bindpasswd=admin
-
-
重启 NebulaGraph 服务,让新配置生效。
-
进行登录测试。
$ ./nebula-console --addr 127.0.0.1 --port 9669 -u test2 -p passwdtest2 2021/09/08 03:49:39 [INFO] connection pool is initialized successfully Welcome to NebulaGraph!
Note
使用 OpenLDAP 进行身份验证后,无法使用 NebulaGraph 内置账号密码(包括
root
)登录。