ClickHouse使用OpenLDAP认证
ClickHouse支持和OpenLDAP进行对接,通过在ClickHouse上添加OpenLDAP服务器配置和创建用户,实现帐号和权限的统一集中管理和权限控制等操作。此方案适合从OpenLDAP服务器中批量向ClickHouse中导入用户。
本章节操作仅支持MRS 3.1.0及以上集群版本。
前提条件
- MRS集群及ClickHouse实例运行正常,已安装ClickHouse客户端。
- OpenLDAP已安装且状态正常。
对接OpenLDAP服务器创建ClickHouse用户
- 登录集群Manager页面,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”。
- 选择“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>配置参数详解。
- 添加完配置后,单击“保存”,在弹出对话框中单击“确定”,配置保存成功后,单击“完成”。
- Manager页面,单击“实例”,选择ClickHouseServer实例,单击“更多 > 重启实例 ”,弹出对话框输入密码,单击“确定”。重启实例对话框,单击“确定”,根据界面提示信息确认实例重启成功,单击“完成”重启操作完成。
- 登录ClickHouseServer实例所在主机节点,进入“${BIGDATA_HOME}/FusionInsight_ClickHouse_版本号/x_x_ClickHouseServer/etc”目录。
cd ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/x_x_ClickHouseServer/etc
- 执行以下命令,查看配置文件config.xml,确认OpenLDAP参数是否配置成功。
cat config.xml
- 以root用户登录ClickHouseServer实例所在的节点。
- 执行以下命令获取“clickhouse.keytab”文件路径。
ls ${BIGDATA_HOME}/FusionInsight_ClickHouse_*/install/FusionInsight-ClickHouse-*/clickhouse/keytab/clickhouse.keytab
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到ClickHouse客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 执行如下命令使用客户端命令连接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的端口号
- 如果当前集群已启用Kerberos认证,使用clickhouse.keytab连接ClickHouseServer实例:
- 创建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中已有的用户名,请根据实际情况修改。
- 退出客户端,使用新建的用户登录验证配置是否成功。
exit;
clickhouse client --host ClickHouseServer实例IP --user testUser --password --port ClickHouse的端口号
输入testUser对应的密码