用途:在 ClickHouse 中实现企业级基于角色的访问控制(RBAC),通过 SQL 管理用户、层级角色、行级策略、列授权、配额与设置配置文件,自下而上构建最小权限访问。
主要能力:创建带认证方式的用户(sha256_password、double_sha1_password、bcrypt_password),用 HOST IP 限制网络范围,并用 SETTINGS 限制单用户资源;构建基础角色(如 data_reader、data_writer、schema_manager)并组合为岗位角色(analyst、developer、platform_admin),授予用户并设置默认角色;用行策略实现多租户隔离;列级 GRANT SELECT(col) 隐藏 PII、GRANT INSERT(col) 防止元数据注入;用配额限制查询数、读取行数、结果行数与执行时间;用设置配置文件约束只读、内存、线程与并发,另有 ETL 配置文件启用 async_insert;在应用层按角色创建客户端工厂,使读、写、管理操作使用不同用户。
使用方式:需启用 access_management = 1(Cloud 默认),并使用带 GRANT OPTION 的管理员用户。流程分七步:创建用户、创建角色层级、行级安全、列授权、配额、设置配置文件、应用封装。示例命令如 CREATE USER app_backend IDENTIFIED WITH sha256_password BY 'strong-password-here' DEFAULT DATABASE analytics HOST IP '10.0.0.0/8' SETTINGS max_memory_usage = 10000000000, max_execution_time = 60; 以及 CREATE ROLE data_reader; GRANT SELECT ON analytics.* TO data_reader; 可用 SHOW CREATE USER、SHOW GRANTS FOR、system.row_policies 验证。
适用场景:多租户 SaaS 数据隔离、需要隐藏 PII 的分析角色、按用户/角色限制资源使用的集群。
限制:完整 SQL 与 TypeScript 封装见 references/implementation.md,示例与审计查询见 references/examples.md;常见错误包括 497 ACCESS_DENIED、516 AUTHENTICATION_FAILED、164 READONLY 及权限不足执行 GRANT。