ClickHouse와 ClickHouse Cloud는 모두 행 및 컬럼 수준의 접근 제한을 지원합니다
SELECT * FROM table을 실행하면 정책에서 허용한 행만 표시됩니다.
행 정책은 해당 서버에서 데이터를 읽는 테이블을 필터링합니다. 분산 테이블을 통해 전달되는 쿼리를 필터링하려면 클러스터의 각 서버에서 기본 로컬 테이블에 정책을 생성하십시오. Distributed 테이블 자체에 설정한 정책은 원격 서버로 전송되는 쿼리에 적용할 수 없으며, 필터링되지 않은 행을 조용히 반환하는 대신 이러한 읽기는 거부됩니다. 시작 노드가 이미 생성된 읽기 계획을 전송할 때는 로컬 테이블의 정책이 적용되지 않으므로, 행 정책을 적용해야 하는 사용자에 대해서는 serialize_query_plan = 0을 유지하십시오(이슈 #112891 참조).
컬럼 수준 제한은 GRANT statement를 사용해 직접 지정할 수 있으며, 이를 통해 사용자와 역할에 테이블 수준 접근 권한을 부여할 수 있습니다. 사용자는 쿼리에 자신에게 접근 권한이 있는 컬럼만 포함할 수 있습니다. 사용자가 지정된 모든 컬럼에 대한 접근 권한이 없는 테이블에서 제한된 컬럼을 선택하면(예: SELECT * FROM table 쿼리), 권한이 부족하다는 오류가 반환됩니다.