ClickHouse用户管理安全指南
2023-04-10 11:35 abce 阅读(446) 评论(0) 编辑 收藏 举报用户管理
用户信息存储在user.xml文件中。
通常建议多个用户,使用单独的XML文件进行管理。默认是位于目录/etc/clickhouse-server/users.d/下。
例如,创建如下两个用户:ClickHouse和abce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <users> <clickhouse> <networks> <ip>127.0.0.1</ip> <ip>0.0.0.0/0</ip> <ip>::/0</ip> </networks> <password_sha256_hex>716b36073a90c6fe1d445ac1af85f4777c5b7a155cea359961826a030513e448</password_sha256_hex> <profile>clickhouse_operator</profile> <quota> default </quota> </clickhouse> <abce> <networks> <ip>127.0.0.1</ip> </networks> <password_sha456_hex>73d1b1b1bc1dabfb97f216d897b7968e44b06457920f00f2dc6c1ed3be25ad4c</password_sha256_hex> <profile> default </profile> </abce> </users> |
其中:
ClickHouse:密码是clickhouse_password ,以sha256哈希的方式存储,默认的profile是clickhouse_operator,可以从任意地方访问clickhouse
abce:只能从localhost访问clickhouse
SQL命令方式设置
要使用access_management setting显式开启sql控制方式。比如为abce开始sql方式的访问控制:
1 2 3 4 5 | <users> <abce> <access_management>1</access_management> </abce> </users> |
开启后,就可以通过sql命令的方式来设置用户里,比如:
1 2 3 | CREATE USER IF NOT EXISTS myabc IDENTIFIED WITH SHA256_PASSWORD BY 'verysecretpassword' HOST IP '192.168.22.47/24' SETTINGS readonly=1; |
用户网络权限管理
可以设置用户可以访问clickhouse的地址。其中:
·IP: IP地址或掩码。其中0.0.0.0/0表示所有的IPv4地址;::/0表示所有的IPv6地址
·Host:DNS可以解析的主机名
·Host Regexp (Regular Expression): 正则表达式匹配的主机名
比如:
1 2 | ALTER USER abce HOST IP '192.168.0.0/16' ; ALTER USER abce HOST REGEXP 'chistadata[1234].com' ; |
通过xml文件进行网络设置
位于/etc/clickhouse-server/config.d下的xml文件中的<networks>元素中。比如:
1 2 3 4 5 6 7 8 9 10 | #只能从本地访问 <networks> <ip>127.0.0.1</ip> </networks> #只能从站点example.com或者chistadata[1234].com匹配的地址访问 <networks> <host>example.com</host> <host_regexp>chistadata[1234].com</host_regexp> </networks> |
用户密码管理
可以以SHA256或纯文本的方式存储密码。
1 2 3 4 5 6 | #生成sha256的密码 echo -n "password" | sha256sum | tr -d '-' #或者 echo -n "PasswordForUserabce" | shasum -a 256 | tr -d '-' c15bc95c03932a67f8c3d6b6370e44416b62fd690982c591754afb2f375cdc36 |
用xml管理密码
1 2 3 4 5 | <users> <John> <password_sha256_hex>5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8</password_sha256_hex> </John> </users> |
用sql命令设置密码
1 | ALTER USER abce IDENTIFIED WITH sha256_hash BY '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8' ; |
配额管理
配额是按时间间隔设置的,可以设置为不同的限制。例如,名为limited的配额有一个间隔,将最大查询设置为1000个,另一个间隔允许在24小时内总共进行10000个查询。
1 2 3 4 5 6 7 8 9 10 11 | <quotas> <limited> <interval> <duration>3600</duration> <queries>1000</queries> </interval> <interval> <duration>86400</duration> <queries>10000</queries> </limited> </quotas> |
用户Profiles管理
比如,为abce配置一个profile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <profiles> <restricted> <! -- The maximum number of threads when running a single query. --> <max_threads>8</max_threads> </ default > </profiles> <users> <abce> <networks> <ip>127.0.0.1</ip> <ip>0.0.0.0/0</ip> <ip>::/0</ip> </networks> <password_sha256_hex>c15bc95c03932a67f8c3d6b6370e44416b62fd690982c591754afb2f375cdc36</password_sha256_hex> <profile>restricted</profile> </abce> </users> |
修改用户的密码,并改为在任何地址都可访问。
1 | alter user abc@ '192.168.%.%' rename to abc@ '%' identified with sha256_password by 'abc' ; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2022-04-10 oracle大表创建索引