本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Aurora PostgreSQL pg_columnmask 資料移動案例
pg_columnmask 根據操作是發生在儲存體、邏輯或應用程式層,行為會因不同的資料移動操作而有所不同。儲存層級操作 (例如複製) 的行為與邏輯操作 (例如 pg_dump) 和應用程式層級操作 (例如 FDW 查詢) 不同。本節說明複寫、備份、匯出和遷移等常見案例的遮罩行為,並說明每個案例的安全影響。
主題
Aurora 全域資料庫和僅供讀取複本
Aurora pg_columnmask政策存放在叢集磁碟區的資料庫系統資料表中。所有複本都會存取相同的政策,並傳回一致的遮罩結果。對於 Aurora Global Database 部署,pg_columnmask政策 AWS 區域 會與其他資料庫系統資料表一起複寫到次要 ,以確保跨區域的一致資料保護。在容錯移轉案例期間,所有pg_columnmask政策都保持不變且正常運作。
資料庫複製和快照還原
Aurora Fast Clone 和快照還原操作會保留所有pg_columnmask政策、角色和組態,做為資料庫系統資料表的一部分。複製或還原的資料庫會從來源叢集繼承所有現有的政策。複製或還原之後,每個資料庫叢集都會維護獨立的pg_columnmask政策。
邏輯複寫
在初始同步期間,邏輯複寫會使用標準 SQL COPY 操作,並根據複寫使用者的許可強制執行pg_columnmask政策。在進行中的 CDC (變更資料擷取) 期間,不會套用遮罩政策,並透過 WAL 記錄複寫未遮罩的資料。具有 pg_create_subscription權限的使用者可以透過將複寫設定到他們控制的系統,潛在地洩漏未遮罩的資料。
藍/綠部署
在快照還原期間,會自動包含pg_columnmask政策。綠色環境從藍色環境中所有政策的相同副本開始。從藍色複寫到綠色期間,不會遮罩資料。藍色叢集上的後續遮罩政策變更 (DDL 命令) 不會複寫到綠色叢集,並使 RDS 藍/綠部署失效。
零 ETL 和 CDC 串流
資料複寫不受pg_columnmask政策影響。零 ETL 支援 DDL 複寫,但不複寫 pg_columnmask或 RLS 政策。不會將遮罩政策套用至 Zero-ETL 中的複寫資料。
AWS Database Migration Service
初始資料同步會根據為 DMS 任務選取的使用者進行遮罩或取消遮罩。CDC 資料一律會取消遮罩。雖然pg_columnmask相關的內部 RLS 政策可能會遷移,但它們無法在啟用非 pg_columnmask 的目標上運作。
資料匯出
pg_columnmask 將匯出視為任何其他查詢操作,會根據執行使用者的許可套用遮罩。這適用於 SQL 命令,例如 COPY、SELECT INTO、CREATE TABLE AS 和 Aurora PostgreSQL 的 S3 匯出功能。
注意
當遮罩使用者匯出資料時,產生的檔案包含遮罩值,這些值可能會在還原時違反資料庫限制。
檢視和具體化檢視
使用檢視時,請記住下列考量事項:
一般檢視 –
INVOKER一律使用語意。無論誰建立檢視,目前使用者的遮罩政策都會在查詢檢視時套用。具體化視觀表 – 重新整理時,套用具體化視觀表擁有者的遮罩政策,而非執行重新整理的使用者政策。如果擁有者有遮罩政策,具體化視觀表一律包含遮罩資料。
資料傾印和還原
pg_dump 以一般資料庫使用者身分運作,並根據連線使用者的許可套用遮罩政策。如果遮罩的使用者執行傾印,備份檔案會包含遮罩的資料。 pg_columnmask 政策會包含在傾印中,做為資料庫結構描述的一部分。成功還原需要目標資料庫中存在所有參考的角色,且目標已安裝pg_columnmask延伸模組。
注意
從 PostgreSQL 18 開始, pg_dump支援從資料庫傾印中排除資料列層級安全性 (RLS) 和pg_columnmask遮罩政策—no-policies的選項。如需詳細資訊,請參閱 pg_dump
外部資料包裝函式
使用外部資料包裝函式時,遠端資料表上的遮罩政策會根據映射的使用者在來源伺服器上的許可套用,而不是本機查詢使用者的許可,而且雖然您可以透過 FDW 存取遮罩的遠端資料,但您無法直接在本機資料庫中的外部資料表上建立 DDM 或 RLS 政策。