更新时间:2024-05-11 GMT+08:00

ClickHouse使用OpenLDAP认证

ClickHouse支持和OpenLDAP进行对接,通过在ClickHouse上添加OpenLDAP服务器配置和创建用户,实现帐号和权限的统一集中管理和权限控制等操作。此方案适合从OpenLDAP服务器中批量向ClickHouse中导入用户。

本章节操作仅支持MRS 3.1.0及以上集群版本。

前提条件

  • MRS集群及ClickHouse实例运行正常,已安装ClickHouse客户端。
  • OpenLDAP已安装且状态正常。

对接OpenLDAP服务器创建ClickHouse用户

  1. 登录集群Manager页面,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”。
  2. 选择“ClickHouseServer(角色)> 自定义”,在“clickhouse-config-customize”配置项中添加如下OpenLDAP配置参数。

    表1 OpenLDAP参数说明

    参数名

    参数值说明

    参数取值参考

    ldap_servers.ldap_server_name.host

    OpenLDAP服务器主机名或IP,不能为空。

    localhost

    ldap_servers.ldap_server_name.port

    OpenLDAP服务器端口。

    如果enable_tls参数设置为true,则默认端口号为636,否则为389。

    636

    ldap_servers.ldap_server_name.auth_dn_prefix

    用于构造要绑定到的DN的前缀和后缀。

    生成的DN将被构造为auth_dn_prefix + escape(user_name) + auth_dn_suffix字符串。

    auth_dn_suffix通常应将逗号“,”作为其第一个非空格字符。

    uid=

    ldap_servers.ldap_server_name.auth_dn_suffix

    ,ou=Group,dc=node1,dc=com

    ldap_servers.ldap_server_name.enable_tls

    触发使用OpenLDAP服务器安全连接的标志。

    • 纯文本(ldap://)协议指定“no”(不推荐)。
    • LDAP over SSL/TLS (ldaps://)协议指定“yes”。

    yes

    ldap_servers.ldap_server_name.tls_require_cert

    SSL/TLS对端证书校验行为。

    取值范围为: 'never'、'allow'、'try'、'require'。

    allow

    其他参数说明详细可以参考<ldap_servers>配置参数详解

  3. 添加完配置后,单击“保存”,在弹出对话框中单击“确定”,配置保存成功后,单击“完成”。
  4. Manager页面,单击“实例”,选择ClickHouseServer实例,单击“更多 > 重启实例 ”,弹出对话框输入密码,单击“确定”。重启实例对话框,单击“确定”,根据界面提示信息确认实例重启成功,单击“完成”重启操作完成。
  5. 登录ClickHouseServer实例所在主机节点,进入${BIGDATA_HOME}/FusionInsight_ClickHouse_版本号/x_x_ClickHouseServer/etc”目录

    cd ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/x_x_ClickHouseServer/etc

  6. 执行以下命令,查看配置文件config.xml,确认OpenLDAP参数是否配置成功。

    cat config.xml

  7. 以root用户登录ClickHouseServer实例所在的节点。
  8. 执行以下命令获取“clickhouse.keytab”文件路径。

    ls ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/install/FusionInsight-ClickHouse-*/clickhouse/keytab/clickhouse.keytab

  9. 以客户端安装用户,登录安装客户端的节点。
  10. 执行以下命令,切换到ClickHouse客户端安装目录。

    cd /opt/client

  11. 执行以下命令配置环境变量。

    source bigdata_env

  12. 执行如下命令使用客户端命令连接ClickHouseServer实例。

    • 如果当前集群已启用Kerberos认证,使用clickhouse.keytab连接ClickHouseServer实例:

      clickhouse client --host ClickHouseServer实例所在节点IP --user clickhouse/hadoop.<系统域名> --password 8中获取的clickhouse.keytab路径 --port ClickHouse的端口号

      系统域名:默认为hadoop.com。具体可登录集群FusionInsight Manager,单击“系统 > 权限 > 域和互信”,“本端域”参数值即为系统域名。在执行命令时改为小写。

    • 如果当前集群未启用Kerberos认证,使用ClickHouse管理员用户连接ClickHouseServer实例:

      clickhouse client --host ClickHouseServer实例所在节点IP --user clickhouse --port ClickHouse的端口号

  13. 创建OpenLDAP中的普通用户。

    如以下语句,在集群default_cluster上创建testUser用户,设置ldap_server为6中<ldap_servers>标签下的OpenLDAP服务名,本示例为ldap_server_name。

    CREATE USER testUser ON CLUSTER default_cluster IDENTIFIED WITH ldap_server BY 'ldap_server_name';

    testUser用户为OpenLDAP中已有的用户名,请根据实际情况修改。

  14. 退出客户端,使用新建的用户登录验证配置是否成功。

    exit;

    clickhouse client --host ClickHouseServer实例IP --user testUser --password --port ClickHouse的端口号

    输入testUser对应的密码

<ldap_servers>配置参数详解

  • host

    OpenLDAP服务器主机名或IP,必选参数,不能为空。

  • port

    OpenLDAP服务器端口,如果enable_tls参数设置为true,则默认为636,否则为389。

  • auth_dn_prefix,auth_dn_suffix

    用于构造要绑定到的DN的前缀和后缀。

    实际上,生成的DN将被构造为auth_dn_prefix + escape(user_name) + auth_dn_suffix字符串。

    注意,这意味着auth_dn_suffix通常应将逗号“,”作为其第一个非空格字符。

  • enable_tls

    触发使用OpenLDAP服务器安全连接的标志。

    为纯文本(ldap://)协议指定“no”(不推荐)。

    为LDAP over SSL/TLS (ldaps://)协议指定“yes”(建议为默认值)。

  • tls_minimum_protocol_version

    SSL/TLS的最小协议版本。

    接受的值是: 'ssl2'、'ssl3'、'tls1.0'、'tls1.1'、'tls1.2'(默认值)。

  • tls_require_cert

    SSL/TLS对端证书校验行为。

    接受的值是: 'never'、'allow'、'try'、'require'(默认值)。

  • tls_cert_file

    证书文件。

  • tls_key_file

    证书密钥文件。

  • tls_ca_cert_file

    CA证书文件。

  • tls_ca_cert_dir

    CA证书所在的目录。

  • tls_cipher_suite

    允许加密套件。