clickhouse 开启认证 SQL 方式

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

posted @ 2025-03-17 10:14  小吉猫  阅读(89)  评论(0)    收藏  举报