次の方法で共有


Azure Database for PostgreSQL バックアップとは

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

  • 個々のデータベース レベルで、顧客がコントロールするスケジュールされたバックアップとオンデマンド バックアップ。
  • 任意の Azure Database for PostgreSQL サーバーまたは任意の種類の BLOB ストレージにデータベース レベルで復元します。
  • すべての操作とジョブの一元的な監視。
  • 個別のセキュリティ ドメインと障害ドメインにバックアップの保存。 ソース サーバーまたはサブスクリプションが侵害された場合、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 シングルサーバデータベースのバックアップは、バックアップポリシーに従って保持されます。 復元ポイントは、保持期間の有効期限が切れた後にのみ削除されます。 復元ポイントを無期限に保持するか、リテンション期間の有効期限が切れる前に復元ポイントを削除するには、 回復性コンソールを参照してください。

請求の変更

2025 年 3 月 31 日以降、PostgreSQL の単一サーバー データベースを保護するための保護インスタンス (PI) 料金は請求されなくなりました。 ただし、バックアップの保存料金は引き続き適用されます。 ストレージ料金を回避するには、回復性からすべての復元ポイントを削除します。

Azure Backup は、保有期間の有効期限が切れた後でも、最後の復元ポイントを保持します。 この機能により、将来の使用のために最後の復元ポイントにアクセスできるようになります。 最後の復元ポイントは手動でのみ削除できます。 最後の復元ポイントを削除してストレージ料金を回避する場合は、データベース保護を停止します

復元の変更点

PostgreSQL の単一サーバー データベースは、[ファイルとして復元] を使用して復元できます。 次に、復元されたファイルから 新しい PostgreSQL フレキシブル サーバーを手動で作成 する必要があります。

[データベースとして復元] オプションは 2025 年 3 月 28 日現在サポートされていませんが、[ファイルとして復元] は引き続きサポートされています。

バックアップ プロセス

  1. バックアップ管理者は、バックアップする PostgreSQL データベースを指定できます。 指定されたデータベースに接続するために必要な資格情報を格納する Azure Key Vault の詳細を指定することもできます。 データベース管理者は、これらの資格情報を Key Vault に安全にシードします。

  2. Azure Backup Server は、指定された Azure Database for PostgreSQL サーバーで認証するための適切なアクセス許可と、データベースをバックアップするためのアクセス許可があるかどうかを検証します。

  3. Azure Backup は、保護された Azure Database for PostgreSQL サーバーと通信するために、バックアップ拡張機能がインストールされている worker ロール (仮想マシン) をスピン アップします。 この拡張機能は、コーディネーターと PostgreSQL プラグインで構成されます。 コーディネーターは、バックアップや復元などのさまざまな操作のワークフローをトリガーします。 プラグインは実際のデータフローを管理します。

  4. スケジュールされた時刻になると、コーディネーターは、pg_dump (カスタム) を使用して Azure Database for PostgreSQL サーバーからバックアップ データのストリーミングを開始するようにプラグインに指示します。

  5. このプラグインによって、データが Azure Backup マネージド ストレージ アカウント (Azure Backup ボールトによってマスクされます) に直接送信されるため、ステージング場所は不要になります。 このデータは Microsoft マネージド キーで暗号化されます。 Azure Backup サービスでは、データがストレージ アカウントに格納されます。

バックアップ プロセスを示す図。

Azure Database for PostgreSQL サーバーを使用した Azure Backup 認証

Azure Backup は、Azure からの厳密なセキュリティ ガイドラインに準拠しています。 バックアップするリソースに対するアクセス許可は想定されません。 ユーザーは、これらのアクセス許可を明示的に付与する必要があります。

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

Azure Backup サービスは、各バックアップの実行中に Azure Database for PostgreSQL サーバーに接続する必要があります。 この接続には、データベースに対応するユーザー名とパスワード (または接続文字列) が使用されますが、これらの資格情報は Azure Backup と一緒には格納されません。 代わりに、データベース管理者はこれらの資格情報を [シークレットとして Azure Key Vault] 内に安全にシード処理する必要があります。

ワークロード管理者は、資格情報の管理とローテーションを担当します。 Azure Backup は、バックアップを作成するために、キー コンテナーから最新のシークレットの詳細を呼び出します。

ワークロードまたはデータベース フローを示す図。

PostgreSQL データベースのバックアップに必要な権限

  1. Azure Backup ボールトのマネージド ID に対して、次のアクセス許可を付与します。

    • Azure Database for PostgreSQL サーバーでの閲覧者アクセス権。
    • Key Vault シークレット Key Vault に対するユーザー アクセス (シークレットに対するアクセス許可の取得一覧表示 )。
  2. 次の場所に対するネットワーク通信経路アクセス権:

    • Azure Database for PostgreSQL サーバー: [Azure サービスへのアクセスを許可する][はい] に設定します。
    • Key Vault: [信頼された Microsoft サービスを許可する][はい] に設定します。
  3. データベースに対するデータベース ユーザーのバックアップ権限を設定します。

バックアップ管理者として目的のリソースに対する書き込みアクセス権がある場合は、バックアップの構成 フロー内で 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 サーバーへの適切な一連のアクセス許可が付与されます。

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

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

Azure Backup に必要なすべてのアクセス許可を付与するには、次の手順を使用します。

Azure Database for PostgreSQL サーバーに対するアクセス許可

  1. Azure Database for PostgreSQL サーバー上のマネージド ID に対して、Azure Backup コンテナーの 閲覧者アクセス権を設定します。

    Azure Database for PostgreSQL サーバーに対して Azure Backup コンテナーの M S I 閲覧者アクセス権を設定するオプションを示すスクリーンショット。

  2. [Azure サービスへのアクセス許可] フラグを [はい] に設定することにより、Azure Database for PostgreSQL サーバーでのネットワーク通信経路アクセス権を設定します。

    Azure Database for PostgreSQL サーバーでネットワーク通信経路アクセスを設定するオプションを示すスクリーンショット。

キー コンテナーに対するアクセス許可

  1. Azure Backup コンテナーの [キー コンテナー シークレット ユーザー] アクセスを、キー コンテナーのマネージド ID に設定します (シークレットに対する GetList のアクセス許可)。 アクセス許可を割り当てるには、ロールの割り当てまたはアクセス ポリシーを使用します。 両方のオプションを使用してアクセス許可を追加する必要はありません。これは役に立たないためです。

    • Azure ロールベースのアクセス制御 (Azure RBAC) 承認を使用するには:

      1. [アクセス ポリシー] で、[アクセス許可モデル][Azure ロールベースのアクセス制御] に設定します。

        キー コンテナー シークレット ユーザー アクセスを提供するオプションを示すスクリーンショット。

      2. [アクセス制御 (IAM)] で、Azure Backup コンテナーの キー コンテナー シークレット ユーザーに、キー コンテナーのマネージド ID に対するアクセス権を付与します。 そのロールのベアラーは、シークレットを読み取ることができます。

        Azure Backup ボールトの MSI Key Vault シークレット ユーザーのアクセス権をキー コンテナーに付与するためのオプションを示すスクリーンショット。

      詳細については、「 Azure ロールベースのアクセス制御を使用して Key Vault のキー、証明書、シークレットへのアクセスを提供する」を参照してください。

    • アクセスポリシーを使用するには:

      1. [アクセス ポリシー] で、 [アクセス許可モデル][コンテナー アクセス ポリシー] に設定します。
      2. シークレットに対する Get 権限と List 権限を設定します。

      アクセス ポリシーを使用してアクセス許可を付与するオプションを示すスクリーンショット。

      詳細については、「Key Vault アクセス ポリシーを割り当てる (レガシ)」を参照してください。

  2. キー コンテナーのネットワーク見通し内アクセスを設定するには、[信頼された Microsoft サービスにこのファイアウォールのバイパスを許可しますか?][はい] に設定します。

    キー コンテナーでのネットワーク通信経路アクセス権のために信頼された 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 サーバーに接続できます。 また、データベースと新しいユーザーをこのサーバーに追加することもできます。

PG 管理ツールを使用して Azure Database for PostgreSQL サーバーに接続するプロセスを示すスクリーンショット。

任意の名前で新しいサーバーを作成します。 ホスト名/アドレスを入力します。 これは、Azure portal の Azure PostgreSQL リソース ビューに表示される [サーバー名] の値と同じです。

PG 管理ツールを使用して新しいサーバーを作成するためのオプションを示すスクリーンショット。

Azure portal の Azure PostgreSQL リソース ビュー (サーバー名を含む) を示すスクリーンショット。

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

現在のクライアント ID アドレスをファイアウォール規則に追加するリンクを示すスクリーンショット。

新しいデータベースとデータベース ユーザーをサーバーに追加できます。 データベース ユーザーの場合は、[ログイン/グループ ロール] を選択してロールを追加します。 [ログインできますか?][はい] に設定されていることを確認します。

新しいデータベースとデータベース ユーザーをサーバーに追加するためのメニュー選択を示すスクリーンショット。

データベース ユーザーの新しいログイン ロールまたはグループ ロールを追加するためのメニュー選択を示すスクリーンショット。

ログインを許可するためのトグルを [はい] に設定したスクリーンショット。