Azure Backup と Azure データベース サービスを組み合わせて、バックアップを最大 10 年間保持する Azure Database for PostgreSQL サーバー向けのエンタープライズ クラスのバックアップ ソリューションが構築されました。 このソリューションには、長期的な保有期間以外に、次の機能が用意されています。
- 個々のデータベース レベルで、顧客がコントロールするスケジュールされたバックアップとオンデマンド バックアップ。
- 任意の Azure Database for PostgreSQL サーバーまたは任意の種類の BLOB ストレージにデータベース レベルで復元します。
- すべての操作とジョブの一元的な監視。
- バックアップを別々のセキュリティ・ドメインとフォルト・ドメインに格納します。 ソース サーバーまたはサブスクリプションが侵害された場合でも、バックアップは Azure Backup コンテナー (Azure Backup マネージド ストレージ アカウント内) に安全に残ります。
- 復元の柔軟性を高めるための
pg_dump
の使用。 データベースのバージョン間で復元できます。
このソリューションは、単独で使用することも、最大 35 日間のリテンション期間を提供する Azure PostgreSQL のネイティブ バックアップ ソリューションに加えて使用することもできます。 ネイティブ ソリューションは、最新のバックアップから復旧する場合など、運用復旧に適しています。 Azure Backup ソリューションは、コンプライアンスのニーズに対応し、よりきめ細かく柔軟なバックアップ/復元機能を提供します。
PostgreSQL 単一サーバーの保管バックアップの変更
Azure Database for PostgreSQL の 単一サーバー デプロイ オプションは 、2025 年 3 月 28 日に廃止されました。 その日に、Azure Backup for PostgreSQL 単一サーバーに変更が実装されました。 退職について詳しく知る。
Azure Backup は、保管庫のバックアップや復元ポイントの長期保持など、コンプライアンスと回復性のソリューションを提供します。 2025 年 3 月 28 日に、次の変更が実施されました。
- バックアップ構成は、新しい PostgreSQL 単一サーバー ワークロードでは許可されません。
- スケジュールされたすべてのバックアップ ジョブは、完全に中止されます。
- このワークロードに対して新しいバックアップ ポリシーを作成したり、既存のバックアップ ポリシーを変更したりすることはできません。
廃止日には、PostgreSQL シングルサーバ データベースのスケジュールされたバックアップ ジョブが完全に停止しました。 新しい復元ポイントを作成することはできません。
ただし、既存の PostgreSQL シングルサーバデータベースのバックアップは、バックアップポリシーに従って保持されます。 復元ポイントは、保持期間の有効期限が切れた後にのみ削除されます。 復元ポイントを無期限に保持する場合、または保持期間の有効期限が切れる前に復元ポイントを削除する場合は、 Azure Business Continuity Center コンソールを参照してください。
請求の変更
2025 年 3 月 31 日以降、PostgreSQL の単一サーバー データベースを保護するための保護インスタンス (PI) 料金は請求されなくなりました。 ただし、バックアップの保存料金は引き続き適用されます。 ストレージ料金を回避するには、Azure Business Continuity Center からすべての復元ポイントを削除します。
注
Azure Backup は、保持期間の有効期限が切れた後でも、最後の復元ポイントを保持します。 この機能により、将来の使用のために最後の復元ポイントにアクセスできるようになります。 最後の復元ポイントは手動でのみ削除できます。 最後の復元ポイントを削除してストレージ料金を回避する場合は、 データベース保護を停止します。
リストアの変更点
PostgreSQL の単一サーバ データベースは、 ファイルとして復元を使用して復元できます。 次に、復元されたファイルから 新しい PostgreSQL フレキシブル サーバーを手動で作成 する必要があります。
注
[ データベースとして復元 ] オプションは 2025 年 3 月 28 日現在サポートされていませんが、 ファイルとして復元 は引き続きサポートされています。
バックアップ プロセス
バックアップ管理者は、バックアップする予定の PostgreSQL データベースを指定できます。 また、指定したデータベースに接続するために必要な資格情報を格納する Azure Key Vault の詳細を指定することもできます。 データベース管理者は、これらの資格情報を Key Vault に安全にシードします。
Azure Backup サービスは、指定された Azure Database for PostgreSQL サーバーで認証し、そのデータベースをバックアップする ための適切なアクセス許可 を持っていることを検証します。
Azure Backup は、バックアップ拡張機能がインストールされたワーカー ロール (仮想マシン) を起動して、保護された Azure Database for PostgreSQL サーバーと通信します。 この拡張機能は、コーディネーターと PostgreSQL プラグインで構成されます。 コーディネーターは、バックアップや復元などのさまざまな操作のワークフローをトリガーします。 プラグインは実際のデータフローを管理します。
スケジュールされた時刻になると、コーディネーターは、
pg_dump
(カスタム) を使用して Azure Database for PostgreSQL サーバーからバックアップ データのストリーミングを開始するようにプラグインに指示します。このプラグインは、Azure Backup で管理されているストレージ アカウント (Azure Backup コンテナーによってマスクされている) にデータを直接送信するため、ステージング場所は必要ありません。 データは、Microsoft が管理するキーを使用して暗号化されます。 Azure Backup サービスでは、データがストレージ アカウントに格納されます。
Azure Database for PostgreSQL サーバーを使用した Azure Backup 認証
Azure Backup は、Azure の厳格なセキュリティ ガイドラインに従っています。 バックアップするリソースに対するアクセス許可は想定されません。 ユーザーは、これらのアクセス許可を明示的に付与する必要があります。
Key Vault ベースの認証モデル
Azure Backup サービスは、各バックアップの作成時に Azure Database for PostgreSQL サーバーに接続する必要があります。 この接続には、データベースに対応するユーザー名とパスワード (または接続文字列) が使用されますが、これらの資格情報は Azure Backup には保存されません。 代わりに、データベース管理者は、これらの資格情報を シークレットとして Azure Key Vault に安全にシードする必要があります。
ワークロード管理者は、資格情報の管理とローテーションを担当します。 Azure Backup は、バックアップを作成するために、キー コンテナーから最新のシークレットの詳細を呼び出します。
PostgreSQLデータベースのバックアップに必要な権限
Azure Backup コンテナーのマネージド ID に対して、次のアクセス許可を付与します。
- Azure Database for PostgreSQL サーバーでの閲覧者アクセス権。
- Key Vault シークレット Key Vault に対するユーザー アクセス (シークレットに対するアクセス許可の取得 と 一覧表示 )。
ネットワーク見通し内アクセスをオンに設定します。
- Azure Database for PostgreSQL サーバー: [ Azure サービスへのアクセスを許可する] を [ はい] に設定します。
- Key Vault: [ 信頼された Microsoft サービスを許可する ] を [ はい] に設定します。
データベースに対するデータベース・ユーザーのバックアップ権限を設定します。
注
バックアップ管理者として目的のリソースに対する書き込みアクセス権がある場合は、 バックアップの構成 フロー内で 1 回のクリックでこれらのアクセス許可を付与できます。 必要なアクセス許可がない場合 (複数のペルソナが関係している場合) は、Azure Resource Manager テンプレートを使用します。
PostgreSQL データベースの復元に必要な権限
復元の権限は、バックアップに必要な権限と似ています。 ターゲットの Azure Database for PostgreSQL サーバーと対応するキー コンテナーに対するアクセス許可を手動で付与する必要があります。 バックアップの構成フローとは異なり、これらのアクセス許可をインラインで付与するエクスペリエンスは現在利用できません。
データベース ユーザー (キー コンテナーに格納されている資格情報に対応) が、データベースに対する次の復元特権を持っていることを確認します。
-
ALTER USER
ユーザー名 「CREATEDB
」を割り当てます。 - ロール
azure_pg_admin
をデータベース・ユーザーに割り当てます。
Microsoft Entra ID ベースの認証モデル
以前の認証モデルは、完全に Microsoft Entra ID に基づいていました。 Key Vault ベースの認証モデル (前に説明したように) が、構成プロセスを容易にする代替オプションとして使用できるようになりました。
Microsoft Entra ID ベースの認証モデルを使用するための自動スクリプトと関連手順を入手するには、 このドキュメントをダウンロードしてください。 これにより、バックアップと復元のために Azure Database for PostgreSQL サーバーに対して適切なアクセス許可のセットが付与されます。
注
新しく構成されたすべての保護は、新しい Key Vault 認証モデルでのみ行われます。 ただし、Microsoft Entra ID ベースの認証によって保護が設定された既存のバックアップ インスタンスはすべて引き続き存在し、定期的なバックアップが取得されます。 これらのバックアップを復元するには、Microsoft Entra ID ベースの認証に従う必要があります。
Azure Database for PostgreSQL サーバーとキー コンテナーに対するアクセス権を手動で付与する手順
Azure Backup に必要なすべてのアクセス許可を付与するには、次の手順を使用します。
Azure Database for PostgreSQL サーバーに対するアクセス許可
Azure Database for PostgreSQL サーバー上のマネージド ID に対して、Azure Backup コンテナー の閲覧者 アクセス権を設定します。
Azure Database for PostgreSQL サーバーでネットワーク通信線アクセスを設定するには、 [ Azure サービスへのアクセスを許可する ] を [はい] に設定します。
キー コンテナーに対するアクセス許可
Azure Backup コンテナーの Key Vault Secrets ユーザー アクセスを、キー コンテナーのマネージド ID に設定します (シークレットに対する Get と List のアクセス許可)。 アクセス許可を割り当てるには、ロールの割り当てまたはアクセス ポリシーを使用します。 両方のオプションを使用してアクセス許可を追加する必要はありません。これは役に立たないためです。
Azure ロールベースのアクセス制御 (Azure RBAC) 承認を使用するには:
[アクセス ポリシー] で、 [アクセス許可モデル] を [Azure ロールベースのアクセス制御] に設定します。
[アクセス制御 (IAM)] で、Azure Backup コンテナーの Key Vault シークレット ユーザーに、キー コンテナーのマネージド ID に対するアクセス権を付与します。 そのロールのベアラーは、シークレットを読み取ることができます。
詳細については、「 Azure ロールベースのアクセス制御を使用して Key Vault のキー、証明書、シークレットへのアクセスを提供する」を参照してください。
アクセスポリシーを使用するには:
- [アクセス ポリシー] で、 [アクセス許可モデル] を [コンテナー アクセス ポリシー] に設定します。
- シークレットに対する Get 権限と List 権限を設定します。
詳細については、「 Key Vault アクセス ポリシーを割り当てる (レガシ)」を参照してください。
キー コンテナーのネットワーク見通し内アクセスを設定するには、 [ 信頼された Microsoft サービスにこのファイアウォールのバイパスを許可しますか?] を [ はい] に設定します。
データベースに対するデータベース・ユーザーのバックアップ権限
pgAdmin ツールで次のクエリを実行します。
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$
注
バックアップを既に構成したデータベースが UserErrorMissingDBPermissions
で失敗する場合は、 このトラブルシューティング・ガイド を参照して、問題の解決に役立ててください。
pgAdminツールを使用する
pgAdminツール をまだお持ちでない場合は、ダウンロードしてください。 このツールを使用して Azure Database for PostgreSQL サーバーに接続できます。 また、データベースと新しいユーザーをこのサーバーに追加することもできます。
任意の名前で新しいサーバーを作成します。 ホスト名/アドレスを入力します。 これは、Azure portal の Azure PostgreSQL リソース ビューに表示される [サーバー名 ] の値と同じです。
接続が通過するファイアウォールルールに現在のクライアント ID アドレスを追加してください。
新しいデータベースとデータベース ユーザーをサーバーに追加できます。 データベース・ユーザーの場合は、「 ログイン/グループ・ロール 」を選択してロールを追加します。 「 ログインできますか? 」が 「はい」に設定されていることを確認します。