跳转至

使用 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 上已存在的账号test2、密码passwdtest2为例进行演示。

  1. 连接 NebulaGraph,创建与 OpenLDAP 中对应的影子账号test2并授权。

    nebula> CREATE USER test2 WITH PASSWORD '';
    nebula> GRANT ROLE ADMIN ON basketballplayer TO test2;
    

    Note

    NebulaGraph 内创建用户时,密码可以任意设置。

  2. 编辑配置文件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
      
  3. 重启 NebulaGraph 服务,让新配置生效。

  4. 进行登录测试。

    $ ./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)登录。


最后更新: January 17, 2023