全部產品
Search
文件中心

Hologres:簡單許可權模型(SPM)

更新時間:Dec 18, 2024

本文為您介紹基於即時數倉Hologres的簡單許可權模型。

背景

Hologres相容Postgres,使用與Postgres完全一致的許可權系統(簡稱專家模式,詳情請參見專家許可權模型)。典型的Postgres許可權系統劃分非常嚴格,在實際業務情境中使用時,操作較為複雜,通常存在如下痛點:

  • 如果您想要給某個使用者授權,需要執行大量的授權語句。

  • 不同的角色有不同的許可權,在操作上非常繁瑣,有時也會出現某條授權語句遺漏導致某個許可權缺失的情況。

  • 每新增一個使用者就需要執行相同的大量授權語句,浪費大量時間。

  • 儘管我們提供了Postgres的標準授權語句作為參考,但當使用習慣不同時,面對不同的許可權,常常難以準確執行正確的授權語句,在許可權管理方面容易混亂。這在一定程度上也會給業務帶來安全風險,同時也加大了您的管理成本、時間成本和使用成本。

為解決以上業務痛點,Hologres在PostgreSQL許可權的基礎上,提供了一種粗粒度的簡單許可權模型(Simple Permission Model,SPM)。簡單許可權模型以DB作為維度,劃分admin(管理員)、developer(開發人員)、writer(讀寫者)以及viewer(分析師)四種角色,您可以通過少量的許可權管理函數,即可對DB中的對象進行方便且安全的許可權管理。

簡單許可權模型介紹

在簡單許可權模型中,每個DB有如下幾種許可權等級:

  • DB管理員:{db}_admin

  • 開發人員:{db}_developer

  • 讀寫者:{db}_writer

  • 分析師:{db}_viewer

每個角色對應的許可權如下表所示。

角色

許可權

{db}_admin

  • 某個DB的管理員(admin)。

  • {db}_admin組的許可權是{db}_developer、{db}_writer和{db}_viewer組許可權的合集。

  • 某個DB的owner,可以刪除DB。

  • 可管理當前DB的{db}_admin、{db}_developer、{db}_writer和{db}_viewer四個使用者組的成員,包括新增及移除使用者群組成員。

  • 可以建立使用者,並將使用者加入某個使用者組。

  • 可以在該DB建立對象,例如Schema,並可以對對象進行增刪改查。

  • 可以在DB層級修改DB的配置項。

{db}_developer

  • DB的開發人員(developer)。

  • {db}_developer組的許可權是{db}_writer和{db}_viewer組許可權的合集。

  • 該DB所有Schema中,除系統對象以外的所有表、外表、類表對象(如視圖等)、Function、Procedure、Foreign Server、FDW、Type及Language的owner,可以增刪查改所有Schema中的所有表。

  • 所有Schema的USAGE及CREATE許可權,可以在任意非系統的Schema中進行建立表,建立視圖及建立外表等DDL操作。

{db}_writer

  • DB下的讀寫者(writer)。

  • {db}_writer組的許可權是{db}_viewer許可權的合集。

  • Schema中所有表、外表及類表對象(如視圖等)的資料,即擁有SELECT、INSERT、UPDATE及DELETE等許可權。

  • 可以增刪查改所有Schema。

  • 可以訪問或使用developer所擁有的Function、Procedure、Foreign Server、FDW、Type及Language等對象。

  • 所有Schema的USAGE許可權,不可進行DDL操作。

{db}_viewer

  • DB的分析師(viewer)。

  • 可以讀取所有schema下所有表、外表及類表對象(如視圖等)的資料,即擁有SELECT許可權。

  • 可以訪問或使用developer所擁有的Function、Procedure、Foreign Server、FDW、Type及Language等對象。

  • 所有Schema的USAGE許可權。