Informationen zur Sicherung von Azure Database for PostgreSQL

Azure Backup und Azure Database Services wurden zusammengeführt, um eine Sicherungslösung für Unternehmen mit Azure Database for PostgreSQL-Servern zu entwickeln, die Sicherungen für bis zu 10 Jahre aufbewahrt. Neben der langfristigen Aufbewahrung bietet die Lösung die folgenden Funktionen:

  • Kundenseitig gesteuerte, geplante und bedarfsorientierte Sicherungen der einzelnen Datenbanken.
  • Wiederherstellungen auf Datenbankebene auf einem beliebigen PostgreSQL-Server oder in einem beliebigen Blobspeicher.
  • Zentrale Überwachung aller Vorgänge und Aufträge.
  • Sicherungen werden in separaten Sicherheits- und Fehlerdomänen gespeichert. Wenn der Quellserver oder das Abonnement auf irgendeine Weise kompromittiert wird, bleiben die Sicherungen im Azure Backup-Tresor (in von Azure Backup verwalteten Speicherkonten) sicher.
  • Die Verwendung von pg_dump ermöglicht eine größere Flexibilität bei Wiederherstellungen. Dadurch können Sie Wiederherstellungen über Datenbankversionen hinweg durchführen.

Sie können diese Lösung unabhängig oder zusätzlich zur nativen Sicherungslösung verwenden, die von Azure PostgreSQL angeboten wird und die eine Aufbewahrungsdauer von bis zu 35 Tagen ermöglicht. Die native Lösung eignet sich für operative Wiederherstellungen, wenn Sie z. B. die neuesten Sicherungen wiederherstellen möchten. Die Azure Backup-Lösung hilft Ihnen bei der Erfüllung Ihrer Konformitätsanforderungen sowie bei genaueren und flexibleren Sicherungen/Wiederherstellungen.

Sicherungsprozess

  1. Als Sicherungsadministrator können Sie die Azure PostgreSQL-Datenbanken angeben, die Sie sichern möchten. Darüber hinaus können Sie auch die Details des Azure Key Vault angeben, in dem die Anmeldeinformationen gespeichert werden, die zum Herstellen einer Verbindung mit den angegebenen Datenbanken erforderlich sind. Diese Anmeldeinformationen werden vom Datenbankadministrator im Azure Key Vault per Seeding sicher verwaltet werden.
  2. Der Sicherungsdienst überprüft dann, ob er über die entsprechenden Berechtigungen zum Authentifizieren beim angegebenen PostgreSQL-Server und zum Sichern seiner Datenbanken verfügt.
  3. Azure Backup erstellt eine Workerrolle (VM) mit einer darin installierten Sicherungserweiterung, um mit dem geschützten PostgreSQL-Server zu kommunizieren. Diese Erweiterung besteht aus einem Koordinator und einem PostgreSQL-Plug-In. Der Koordinator löst Workflows für verschiedene Vorgänge aus, z. B. Sicherung und Wiederherstellung, und das Plug-In verwaltet den eigentlichen Datenfluss.
  4. Zum geplanten Zeitpunkt kommuniziert der Koordinator mit dem Plug-In, damit es das Streaming der Sicherungsdaten vom PostgreSQL-Server mit pg_dump (custom) startet.
  5. Das Plug-In sendet die Daten direkt an die von Azure Backup verwalteten Speicherkonten (maskiert durch den Azure Backup-Tresor), sodass kein Stagingspeicherort erforderlich ist. Die Daten werden mit von Microsoft verwalteten Schlüsseln verschlüsselt und vom Azure Backup-Dienst in Speicherkonten gespeichert.

Diagramm des Sicherungsvorgangs.

Azure Backup-Authentifizierung beim PostgreSQL-Server

Azure Backup befolgt strenge, durch Azure festgelegte Sicherheitsrichtlinien. Es wird nicht davon ausgegangen, dass Berechtigungen für die zu sichernde Ressource vorliegen, sondern diese müssen vom Benutzer explizit erteilt werden.

Schlüsseltresorbasiertes Authentifizierungsmodell

Der Azure Backup-Dienst muss beim Erstellen der einzelnen Sicherungen eine Verbindung mit Azure PostgreSQL herstellen. Zum Herstellen dieser Verbindung wird zwar „Benutzername + Kennwort“ (oder Verbindungszeichenfolge) entsprechend der Datenbank verwendet, diese Anmeldeinformationen werden aber nicht mit Azure Backup gespeichert. Stattdessen müssen diese Anmeldeinformationen vom Datenbankadministrator im Azure Key Vault als Geheimnis per Seeding sicher verwaltet werden. Der Workloadadministrator ist für das Verwalten und Rotieren von Anmeldeinformationen verantwortlich. Azure Backup ruft die neuesten Geheimnisdetails aus dem Schlüsseltresor auf, um die Sicherung zu erstellen.

Diagramm des Workload- oder Datenbankflows.

Satz erforderlicher Berechtigungen für die Azure PostgreSQL-Datenbanksicherung

  1. Erteilen Sie der MSI des Azure Backup-Tresors die folgenden Zugriffsberechtigungen:

    • Zugriff als Leser auf den Azure PostgreSQL-Server.
    • Zugriff als Key Vault-Geheimnisbenutzer (oder die Berechtigungen „get“, „list“ für Geheimnisse) für Azure Key Vault.
  2. Netzwerk-Sichtverbindungszugriff auf:

    • Azure PostgreSQL-Server: Das Flag Zugriff auf Azure-Dienste zulassen muss auf Ja festgelegt sein.
    • Key Vault: Das Flag Vertrauenswürdige Microsoft-Dienste zulassen muss auf Ja festgelegt sein.
  3. Sicherungsberechtigungen des Datenbankbenutzers für die Datenbank

Hinweis

Sie können diese Berechtigungen innerhalb des Flows Sicherung konfigurieren mit einem einzigen Klick gewähren, wenn Sie (der Sicherungsadministrator) über Schreibzugriff auf die vorgesehenen Ressourcen verfügen, oder eine ARM-Vorlage verwenden, wenn Sie nicht über die erforderlichen Berechtigungen verfügen (wenn mehrere Personas beteiligt sind).

Satz erforderlicher Berechtigungen für die Azure PostgreSQL-Datenbankwiederherstellung

Berechtigungen für die Wiederherstellung ähneln denen, die für die Sicherung erforderlich sind, und Sie müssen die Berechtigungen für den PostgreSQL-Zielserver und den zugehörigen Schlüsseltresor erteilen. Diese Berechtigungen können derzeit nur im Flow „Sicherung konfigurieren“ und nicht inline gewährt werden. Daher müssen Sie den Zugriff auf den Postgres-Server und den entsprechenden Schlüsseltresor manuell gewähren.

Stellen Sie außerdem sicher, dass der Datenbankbenutzer (entsprechend den im Schlüsseltresor gespeicherten Anmeldeinformationen) über die folgenden Wiederherstellungsberechtigungen für die Datenbank verfügt:

  • ALTER USER username CREATEDB;
  • Weisen Sie dem Datenbankbenutzer die Rolle azure_pg_admin zu.

Microsoft Entra ID-basiertes Authentifizierungsmodell

Wir hatten zuvor ein anderes Authentifizierungsmodell gestartet, das vollständig auf Microsoft Entra ID basierte. Wir stellen nun jedoch das neue Key Vault-basierte Authentifizierungsmodell (wie oben erläutert) als alternative Option bereit, um den Konfigurationsprozess zu erleichtern.

Laden Sie dieses Dokument herunter, um ein automatisiertes Skript und entsprechende Anweisungen zur Verwendung diese Authentifizierungsmodells zu erhalten. Es erteilt einem Azure PostgreSQL-Server ausreichende Berechtigungen für die Sicherung und Wiederherstellung.

Hinweis

Der gesamte neue konfigurierende Schutz erfolgt nur mit dem neuen Key Vault-Authentifizierungsmodell. Alle vorhandenen Sicherungsinstanzen, die mit der Microsoft Entra ID-basierten Authentifizierung konfiguriert wurden, sind jedoch weiterhin vorhanden, und es werden regelmäßige Sicherungen erstellt. Um diese Sicherungen wiederherzustellen, müssen Sie die Microsoft Entra ID-basierte Authentifizierung befolgen.

Manuelles Gewähren des Zugriffs auf den Azure PostgreSQL-Server und Azure Key Vault

Informationen zum Erteilen aller Zugriffsberechtigungen, die von Azure Backup benötigt werden, finden Sie in den folgenden Abschnitten:

Zugriffsberechtigungen für den Azure PostgreSQL-Server

  1. Legen Sie den Zugriff als Leser für die MSI des Azure Backup-Tresors auf den Azure PostgreSQL-Server fest.

    Screenshot: Option zum Festlegen den Zugriff als „Leser“ für die MSI des Azure Backup-Tresors auf den Azure PostgreSQL-Server

  2. Netzwerk-Sichtverbindungszugriff auf den Azure PostgreSQL-Server: Legen Sie das Flag „Zugriff auf Azure-Dienste zulassen“ auf „Ja“ fest.

    Screenshot: Option zum Festlegen des Netzwerk-Sichtverbindungszugriffs auf den Azure PostgreSQL-Server.

Zugriffsberechtigungen für den (dem PostgreSQL-Server zugeordneten) Azure-Schlüsseltresor

  1. Legen Sie den Zugriff als Key Vault-Geheimnisbenutzer (oder die Berechtigungen get, list für Geheimnisse) der MSI des Azure Backup-Tresors auf das Azure Key Vault-Objekt fest. Zum Zuweisen von Berechtigungen können Sie Rollenzuweisungen oder Zugriffsrichtlinien verwenden. Es ist nicht erforderlich, die Berechtigung mit beiden Optionen hinzuzufügen, da dies nicht hilft.

    Screenshot: Option zum Bereitstellen des Benutzerzugriffs auf das Geheimnis.

    Screenshot: Option zum Erteilen des Zugriffs als „Key Vault-Geheimnisbenutzer“ der MSI des Azure Backup-Tresors auf den Schlüsseltresor

    • Verwenden von Zugriffsrichtlinien (d. h. das Berechtigungsmodell ist auf die Zugriffsrichtlinie des Tresors festgelegt):

      Screenshot: Die Option zum Erteilen von Berechtigungen mithilfe des Berechtigungsmodells ist auf das Key Vault-Zugriffsrichtlinienmodell festgelegt.

  2. Netzwerk-Sichtverbindungszugriff auf den Schlüsseltresor: Legen Sie das Flag Vertrauenswürdige Microsoft-Dienste zulassen auf Ja fest.

    Screenshot: Festlegen des Flags „Vertrauenswürdige Microsoft-Dienste zulassen“ auf „Ja“ für

Sicherungsberechtigungen des Datenbankbenutzers für die Datenbank

Führen Sie die folgende Abfrage im PG admin-Tool aus (ersetzen Sie username durch die ID des Datenbankbenutzers):

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$

)

Hinweis

Wenn eine Datenbank, für die die Sicherung bereits konfiguriert wurde, mit UserErrorMissingDBPermissions fehlschlägt, schlagen Sie bitte in diesem Handbuch zur Problembehandlung nach, um Hilfe bei der Behebung des Problems zu erhalten.

Verwenden des PG admin-Tools

Laden Sie das PG admin-Tool herunter, wenn Sie es noch nicht haben. Mit diesem Tool können Sie eine Verbindung mit dem Azure PostgreSQL-Server herstellen. Außerdem können Sie diesem Server Datenbanken und neue Benutzer hinzufügen.

Screenshot: Prozess zum Herstellen einer Verbindung mit dem Azure PostgreSQL-Server mithilfe des PG-Verwaltungstools

Erstellen Sie einen neuen Server mit einem Namen Ihrer Wahl. Geben Sie den Hostnamen/Adressnamen ein, der mit dem Servernamen identisch ist, der in der Azure PostgreSQL-Ressourcenansicht im Azure-Portal angezeigt wird.

Screenshot: Option zum Erstellen eines neuen Servers mit dem PG admin-Tool

Screenshot: Option zum Eingeben des Hostnamens oder des Adressnamens, der dem Servernamen entspricht.

Stellen Sie sicher, dass Sie den Firewallregeln die aktuelle Client-ID-Adresse hinzufügen, damit die Verbindung hergestellt werden kann.

Screenshot: Prozess zum Hinzufügen der aktuellen Client-ID-Adresse zu den Firewallregeln

Sie können dem Server neue Datenbanken und Datenbankbenutzer hinzufügen. Für Datenbankbenutzer fügen Sie eine neue Anmeldung bzw. Gruppenrollen hinzu. Stellen Sie sicher, dass Kann sich anmelden? auf Jafestgelegt ist.

Screenshot: Prozess zum Hinzufügen neuer Datenbanken und Datenbankbenutzer zum Server.

Screenshot: Prozess zum Hinzufügen einer neuen Anmeldung oder Gruppenrolle für Datenbankbenutzer.

Screenshot: Überprüfen, ob die Option „Kann sich anmelden“ ist auf „Ja“ festgelegt ist.

Nächste Schritte

Sicherung von Azure Database for PostgreSQL