ClickHouse开启ldap认证简介

网友投稿 993 2022-05-30

环境要求:

安装且正常运行的ClickHouse 20.8 与OpenLDAP集群。

测试clickhouse-client 用默认用户可以正常登录,用ldapsearch指令可以正常用ldap服务器管理员账号密码或普通用户账号密码正常连接,且有用户数据。

例如:

# 通过默认用户可以登录ClickHouse clickhouse-client -h 127.0.0.1 --port 9000 # 通过ldapsearch指令可以从加密传输端口连接到ldap server ldapsearch -LLL -W -H ldaps://127.0.0.1:636 -D "cn=root,dc=hadoop,dc=com" -b "dc=hadoop,dc=com" # 通过ldapwhoami指令与管理员账户密码可以从加密传输端口连接到ldap server,且有正确数据反馈 $ ldapwhoami -x -D "cn=root,ou=Users,dc=hadoop,dc=com" -W -H ldaps://127.0.0.1:636 dn:cn=root,ou=Users,dc=hadoop,dc=com # 通过ldapwhoami指令与用户密码可以从加密传输端口连接到ldap server,且有正确数据反馈 $ ldapwhoami -x -D "uid=pro1,ou=Users,dc=hadoop,dc=com" -w pro1 dn:uid=pro1,ou=Users,dc=hadoop,dc=com

方案一:

ClickHouse开启ldap认证简介

通过配置config.xml与users.xml文件,进行新增用户,配置ldap认证。可用于配置默认用户和管理员用户使用。

注:config.xml中配置参数详解在文末有详细解释。

修改/etc/clickhouse-server/config.xml文件在标签内配置ldap_server的信息,如果没有可根据官网说明文档自行添加或直接使用下文所举例子。  采用明文数据传输方式

localhost 389 uid= ,ou=Group,dc=node1,dc=com no never

加密数据传输方式修改

localhost 636 uid= ,ou=Group,dc=node1,dc=com yes allow

/etc/clickhouse-server/users.xml文件,在标签内添加用户信息,并将密码验证配置成 ldap_server_name

ldap_server_name ::/0 default default

用修改的配置文件重新启动clickhouse-server

/usr/bin/clickhouse-server --config-file=/etc/clickhouse-server/config.xml

使用OpenLDAP中的用户username与其对应的密码登录ClickHouse

/usr/bin/clickhouse-client --port 7000 --user username --password %TGB6yhn

方案二

开启ClickHouse RBAC功能,用SQL命令创建使用LDAP服务器进行认证的用户,并在/etc/clickhouse-server/config.xml配置相应的LDAP服务配置。此方案适合从LDAP服务器中批量向ClickHouse中导入用户。

修改/etc/clickhouse-server/config.xml文件在标签内配置ldap_server的信息(与方案一中涉及内容相同)

采用明文数据传输方式

localhost 389 uid= ,ou=Group,dc=node1,dc=com no never

加密数据传输方式修改

localhost 636 uid= ,ou=Group,dc=node1,dc=com yes allow

开启ClickHouse RBAC功能

在 config.xml 中添加 access_control_path 配置项,默认可能已经配置,没有请添加。

/var/lib/clickhouse/access/

通过 SQL 形式创建的用户、角色等信息将以文件的形式被保存在这个目录。在添加完配置后需要重启服务,重启之后,在指定目录下会生成一系列存储文件:

-rw-r-----. 1 clickhouse clickhouse 1 May 15 20:27 quotas.list -rw-r-----. 1 clickhouse clickhouse 1 May 15 20:27 roles.list -rw-r-----. 1 clickhouse clickhouse 1 May 15 20:27 row_policies.list -rw-r-----. 1 clickhouse clickhouse 1 May 15 20:27 settings_profiles.list -rw-r-----. 1 clickhouse clickhouse 1 May 15 20:39 users.list

在 users.xml 中为默认用户 default 添加 access_management 配置项

1 ...

至此配置项完成,重启clickhouse-server,让配置生效:

systemctl restart clickhouse-server

此时默认用户default,就开启了 SQL 驱动的访问控制和账户管理功能。default 作为默认用户,默认拥有所有的权限,我们应该将它当做 super admin 使用。所以一般我们会使用 default 用户创建另外一批 admin 用户,用于日常管理,例如:

CREATE USER userName IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'password';

使用默认提供的default账号登陆(default 作为默认用户,默认拥有所有的权限),新建root账号:

clickhouse-client -m

登录成功后进行下列操作:

-- 创建用户:用户名 root 密码 root Clickhouse> CREATE USER root IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'root'; -- 授予root账号权限: Clickhouse> set allow_introspection_functions=1; Clickhouse> GRANT ALL ON *.* TO root WITH GRANT OPTION; -- 账号查询和确认: Clickhouse> show create user root; SHOW CREATE USER root ┌─CREATE USER root────────────────────────────────────┐ │ CREATE USER root IDENTIFIED WITH plaintext_password │ └─────────────────────────────────────────────────────┘

创建完管理员账户后,用管理员账户登录,进行相关配置,并限制default用户权限,直接将users.xml中标签中标签内容注释掉即可。

# 使用root 用户登录ClickHouse clickhouse-client -u root --password root # 创建pro1用户,设置ldap_server 为config.xml中定义的'my_ldap_server' (该用户pro1为OpenLDAP中已有的用户名) Clickhouse> CREATE USER pro1 IDENTIFIED WITH ldap_server BY 'ldap_server_name';

退出root登录,使用用户pro1登录验证配置是否成功

clickhouse-client -u pro1 --password %TGB6yhn

♦ config.xml中配置参数详解:

host

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

port

LDAP服务器端口,如果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

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

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

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

指定旧版StartTLS协议(纯文本(ldap://)协议,升级到TLS)的“starttls”。

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

允许加密套件。

ClickHouse

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:园区增值业务类API概述及向导
下一篇:小白初入前端之Vue.js的学习之路——初识vue
相关文章