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,可以細緻地管理權限,而且或許有興趣針對表格的不同欄位限制存取權

  • 金鑰
  • 類型
  • 內文
  • 名稱
  • 命名空間
  • 版本
  • 狀態
  • 擁有者
  • 建立時間
  • 修改時間