跳到主要内容
跳到主要内容

配置 ClickHouse 使用 LDAP 进行身份验证和角色映射

Not supported in ClickHouse Cloud
备注

此页面不适用于 ClickHouse Cloud。本页所述的功能在 ClickHouse Cloud 服务中不可用。 有关更多信息,请参阅 ClickHouse 的 Cloud Compatibility 指南。

ClickHouse 可以配置为使用 LDAP 来验证 ClickHouse 数据库用户。本文提供了一个简单示例,演示如何将 ClickHouse 与一个公共目录中的 LDAP 系统集成进行身份验证。

1. 在 ClickHouse 中配置 LDAP 连接设置

  1. 测试您与此公共 LDAP 服务器的连接:

返回的内容类似于:

  1. 编辑 config.xml 文件,添加以下内容以配置 LDAP:
备注

<test_ldap_server> 标签是用于识别特定 LDAP 服务器的任意标签。

这些是上述使用的基本设置:

参数描述示例
hostLDAP 服务器的主机名或 IPldap.forumsys.com
portLDAP 服务器的目录端口389
bind_dn用户的路径模板uid={user_name},dc=example,dc=com
enable_tls是否使用安全 LDAPno
tls_require_cert是否要求连接时要有证书never
备注

在本例中,由于公共服务器使用 389 并且不使用安全端口,因此为了演示目的,我们禁用 TLS。

备注

查看 LDAP 文档页面 以获取有关 LDAP 设置的更多详细信息。

  1. <user_directories> 部分中添加 <ldap> 部分以配置用户角色映射。该部分定义了用户何时被认证以及用户将获得什么角色。在此基本示例中,任何通过 LDAP 进行身份验证的用户将获得 scientists_role,该角色将在 ClickHouse 的后续步骤中定义。该部分应类似于:

这些是上述使用的基本设置:

参数描述示例
server在之前的 ldap_servers 部分中定义的标签test_ldap_server
roles在 ClickHouse 中定义的用户将映射到的角色名scientists_role
base_dn开始搜索用户组的基本路径dc=example,dc=com
search_filter用于识别选择用于映射用户的组的 ldap 搜索过滤器(&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
attribute应返回值的属性名称cn
  1. 重启您的 ClickHouse 服务器以应用设置。

2. 配置 ClickHouse 数据库角色和权限

备注

本节中的过程假定已经启用了 ClickHouse 中的 SQL 访问控制和账户管理。要启用,请查看 SQL 用户和角色指南

  1. 在 ClickHouse 中创建一个与 config.xml 文件的角色映射部分中使用的名称相同的角色
  1. 授予该角色所需的权限。以下语句授予能够通过 LDAP 进行身份验证的任何用户管理权限:

3. 测试 LDAP 配置

  1. 使用 ClickHouse 客户端登录
备注

在步骤 1 中使用 ldapsearch 命令查看目录中所有可用用户,所有用户的密码均为 password

  1. 测试用户是否正确映射到 scientists_role 角色并具有管理权限

摘要

本文演示了如何配置 ClickHouse 以验证 LDAP 服务器并映射到角色的基础知识。 还可以为 ClickHouse 中的单个用户配置选项,但让这些用户通过 LDAP 进行验证而不配置自动角色映射。LDAP 模块还可以用于连接到 Active Directory。