ClickHouse新特性之SQL化用戶配置

Friday night,寫篇超短文吧。

在之前的ClickHouse版本中,我們只能通過修改users.xml文件來配置用戶及相關(guān)的參數(shù)(權(quán)限、資源限制、查詢配額等),不是很方便。好在從20.5版本起,ClickHouse開始支持SQL化的用戶配置(如同MySQL、PostgreSQL一樣),易用性增強了很多。

SQL化用戶配置默認(rèn)是關(guān)閉的,要啟用它,需要在users.xml中的一個用戶(一般就是默認(rèn)的default)下添加:

<access_management>1</access_management>

另外還需要在config.xml中配置權(quán)限管理數(shù)據(jù)的存儲位置:

<access_control_path>/data1/clickhouse/access/</access_control_path>

這樣我們就可以用default用戶管理其他用戶了。ClickHouse采用與MySQL近似的RBAC(Role-based access control,基于角色的訪問控制)機制,所以語法也很像。下面簡要列舉幾個操作,更加詳細(xì)的內(nèi)容可以參見官方文檔:https://clickhouse.tech/docs/en/operations/access-rights/。

  • 創(chuàng)建一個單次查詢只允許使用4個線程、4G內(nèi)存的只讀profile。
CREATE SETTINGS PROFILE low_mem_readonly
SETTINGS max_threads = 4, max_memory_usage = 4000000000
READONLY;
  • 基于上述profile創(chuàng)建一個名為accountant的角色,并授予該角色查詢account_db數(shù)據(jù)庫中所有表的權(quán)限。
CREATE ROLE accountant SETTINGS PROFILE 'low_mem_readonly';

GRANT SELECT ON account_db.* TO accountant;
  • 創(chuàng)建一個允許內(nèi)網(wǎng)訪問的用戶lmagic,設(shè)定密碼,并指定它的默認(rèn)角色為accountant,lmagic用戶就具有了accountant角色的權(quán)限。
    注意新創(chuàng)建的用戶沒有任何權(quán)限,我們也可以通過GRANT語句直接給用戶授予權(quán)限。
CREATE USER lmagic@'192.168.%.%' 
IDENTIFIED WITH sha256_password BY 'lm2020'
DEFAULT ROLE accountant;

GRANT OPTIMIZE ON datasets.hits_v1 TO lmagic@'192.168.%.%';

觀察上面設(shè)定的access_control_path目錄,可以發(fā)現(xiàn)創(chuàng)建的用戶配置都被保存了下來。

-rw-r----- 1 clickhouse clickhouse 135 Sep  4 21:51 034f455a-aeec-f9d0-3f76-b026318de1bd.sql
-rw-r----- 1 clickhouse clickhouse 107 Sep  4 21:45 934198fc-bd87-90bb-2062-f0c165f54cae.sql
-rw-r----- 1 clickhouse clickhouse 293 Sep  4 21:58 b643aee4-c4d4-5dd8-2e63-2dd13bf42e90.sql
-rw-r----- 1 clickhouse clickhouse   1 Aug 23 01:14 quotas.list
-rw-r----- 1 clickhouse clickhouse  48 Sep  4 21:52 roles.list
-rw-r----- 1 clickhouse clickhouse   1 Aug 23 01:14 row_policies.list
-rw-r----- 1 clickhouse clickhouse  54 Sep  4 21:46 settings_profiles.list
-rw-r----- 1 clickhouse clickhouse  56 Sep  4 21:59 users.list

如果需要更改用戶配置,使用ALTER、DROP、REVOKE語法即可。例如:

  • 修改lmagic用戶的密碼,并改為在任何地址都可訪問。
ALTER USER lmagic@'192.168.%.%'
RENAME TO lmagic@'%'
IDENTIFIED WITH sha256_password BY 'lm2021';
  • 刪除剛才創(chuàng)建的profile。
DROP SETTINGS PROFILE low_mem_readonly;
  • 撤銷lmagic用戶的OPTIMIZE權(quán)限。
REVOKE OPTIMIZE ON datasets.hits_v1 FROM lmagic@'%';

最后需要注意,上述配置語句的作用域都是在單個節(jié)點上的。如果想要在集群所有節(jié)點上都生效的話,使用老生常談的ON CLUSTER語法即可。例如:

CREATE USER lmagic@'192.168.%.%' ON CLUSTER sht_ck_cluster_pro1
IDENTIFIED WITH......

就醬吧,民那晚安晚安。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容