SQL 儲存後端權限管理
本文件旨在指導使用者在使用 SQL 儲存後端時設定與管理權限。
簡介
為處理權限,Helm 採用了 Kubernetes 的 RBAC 功能。在使用 SQL 儲存後端時,無法使用 Kubernetes 的角色來決定使用者是否能存取某個給定的資源。本文件說明瞭如何建立和管理這些權限。
初始化
當 Helm CLI 第一次與你的資料庫建立連線時,該客戶端會確認之前是否已初始化。如果不是,它會自動執行必要的設定。此初始化需要在 public Schema 上具有管理者權限,或至少具備以下權限:
- 建立資料表
- 在 public Schema 上授予權限
在資料庫上執行遷移後,所有其他角色都可以使用客戶端。
在 PostgreSQL 中授予非管理者使用者的權限
為管理權限,SQL 後端驅動程式採用了 PostgreSQL 的 RLS(列安全層級) 功能。透過 RLS,所有使用者都能讀取/寫入同一資料表,但如果沒有明確允許的話,則無法處理相同的列。預設情況下,任何未明確授予適當權限的角色在執行 helm list
時都會傳回一個空清單,也無法檢索或變更叢集中的任何資源。
我們來看一下如何授予特定角色存取特定命名空間的權限
CREATE POLICY <name> ON releases_v1 FOR ALL TO <role> USING (namespace = 'default');
這個指令會授予角色 role
讀寫所有符合 namespace = 'default'
條件的資源的權限。在建立此政策後,以角色 role
之名連線至資料庫的使用者因此能在執行 helm list
時看到 default
命名空間中存在的所有版本,並能夠變更和刪除它們。
透過 RLS,可以細緻地管理權限,而且或許有興趣針對表格的不同欄位限制存取權
- 金鑰
- 類型
- 內文
- 名稱
- 命名空間
- 版本
- 狀態
- 擁有者
- 建立時間
- 修改時間