使用 LDAP 进行身份验证#

默认情况下,Anaconda Enterprise Notebooks 对 AEN 数据库中的帐户执行本地身份验证。

要将 AEN 配置为针对 LDAP(轻型目录访问协议)服务器中的帐户进行身份验证,请按照以下说明进行操作。

安装 OpenLDAP 库#

系统需要安装 OpenLDAP 库,并可供 AEN 访问。AEN 使用 OpenLDAP 库来建立与 LDAP 服务器的 LDAP 连接。

在 CentOS 或 Redhat 上安装 OpenLDAP

sudo yum install openldap

要在 Ubuntu 或 Debian 上安装 OpenLDAP,请按照官方OpenLDAP 安装说明进行操作。

配置 OpenLDAP#

  1. 打开 /opt/wakari/wakari-server/etc/wakari/wk-server-config.json 文件。

  2. 添加以下 LDAP 设置

    {
        "accounts":"wk_server.plugins.accounts.ldap2",
        "LDAP" : {
            "URI": "ldap://openldap.EXAMPLE.COM",
            "BIND_DN": "cn=Bob Jones,ou=Users,DC=EXAMPLE,DC=COM",
            "BIND_AUTH": "secretpass",
            "USER_SEARCH": {"base": "DC=EXAMPLE,DC=COM",
                            "filter": "(| (& (ou=Payroll)
                                             (uid=%(username)s))
                                          (& (ou=Facilities)
                                             (uid=%(username)s)))"
                            },
            "KEY_MAP": {"email": "mail",
                        "name": "cn"
            }
        }
    }
    
    • URI—OpenLDAP 服务器的 IP 地址或主机名。对于 SSL/TLS,请使用 ldaps:// 前缀,并指定 TLS_CACERT,如以下 SSL/TLS 配置部分所述。

    • BIND_DN—您希望 AEN 服务器绑定为用户的完整目录路径。

    • BIND_AUTH—BIND_DN 用户的密码。

    • USER_SEARCH

      • base—您希望开始搜索的级别。

      • filter—默认情况下,搜索 sAMAccountName 属性,并将其值用于 AEN 服务器用户名字段。

    • KEY_MAP—将 AEN 服务器中的用户属性映射到 LDAP 用户属性。

      示例:LDAP 中的 mail 属性映射到 AEN 服务器中的 email 属性。

  3. 重启 AEN 服务器以加载新设置。

  4. 使用管理员帐户登录。这将在本地数据库中创建管理员用户。

  5. 安装 LDAP 后,LDAP 身份验证将接管,因此您需要再次添加管理员帐户

/opt/wakari/wakari-server/bin/wk-server-admin superuser --add "jsmith"

配置 Active Directory#

Microsoft Active Directory 是一个服务器程序,提供目录服务并使用开放行业标准轻型目录访问协议 (LDAP)。

要启用 Active Directory 支持

  1. 打开 /opt/wakari/wakari-server/etc/wakari/wk-server-config.json 文件。

  2. 添加以下 LDAP 设置

    {
        "accounts":"wk_server.plugins.accounts.ldap2",
        "LDAP" : {
            "URI": "ldap://<ad.EXAMPLE.COM>",
            "BIND_DN": "CN=Bind User,CN=Users,DC=EXAMPLE,DC=COM",
            "BIND_AUTH": "secretpass",
            "USER_SEARCH": {"base": "CN=Users,DC=EXAMPLE,DC=COM",
                            "filter": "sAMAccountName=%(username)s"
            },
            "KEY_MAP": {"email": "mail",
                        "name": "cn"
            }
        }
    }
    
    • URI—Active Directory 服务器的 IP 地址或主机名。将 <ad.EXAMPLE.COM> 替换为实际 URI。对于 SSL/TLS,请使用 ldaps:// 前缀,并指定 TLS_CACERT,如以下 SSL/TLS 配置部分所述。

    • BIND_DN—您希望 AEN 服务器绑定为用户的完整目录路径。

    • BIND_AUTH—BIND_DN 用户的密码。

    • USER_SEARCH

      • base—您希望开始搜索的级别。

      • filter—默认情况下,搜索 sAMAccountName 属性,并将其值用于 AEN 服务器 username 字段。

    • KEY_MAP—将 AEN 服务器中的用户属性映射到 LDAP 用户属性。

      示例:LDAP 中的 mail 属性映射到 AEN 服务器中的 email 属性。

  3. 重启 AEN 服务器以加载新设置。

  4. 使用管理员帐户登录。这将在本地数据库中创建管理员用户。

  5. 安装 LDAP 后,LDAP 身份验证将接管,因此您需要再次添加管理员帐户

/opt/wakari/wakari-server/bin/wk-server-admin superuser --add "jsmith"

配置 SSL/TLS#

AEN 使用系统范围的 LDAP 设置,包括 SSL/TLS 支持。

  • 在 Redhat/CentOS 系统上,这些设置位于 /etc/openldap/ldap.conf 文件中。

  • 在 Ubuntu/Debian 系统上,这些设置位于 /etc/ldap/ldap.conf 文件中。

通常,唯一必要的配置是更新文件以读取

TLS_CACERT /path/to/CA.cert

注意:CA.cert 是用于签署 LDAP 服务器 SSL 证书的证书颁发机构。在自签名 SSL 证书的情况下,这是 SSL 证书本身的路径。

测试 LDAP 配置#

使用 flask-ldap-login-check 测试 LDAP 配置

/opt/wakari/wakari-server/bin/flask-ldap-login-check \
    wk_server.wsgi:app \
    -u [username] \
    -p [password]

注意:username 是有效用户的用户名,password 是该用户的 BIND_AUTH 密码。