
# ClickHouse使用OpenLDAP认证
ClickHouse支持和OpenLDAP进行对接，通过在ClickHouse上添加OpenLDAP服务器配置和创建用户，实现账号和权限的统一集中管理和权限控制等操作。此方案适合从OpenLDAP服务器中批量向ClickHouse中导入用户。
本章节操作仅支持MRS 3.1.0及以上集群版本。
#### 前提条件
- MRS集群及ClickHouse实例运行正常，已安装ClickHouse客户端。
- OpenLDAP已安装且状态正常。
 
#### 对接OpenLDAP服务器创建ClickHouse用户
1. 登录集群Manager页面，选择"集群 \> 服务 \> ClickHouse \> 配置 \> 全部配置"。
2. 参考下图[图1]，选择"ClickHouseServer（角色）\> 自定义"，在"clickhouse-config-customize"配置项中添加如下OpenLDAP配置参数。
   
   表1OpenLDAP参数说明 
   | 参数名                                            | 参数值说明                                                                                                                                                                                                                                                                                    | 参数取值参考                    |
   |:---|:---|:---|
   | 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   | 用于构造要绑定到的DN的前缀和后缀。 生成的DN将被构造为auth_dn_prefix + escape(user_name) + auth_dn_suffix字符串。 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                     |
      
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   其他参数说明详细可以参考[\<ldap_servers\>配置参数详解]。
   图1OpenLDAP配置   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001144499226.png)
   
   
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**
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001190458251.png)
   
   
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的端口号*
      ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
      系统域名：默认为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 允许加密套件。
  
 
