ClickHouse 访问控制
RBAC
用户账户:包含身份信息、权限、允许的主机、角色和设置。
角色:权限容器,可分配给用户或其他角色。
行策略:定义表中行的可见性。
设置配置文件:集中管理用户/角色的配置参数。
配额:限制资源使用(如查询次数、内存)。
权限层级
权限按层级划分(如ALTER包含子权限ALTER COLUMN)。
部分权限独立(如ALTER ROW POLICY不属于表级权限)。
SQL 驱动权限管理特点
1. 动态配置,无需重启服务。
2. 更易集成到自动化脚本或 CI/CD 流程中。
3. 支持细粒度权限控制(如表级、列级、行级)
启用 SQL 用户模式
修改配置文件
在users.xml中为默认用户启用以下配置,并重启服务。
<users><default><access_management>1</access_management><named_collection_control>1</named_collection_control><show_named_collections>1</show_named_collections><show_named_collections_secrets>1</show_named_collections_secrets><password_sha256_hex>...</password_sha256_hex> <!-- 默认用户密码(可选) --></default>
</users>
access_management=1:启用 SQL 权限管理(必选)
named_collection_control=1:允许管理命名配置集合
show_named_collections=1:查看命名集合
show_named_collections_secrets=1:查看集合中的敏感字段(如密码)
登录 clickhouse
clickhouse-client --port 19000
创建管理员账户
使用默认用户(default)连接并创建新管理员:
-- 创建管理员用户(替换 your_password)
CREATE USER admin IDENTIFIED WITH sha256_password BY 'your_password';
CREATE USER admin_user_account IDENTIFIED WITH sha256_password BY 'password' on CLUSTER cluster_3s2r;
更新集群节点配置
并添加集群通信密钥:
<clickhouse><remote_servers><your_cluster><secret>shared_cluster_password</secret> <!-- 集群通信密钥 --></your_cluster></remote_servers>
</clickhouse>
权限管理操作
GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION on CLUSTER cluster_3s2r;
权限回收
REVOKE SELECT ON dbname.* FROM readonly_user;
删除用户
DROP USER readonly_user;
参考文档
https://clickhouse.com/docs/en/operations/access-rights