對適用於 PostgreSQL 資料庫執行個體的現有 Amazon RDS 加密 - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對適用於 PostgreSQL 資料庫執行個體的現有 Amazon RDS 加密

由皮亞什戈亞爾(AWS)創建

Envronment 生產

技能:資料庫;安全、身份、合規

AWS 服務:亞馬遜 RDS; AWS KMS; AWS 數據管理系統

Summary

此模式說明如何將 Amazon Web Services (AWS) 雲端中的現有 Amazon ResPostgreSQL Services (Amazon RDS) 加密,同時將停機時間降至最小。(此程序也適 Amazon RDS for MySQL 資料庫執行個體。)

您可以在建立 Amazon RDS 資料庫執行個體時,但不能在建立 Amazon RDS 資料庫執行個體之後為其啟用加密。不過,您可以建立資料庫執行個體的快照,然後建立該快照的加密副本,以將加密新增至未加密的資料庫執行個體。接著,您可以從加密快照中還原資料庫執行個體,以取得原始資料庫執行個體的加密副本。此模式會使用 AWS Database Migration Service (AWS DMS) 遷移資料,而 AWS Key Management Service (AWS KMS) 進行加密。

Amazon RDS 加密資料庫執行個體會使用業界標準 AES-256 加密演算法,來加密託管 Amazon RDS 資料庫執行個體伺服器上的資料。資料加密後,Amazon RDS 將以透明的方式處理存取身份驗證和資料解密,同時將對效能的影響降至最小。您不需要修改資料庫用戶端應用程式即可使用加密。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 適用於 PostgreSQL 資料庫執行個體的未加密 Amazon RDS

  • 使用 (建立、修改或停止) AWS DMS 任務的經驗 (請參閱使用 AWS DMS 任務在 AWS 數據管理系統文件中)

  • 熟悉 AWS KMS 加密資料庫 (請參閱AWS KMS 文件)

限制

  • 您只能在建立 Amazon RDS 資料庫執行個體時,而不能在建立資料庫執行個體之後為其啟用加密。

  • 未加密資料庫執行個體不可以有加密僅供讀取複本,加密資料庫執行個體也不可以有未加密僅供讀取複本。

  • 您無法將未加密的備份或快照還原至已加密的資料庫執行個體。

  • 序列不會遷移到新的加密資料庫執行個體。

如需詳細資訊,請參閱「」亞馬遜 RDS 加密資料庫執行個體的限制在 Amazon RDS 文件中。

Architecture

來源架構

  • 未加密 RDS 資料庫執行個體

目標架構

  • 加密 RDS 資料庫執行個體

    • 目的地 RDS 資料庫執行個體是透過還原來源 RDS 資料庫執行個體的資料庫快照複本來建立。

    • 還原快照時會使用 AWS KMS 金鑰進行加密。

    • AWS DMS 複寫任務是用來遷移資料。

Tools

用於啟用加密的工具:

  • 用於加密的 AWS KMS 金鑰 — 建立加密資料庫執行個體時,您可以選擇客戶受管金鑰或 AWS 受管金鑰讓 Amazon RDS 來加密資料庫執行個體。如果您沒有為客戶受管金鑰指定金鑰識別碼,Amazon RDS 會將 AWS 受管金鑰用於您的新資料庫執行個體。Amazon RDS 會為您的 AWS 帳戶建立 AWS 受管金鑰。您的 AWS 帳戶對每個 AWS 區域都有不同的 AWS 受管金鑰以進行 Amazon RDS。如需將 KMS 金鑰用於 Amazon RDS 加密的詳細資訊,請參閱加密 Amazon RDS 資源

用於持續複寫的工具

  • AWS DMS — 您可以使用 AWS Database Migration Service (AWS DMS),將變更從來源資料庫複寫到目標資料庫。保持源和目標數據庫同步,以將停機時間降到最低是很重要的。如需設定 AWS DMS 和建立任務的詳細資訊,請參閱AWS DMS 文件

Epics

任務描述所需技能
檢查來源 PostgreSQL 資料庫執行個體的詳細資訊。

在 Amazon RDS 主控台上,選擇來源 PostgreSQL 資料庫執行個體。在組態索引標籤上,確定執行個體未啟用加密。如需螢幕圖解,請參閱其他資訊區段。

DBA
建立資料庫快照。

針對要加密的執行個體建立資料庫快照。建立快照所需的時間量取決於資料庫的大小。如需說明,請參閱「」建立資料庫快照在 Amazon RDS 文件中。

DBA
加密快照。

在 Amazon RDS 主控台導覽窗格中,選擇快照,然後選取您建立的資料庫快照。針對 Actions (動作) 選擇 Copy Snapshot (複製快照)。在對應的欄位中提供目標 AWS 區域和資料庫快照副本的名稱。選取Enable Encryption (啟用加密)核取方塊。在 Master Key (主金鑰) 中,指定用來加密資料庫快照副本的 AWS KMS 金鑰識別符。選擇 Copy Snapshot (複製快照)。如需詳細資訊,請參閱「」複製快照在 Amazon RDS 文件中。

DBA
任務描述所需技能
還原資料庫快照。

在 Amazon RDS 主控台,選擇快照。選擇您建立的加密快照。針對 Actions (動作),選擇 Restore Snapshot (還原快照)。適用於DB Instance Identifier (資料庫執行個體識別符),提供新資料庫執行個體的唯一名稱。檢閱執行個體詳細資訊,然後選擇還原資料庫執行個。將從快照建立新的加密資料庫執行個體。如需詳細資訊,請參閱「」從資料庫快照還原在 Amazon RDS 文件中。

DBA
使用 AWS DMS 遷移資料。

在 AWS DMS 主控台上,建立 AWS DMS 任務。適用於Migration type (遷移類型)中,選擇遷移現有資料並複寫持續的變更。In任務設定,用於目標表格準備模式中,選擇截斷。如需詳細資訊,請參閱「」建立任務(位於 AWS DMS 文件) 中。

DBA
啟用資料驗證。

In任務設定中,選擇Enable validation (啟用驗證)。這可讓您將來源資料與目標資料進行比較,以確認資料已正確移轉。 

DBA
停用目標資料庫執行個體的限制。

停用目標資料庫執行個體上的任何觸發程序和外部索引鍵限制,然後啟動 AWS DMS 任務。

DBA
驗證資料。

完全負載完成後,請驗證目標資料庫執行個體上的資料,以查看它是否符合來源資料。如需詳細資訊,請參閱「」AWS DMS 資料驗證(位於 AWS DMS 文件) 中。

DBA
任務描述所需技能
停止寫入來源資料庫執行個體的作業。

停止來源資料庫執行個體上的寫入作業,以便開始應用程式停機。確認 AWS DMS 已完成管道中資料的複寫。在目標資料庫執行個體上啟用觸發程序和外部索引鍵。

DBA
設定應用程式端點。

將應用程式連線設定為使用新的 Amazon RDS 資料庫執行個體終端節點。資料庫執行個體現在已加密。

DBA,應用程式擁有者

相關資源

其他資訊

檢查來源 PostgreSQL 資料庫執行個體的加密:

此模式的其他說明:

  • 啟用複寫功能 PostgreSQL 法是設定rds.logical_replication參數設定為 1。

重要說明:複寫插槽會保留寫入前置記錄檔 (WAL) 檔案,直到檔案被外部使用 — 例如pg_recvlogical;透過擷取、轉換和載入 (ETL) 任務;或透過 AWS DMS 進行擷取、轉換和載入。當您設定rds.logical_replication參數值設定為 1 時,AWS DMS 會將wal_levelmax_wal_sendersmax_replication_slots,以及max_connections參數。如果邏輯複寫插槽存在,但複寫插槽沒有 WAL 檔案的用戶,您可能會看到交易記錄檔磁碟使用量的增加,以及可用儲存空間的持續減少。如需解決此問題的詳細資訊和步驟,請參閱我如何識別是什麼原因導致了 Amazon RDS for PostgreSQL 的 PostgreSQL 上的「設備上沒有剩餘空間」或「磁碟完整」錯誤?(位於 AWS Support 知識中心)。

  • 建立資料庫快照後對來源資料庫執行個體所做的任何結構描述變更都不會出現在目標資料庫執行個體上。

  • 建立加密資料庫執行個體之後,您無法變更該資料庫執行個體使用的 CMK。請務必在建立加密資料庫執行個體前先決定您的 CMK 要求。

  • 在執行 AWS DMS 任務之前,您必須停用目標資料庫執行個體上的觸發程序和外部金鑰。當任務完成時,您可以重新啟用這些功能。