ClickHouse 和 ClickHouse Cloud 都支持行级和列级访问限制
SELECT * FROM table 时,只会显示策略允许访问的行。
行策略会过滤从该服务器上的表中读取的数据。要过滤通过 Distributed 表执行的查询,请在集群中每台服务器的底层本地表上创建策略:Distributed 表本身的策略无法应用于发送到远程服务器的查询,因此此类读取会被拒绝,而不会静默返回未经筛选的行。当发起节点发送已构建的读取计划时,本地表上的策略不会生效。因此,对于必须强制执行行策略的用户,请保持 serialize_query_plan = 0 (请参阅 issue #112891) 。
列级限制也可以直接通过 GRANT 语句 指定,从而为用户和角色启用表级访问。用户在查询中只能包含其有权访问的列。如果用户从某个表中选择了受限列,但并不具备对所指定全部列的访问权限,例如执行查询 SELECT * FROM table,则会返回错误,提示该用户权限不足。