本页不适用于 ClickHouse Cloud。本文档介绍的功能不适用于 ClickHouse Cloud 服务。
更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。
- 将 LDAP 用作现有用户的外部身份验证器,这些用户定义在
users.xml或本地访问控制配置中。 - 将 LDAP 用作外部用户目录,允许本地未定义但存在于 LDAP 服务器上的用户通过身份验证。
LDAP 服务器定义
config.xml 中添加 ldap_servers 配置节。
示例
ldap_servers 部分中使用不同的名称来定义多个 LDAP 服务器。
参数
user_dn_detection 子参数
本节包含用于检测已绑定用户实际用户 DN 的 LDAP 搜索参数。该功能主要用于服务器为 Active Directory 时,在后续角色映射中构造搜索过滤器。得到的用户 DN 将用于替换所有允许使用 {user_dn} 子串的位置。默认情况下,用户 DN 等同于绑定 DN;但一旦执行搜索,就会更新为实际检测到的用户 DN 值。
LDAP 外部身份验证器
users.xml 或本地访问控制配置中定义的用户) 密码的一种方式。为此,请在用户定义中指定之前定义的 LDAP 服务器名称,而不要使用 password 或类似的部分。
每次尝试登录时,ClickHouse 都会使用提供的凭据,尝试以 LDAP 服务器定义 中 bind_dn 参数定义的指定 DN 进行“绑定”;如果成功,则该用户会被视为已通过身份验证。这通常称为“简单绑定”方法。
示例
my_user 对应的是 my_ldap_server。必须按照前文所述,在主 config.xml 文件中配置此 LDAP 服务器。
启用由 SQL 驱动的访问控制与账户管理后,经 LDAP 服务器认证的用户也可以使用 CREATE USER 语句创建。
Query
LDAP 外部用户目录
config.xml 文件的 users_directories 部分中的 ldap 小节里,指定此前定义好的 LDAP 服务器名称 (参见 LDAP 服务器定义) 。
每次尝试登录时,ClickHouse 都会先在本地查找用户定义,并照常进行身份验证。如果未定义该用户,ClickHouse 会假定该定义存在于外部 LDAP 目录中,并尝试使用提供的凭据在 LDAP 服务器上对指定的 DN 执行“绑定”操作。如果成功,则该用户会被视为存在且已通过身份验证。系统会为该用户分配 roles 小节中指定的角色列表。此外,如果还配置了 role_mapping 小节,则还可以执行 LDAP“搜索”,并将结果转换为角色名后分配给该用户。所有这些都意味着,已启用由 SQL 驱动的访问控制与账户管理,并且角色是通过 CREATE ROLE 语句创建的。
示例
放入 config.xml。
user_directories 部分中 ldap 小节里引用的 my_ldap_server,必须是此前已定义并在 config.xml 中配置的 LDAP 服务器 (请参见 LDAP 服务器定义) 。
参数
role_mapping 子参数
此部分包含 LDAP 搜索参数和映射规则。用户进行身份验证时,在仍与 LDAP 保持绑定的状态下,会使用 search_filter 和登录用户名执行一次 LDAP 搜索。对于该搜索找到的每个条目,都会提取指定属性的值。对于每个带有指定前缀的属性值,都会移除该前缀,剩余部分将作为 ClickHouse 中本地角色的名称;该角色应事先通过 CREATE ROLE 语句创建。在同一个 ldap 部分中,可以定义多个 role_mapping 部分。它们都会被应用。