iT邦幫忙

2025 iThome 鐵人賽

DAY 28
1
Software Development

ClickHouse 系列:從資料庫底層架構到軟體應用實踐系列 第 28

Day 28 | ClickHouse 系列:資料庫安全性與權限管理(RBAC)實作

  • 分享至 

  • xImage
  •  

資料庫安全性與權限管理(RBAC, Role-Based Access Control)是不可或缺的基礎設施。ClickHouse 支援細緻的權限設計與 RBAC 機制,能夠確保數據資源的正確隔離與授權,降低操作風險與資安威脅。

RBAC 架構與核心概念

元件 說明
User 資料庫使用者,可指定密碼、網路存取範圍、預設角色等。
Role 角色,承載一組權限(Privilege),可賦予多個使用者。
Privilege 權限,例如 SELECT、INSERT、ALTER、DROP,可指定作用範圍 (Database/Table)。
Quota 資源限制,如每分鐘可執行的查詢數、讀取資料量等。
Profile 設定檔,如 max_memory_usage、readonly 模式等使用者層級設定。

RBAC 設計以 User → Role → Privilege 的方式進行權限授予,能讓權限管理變得簡單且可重複使用。

啟用 RBAC 與使用者權限管理

  1. 啟用 Access Management

確保 config.xml 中已啟用:

<access_control>
    <enabled>true</enabled>
</access_control>

或使用 Docker 時,指定環境變數:

CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
  1. 建立 User
CREATE USER analyst IDENTIFIED WITH plaintext_password BY 'analyst_pass';
  1. 建立 Role 並授予權限
CREATE ROLE analytics_reader;
GRANT SELECT ON default.user_events TO analytics_reader;
  1. 將 Role 指派給 User
GRANT analytics_reader TO analyst;
  1. 檢查授權結果
SHOW GRANTS FOR analyst;

進階:Profile 與 Quota 設定

  1. 建立資源限制 (Quota)
CREATE QUOTA daily_quota KEYED BY user_name FOR INTERVAL 1 DAY MAX queries = 1000, errors = 100;
  1. 建立 Profile(用於參數限制)
CREATE SETTINGS PROFILE analyst_profile SETTINGS
    max_memory_usage = 1000000000,
    readonly = 1;
  1. 將 Quota 與 Profile 指派給 User
ALTER USER analyst
    SETTINGS PROFILE analyst_profile
    QUOTA daily_quota;

模擬登入與權限驗證

  1. 使用權限帳號進行查詢
clickhouse-client --user=analyst --password=analyst_pass --query="SELECT * FROM default.user_events LIMIT 10"
  1. 測試未授權操作
clickhouse-client --user=analyst --password=analyst_pass --query="DROP TABLE default.user_events"
-- Expected: DB::Exception: analyst: Not enough privileges.

RBAC 實作策略建議

情境 實作建議
多使用者查詢不同資料表 以 Role 將不同表的 SELECT 權限進行組合管理。
嚴格限制查詢資源消耗 使用 Quota 及 Profile 限制記憶體、查詢數量、錯誤次數等。
只讀帳號/唯讀 API 查詢 配置 readonly Profile,禁止寫入/DDL 操作。
多租戶 (Multi-Tenant) 架構 以 Role 與 Database Scope 控制租戶隔離權限。

結語

ClickHouse 的 RBAC 機制,能夠協助你從「靜態權限管理」升級到「動態可控的使用者行為治理」,不僅能細緻控管資料資源存取權限,還能結合 Quota、Profile 等策略進行資源保護與行為限制,提升系統安全性與穩定性。


上一篇
Day 27 | ClickHouse 系列:ClickHouse Cloud 與自建部署的優劣比較
下一篇
Day 29 | ClickHouse 系列:Kubernetes 部署分散式架構
系列文
ClickHouse 系列:從資料庫底層架構到軟體應用實踐30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言