Share via


關於適用於 PostgreSQL 的 Azure 資料庫備份

Azure 備份與 Azure 資料庫服務共同為適用於 PostgreSQL 的 Azure 資料庫伺服器建立企業級備份解決方案,可保留備份長達 10 年。 除了長期保留,解決方案也提供下列功能:

  • 在個別資料庫層級進行客戶控制的排程和隨選備份。
  • 資料庫層級還原至任何 PostgreSQL 伺服器或任何 Blob 儲存體。
  • 集中監視所有作業和工作。
  • 儲存在個別安全性和容錯網域中的備份。 如果來源伺服器或訂用帳戶在任何情況下遭受入侵,備份在備份保存庫中 (在 Azure 備份受控儲存體帳戶中) 仍是安全狀態。
  • 使用 pg_dump 可讓您在還原時有更大的彈性。 這可協助您跨資料庫版本還原

您可以單獨使用此解決方案,也可以在 Azure PostgreSQL 提供的原生備份解決方案以外使用,後者提供最多 35 天的保留期。 原生方案適用於作業復原,例如,當您想要從最新的備份復原時。 Azure 備份解決方案有助於符合合規性需求,以及更細微且更有彈性地備份/還原。

備份程序

  1. 身為備份管理員,您可以指定想要備份的 Azure PostgreSQL 資料庫。 此外,您也可以指定 Azure Key Vault 的詳細資料,該保存庫儲存連線至指定資料庫所需的認證。 這些認證會由 Azure Key Vault 中的資料庫管理員安全地植入。
  2. 然後,備份服務會驗證它是否具有適當權限以驗證指定的 PostgreSQL 伺服器,以及備份其資料庫。
  3. Azure 備份會啟動背景工作角色 (VM),其中已安裝備份擴充功能,以與受保護的 PostgreSQL 伺服器進行通訊。 此擴充功能是由一個協調器和一個 PostgreSQL 外掛程式所組成。 協調器會觸發各種作業的工作流程,例如備份和還原,且外掛程式會管理實際的資料流程。
  4. 在排定的時間,協調器會與外掛程式進行通訊,然後使用 pg_dump (custom) 開始從 PostgreSQL Server 串流備份資料。
  5. 外掛程式會將資料直接傳送至 Azure 備份受控儲存體帳戶 (由備份保存庫遮罩),而不需要暫存位置。 資料會使用 Microsoft 管理的金鑰進行加密,並由儲存體帳戶中的 Azure 備份服務進行儲存。

Diagram showing the backup process.

向 PostgreSQL 伺服器驗證 Azure 備份

Azure 備份遵循 Azure 規定的嚴格安全性指導方針;不會假設要備份的資源權限,且需要由使用者明確指定。

以金鑰保存庫為基礎的驗證模型

Azure 備份服務執行每個備份時,必須連線至 Azure PostgreSQL。 當對應至資料庫的「使用者名稱 + 密碼」(或連接字串) 用於建立此連線,這些登入資訊不會透過 Azure 備份儲存。 相反地,這些登入資訊必須由 Azure Key Vault 中的資料庫管理員安全地植入做為祕密。 工作負載管理員負責管理和輪用認證;Azure 備份會從金鑰保存庫呼叫最新的祕密詳細資料,以進行備份。

Diagram showing the workload or database flow.

Azure PostgreSQL 資料庫備份所需的權限集合

  1. 將下列存取權限授與備份保存庫的 MSI:

    • Azure PostgreSQL 伺服器上的「讀取者」存取權。
    • Azure Key Vault 上的「Key Vault 祕密使用者」(或 get、list 祕密) 存取權。
  2. 下列項目的網路視距存取權:

    • Azure PostgreSQL 伺服器 – 允許存取 Azure 服務旗標設為 [是]
    • 金鑰保存庫 – 允許信任的 Microsoft 服務旗標設為 [是]
  3. 資料庫使用者在資料庫上的備份權限

注意

如果您 (備份管理員) 對於目標資源具備「寫入」存取權,您可以在設定備份流程中,透過按一下來授與這些權限,或如果您沒有所需的權限 (涉及多個角色時),可以使用 ARM 範本。

Azure PostgreSQL 資料庫還原所需的權限集合

還原的權限類似備份所需的權限,您需要在目標 PostgreSQL 伺服器及其對應的金鑰保存庫上授與權限。 不同於設定備份流程,目前無法使用以內嵌方式授與這些權限的體驗。 因此,您需要在 Postgres 伺服器和對應的金鑰保存庫上手動授與存取權

此外,請確定資料庫使用者 (對應至金鑰保存庫中儲存的認證) 在資料庫具有下列還原權限:

  • ALTER USER username CREATEDB;
  • 將角色 azure_pg_admin 指派給資料庫使用者。

Microsoft Entra ID 型驗證模型

先前已推出不同的驗證模型,該模型完全以 Microsoft Entra ID 為基礎。 不過,我們現在提供全新以金鑰保存庫為基礎的驗證模型 (如上所述) 做為替代選項,其簡化設定流程。

下載此文件以取得自動化指令碼和相關指示,以使用此驗證模型。 它會將適當的權限集合授與 Azure PostgreSQL 伺服器,以供備份和還原使用。

注意

所有新的設定保護都只會透過新的金鑰保存庫驗證模型進行。 不過,使用 Microsoft Entra ID 型的驗證所設定的所有現有備份執行個體將會繼續存在,並且會定期執行備份。 若要還原這些備份,您必須遵循 Microsoft Entra ID 型驗證。

以手動方式授與存取權給 Azure PostgreSQL 伺服器與金鑰保存庫

若要授與 Azure 備份所需的所有存取權限,請參閱下列各節:

Azure PostgreSQL 伺服器上的存取權限

  1. 設定備份保存庫的 MSI 對 Azure PostgreSQL 伺服器的讀者存取權。

    Screenshot showing the option to set Backup vault’s M S I Reader access on the Azure PostgreSQL server.

  2. Azure PostgreSQL 伺服器上的網路視距存取權:將 [允許存取 Azure 服務] 旗標設為 [是]。

    Screenshot showing the option to set network line of sight access on the Azure PostgreSQL server.

Azure Key Vault 上的存取權限 (與 PostgreSQL 伺服器相關聯)

  1. 在 Azure Key Vault 上,設定備份保存庫的 MSI Key Vault 祕密使用者 (或 getlist 祕密) 存取權。 若要指派權限,您可以使用角色指派或存取原則。 不需要使用兩個選項來新增權限,因為沒有幫助。

    • 使用 Azure 角色型存取控制 (Azure RBAC) 授權 (也就是權限模型設定為 Azure 角色型存取控制):

    Screenshot showing the option to provide secret user access.

    Screenshot showing the option to grant the backup vault’s M S I Key Vault Secrets User access on the key vault.

  2. 金鑰保存庫上的網路視距存取權:將 [允許信任的 Microsoft 服務] 旗標設為 [是]

    Screenshot showing to set the Allow trusted Microsoft services flag to yes for Network line of sight access on the key vault.

資料庫使用者在資料庫上的備份權限

PG 管理工具中執行下列查詢 (將「使用者名稱」 取代為資料庫使用者識別碼):

DO $do$
DECLARE
sch text;
BEGIN
EXECUTE format('grant connect on database %I to %I', current_database(), 'username');
FOR sch IN select nspname from pg_catalog.pg_namespace
LOOP
EXECUTE format($$ GRANT USAGE ON SCHEMA %I TO username $$, sch);
EXECUTE format($$ GRANT SELECT ON ALL TABLES IN SCHEMA %I TO username $$, sch);
EXECUTE format($$ ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON TABLES TO username $$, sch);
EXECUTE format($$ GRANT SELECT ON ALL SEQUENCES IN SCHEMA %I TO username $$, sch);
EXECUTE format($$ ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON SEQUENCES TO username $$, sch);
END LOOP;
END;
$do$

)

注意

如果已設定備份的資料庫因為 UserErrorMissingDBPermissions 而失敗,請參閱此疑難排解指南,以取得解決問題的協助。

使用 PG 管理工具

如果您還沒有此工具,請下載 PG 管理工具。 您可以透過此工具連線至 Azure PostgreSQL 伺服器。 此外,您也可以將資料庫和新的使用者新增至此伺服器。

Screenshot showing the process to connect to Azure PostgreSQL server using P G admin tool.

使用您選擇的名稱建立新的伺服器。 輸入主機名稱/位址名稱,其與 Azure 入口網站中 Azure PostgreSQL 資源檢視中所顯示的 [伺服器名稱] 相同。

Screenshot showing the option to create new server using P G admin tool.

Screenshot showing the option to enter the Host name or address name same as the Server name.

確定您將「目前的用戶端識別碼位址」新增至防火牆規則,以供連線使用。

Screenshot showing the process to add the current client I D address to the Firewall rules.

您可以將新資料庫和資料庫使用者新增至伺服器。 對於資料庫使用者,新增新的登入/群組角色。 確定 [是否可登入?] 設定為 [是]

Screenshot showing the process to add new databases and database users to the server.

Screenshot showing the process to add a new login or group role for database users.

Screenshot showing the verification of the can login option is set to Yes.

下一步

適用於 PostgreSQL 的 Azure 資料庫備份