Azure Database for PostgreSQL のバックアップについて

Azure Backup と Azure Database Services を連携させることで、バックアップを最大 10 年間保持する、Azure Database for PostgreSQL サーバー向けのエンタープライズ クラスのバックアップ ソリューションが構築されます。 このソリューションには、長期的な保有期間以外に、次の機能が用意されています。

  • お客様の管理による個々のデータベース レベルでのスケジュール バックアップとオンデマンド バックアップ。
  • PostgreSQL サーバーへのデータベース レベルでの復元、または任意の BLOB ストレージへのデータベース レベルでの復元。
  • すべての操作とジョブの一元的な監視。
  • バックアップは、個別のセキュリティ ドメインと障害ドメインに保存されます。 何らかの状況で元のサーバーまたはサブスクリプションが侵害された場合は、バックアップ コンテナー (Azure Backup マネージド ストレージ アカウント) でバックアップが安全に保たれます。
  • pg_dump を使用すると、復元の柔軟性が向上します。 これは、データベースのバージョン間での復元に役立ちます。

このソリューションは個別に使用できます。また、データ保有期間が最大 35 日の Azure PostgreSQL 提供のネイティブ バックアップ ソリューションに加えて使用することもできます。 ネイティブ ソリューションは、最新のバックアップから復旧する場合など、運用復旧に適しています。 Azure Backup ソリューションを使用すると、コンプライアンスのニーズを満たし、より細かく柔軟なバックアップと復元を行うことができます。

バックアップ プロセス

  1. バックアップ管理者は、バックアップする Azure PostgreSQL データベースを指定できます。 また、指定されたデータベースに接続するために必要な資格情報を格納する Azure Key Vault の詳細を指定することもできます。 これらの資格情報は、Azure Key Vault のデータベース管理者によって安全にシード処理されます。
  2. 次に、バックアップ サービスは、指定された PostgreSQL サーバーで認証するための適切なアクセス許可と、データベースをバックアップするためのアクセス許可があるかどうかを検証します。
  3. Azure Backup は、保護された PostgreSQL サーバーと通信するために、バックアップ拡張機能がインストールされている worker ロール (VM) をスピン アップします。 この拡張機能は、コーディネーターと PostgreSQL プラグインで構成されます。 コーディネーターは、バックアップや復元などのさまざまな操作のためにワークフローをトリガーし、プラグインは実際のデータ フローを管理します。
  4. スケジュールされた時刻になると、コーディネーターはプラグインと通信し、pg_dump (カスタム) を使用して、PostgreSQL サーバーからバックアップ データのストリーミングを開始します。
  5. このプラグインによって、データが Azure Backup マネージド ストレージ アカウント (バックアップ コンテナーによってマスクされます) に直接送信されるため、ステージング場所は不要になります。 データは Microsoft マネージド キーを使用して暗号化され、Azure Backup サービスによってストレージ アカウントに保存されます。

Diagram showing the backup process.

PostgreSQL サーバーでの Azure Backup 認証

Azure Backup は、Azure によって配置される厳密なセキュリティ ガイドラインに従います。ここではバックアップ対象のリソースに対する権限は想定されておらず、ユーザーが明示的に指定する必要があります。

キーコンテナー ベースの認証モデル

Azure Backup サービスは、各バックアップの実行中に Azure PostgreSQL に接続する必要があります。 この接続には、データベースに対応する ‘username + password’ (または接続文字列) が使用されますが、これらの資格情報は Azure Backup と一緒には格納されません。 代わりに、これらの資格情報は、シークレットとして Azure Key Vault 内にデータベース管理者によって安全にシード処理される必要があります。 ワークロード管理者は、資格情報の管理とローテーションを担当します。Azure Backup、バックアップを取得するために、キー コンテナーから最新のシークレットの詳細を呼び出します。

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. データベースに対するデータベース ユーザーのバックアップ権限

Note

目的のリソースに対する ‘write’ アクセス権がある場合は、バックアップの構成フローでこれらのアクセス許可を 1 回のクリックで付与できます。また、必要なアクセス許可がない場合 (複数のペルソナが関係する場合) は、ARM テンプレートを使用します。

Azure PostgreSQL データベースの復元に必要なアクセス許可のセット

復元のアクセス許可は、バックアップに必要なアクセス許可と似ており、ターゲット PostgreSQL サーバーとそれに対応するキー コンテナーに対するアクセス許可を付与する必要があります。 バックアップの構成フローとは異なり、現在これらのアクセス許可をインラインで付与する操作は用意されていません。 そのため、Postgres サーバーとそれに対応するキー コンテナーへのアクセス許可を手動で付与する必要があります。

さらに、データベース ユーザーが、データベースに対し、キー コンテナーに格納されている資格情報に対応する次の復元権限を持っていることを確認します。

  • ALTER USER username CREATEDB;
  • azure_pg_admin ロールをデータベース ユーザーに割り当てます。

Microsoft Entra ID ベースの認証モデル

以前、Microsoft Entra ID に全面的に基づく別の認証モデルを発表しています。 しかし、新しいキー コンテナー ベースの認証モデル (前述のとおり) が、構成プロセスを容易にする代替オプションとして提供されるようになりました。

この認証モデルを使用するための自動スクリプトと関連する指示を入手するには、こちらのドキュメントをダウンロードしてください。 これにより、バックアップと復元のために、Azure PostgreSQL サーバーへの適切な一連のアクセス許可が付与されます。

Note

新しいすべての構成の保護は、新しいキー コンテナー認証モデルでのみ実行されます。 ただし、Microsoft Entra ID ベースの認証を使用して保護が構成されている既存のすべてのバックアップ インスタンスは引き続き存在し、定期的なバックアップが行われます。 これらのバックアップを復元するには、Microsoft Entra ID ベースの認証に従う必要があります。

Azure PostgreSQL サーバーとキー コンテナーに対するアクセス許可を手動で付与する

Azure Backup に必要なすべてのアクセス許可を付与するには、次のセクションを参照してください。

Azure PostgreSQL サーバーのアクセス許可

  1. Azure PostgreSQL サーバーで、Azure Backup コンテナーの MSI 閲覧者アクセス権を設定します。

    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. バックアップ コンテナーの 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.

    • アクセス ポリシーを使用する方法は次のとおりです。つまり、アクセス許可モデルはコンテナー アクセス ポリシーに設定されます。

      Screenshot showing the option to grant permission using Permission model is set to Vault access policy model.

  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 管理ツールで次のクエリを実行します (username をデータベース ユーザー ID に置き換えてください)。

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$

)

Note

既にバックアップが構成されているデータベースが UserErrorMissingDBPermissions で失敗する場合、問題の解決については、このトラブルシューティング ガイドを参照してください。

PG 管理ツールを使用する

まだ入手していない場合は、PG 管理ツールをダウンロードします。 このツールを使用して Azure PostgreSQL サーバーに接続できます。 また、データベースと新しいユーザーをこのサーバーに追加することもできます。

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

任意の名前で新しいサーバーを作成します。 Azure portal の 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.

接続を通過するためのファイアウォール規則に、現在のクライアント ID アドレスを追加してください。

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.

次のステップ

Azure Database for PostgreSQL のバックアップ