Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Viele mehrinstanzenfähige Lösungen in Azure verwenden das Open-Source-Managementsystem für relationale Datenbanken Azure Database for PostgreSQL. In diesem Artikel werden die Features von Azure Database for PostgreSQL beschrieben, die nützlich sind, wenn Sie mit multitenant-Systemen arbeiten. Der Artikel enthält auch Links zu Anleitungen und Beispielen für die Verwendung von Azure Database for PostgreSQL in einer Multitenant-Lösung.
Bereitstellungsoptionen
Die folgenden Optionen stehen für Azure Database for PostgreSQL zur Verfügung und eignen sich für die Verwendung mit Mehrinstanzenanwendungen:
Azure Database for PostgreSQL ist eine gute Wahl für die meisten mandantenbasierten Bereitstellungen, die nicht die hohe Skalierbarkeit erfordern, die Azure Cosmos DB für PostgreSQL bietet.
Azure Database for PostgreSQL elastische Cluster bietet eine horizontale Skalierung innerhalb eines verwalteten Diensts. Es eignet sich für mehrinstanzenfähige Anwendungen, die von einigen Mandanten auf eine hohe Anzahl von Mandanten skaliert werden müssen.
Azure Cosmos DB für PostgreSQL ist ein von Azure verwalteter Datenbankdienst, der für Lösungen entwickelt wurde, die ein hohes Maß an Skalierung erfordern, z. B. multitenant-Anwendungen. Dieser Dienst ist Teil der Azure Cosmos DB-Produktfamilie.
Wichtig
Azure Cosmos DB für PostgreSQL befindet sich auf einem Ruhestandspfad und wird nicht mehr für neue Projekte empfohlen.
Azure-Datenbank für PostgreSQL-Features, die mehrinstanzenfähige Funktionen unterstützen
Wenn Sie Azure Database for PostgreSQL verwenden, um eine mehrinstanzenfähige Anwendung zu erstellen, können die folgenden Features Ihre Lösung verbessern.
Hinweis
Einige Features sind nur in bestimmten Bereitstellungsoptionen verfügbar. In den folgenden Anleitungen wird beschrieben, welche Features verfügbar sind.
Sicherheit auf Zeilenebene
Sicherheit auf Zeilenebene ist nützlich, um die Isolation auf Mandantenebene zu erzwingen, wenn Sie geteilte Tabellen verwenden. In PostgreSQL implementieren Sie die Sicherheit auf Zeilenebene, indem Sie Zeilensicherheitsrichtlinien auf Tabellen anwenden, um den Zugriff auf Zeilen nach Mandant einzuschränken.
Die Implementierung der Sicherheit auf Zeilenebene in einer Tabelle kann sich auf die Leistung auswirken. Möglicherweise müssen Sie andere Indizes für Tabellen erstellen, für die die Sicherheit auf Zeilenebene aktiviert ist, um sicherzustellen, dass die Leistung nicht beeinträchtigt wird. Wenn Sie die Sicherheit auf Zeilenebene verwenden, ist es wichtig, Leistungstesttechniken zu verwenden, um zu überprüfen, ob Ihre Workload Ihre grundlegenden Leistungsanforderungen erfüllt.
Weitere Informationen zur Sicherheit auf Zeilenebene finden Sie unter Access-Verwaltung für Azure-Datenbank für PostgreSQL.
Mandantenkontext für Sicherheit auf Zeilenebene
Sicherheitsrichtlinien auf Zeilenebene erfordern Zugriff auf den aktuellen Mandantenbezeichner. Azure Database for PostgreSQL bietet zwei Erweiterungen zur Verwaltung des Mandantenkontexts:
- session_variable: Stellt Sitzungsvariablen bereit, die Sie zum Speichern und Abrufen des Mandantenbezeichners innerhalb einer Sitzung verwenden können. Verwenden Sie diese Variablen in Ihren Sicherheitsrichtlinien auf Zeilenebene.
- login_hook: Führt eine Funktion zur Anmeldezeit aus. Verwenden Sie diese Erweiterung, um den Mandantenkontext automatisch festzulegen, wenn eine Verbindung hergestellt wird.
Weitere Informationen finden Sie unter Extensions und Erweiterungsversionen für Azure Database for PostgreSQL.
Horizontale Skalierung mit Sharding
Mit dem Shardingmuster können Sie Ihre Workload auf mehrere Datenbanken oder Datenbankserver skalieren.
Lösungen, die ein hohes Maß an Skalierung benötigen, können Azure Cosmos DB für PostgreSQL verwenden. Dieser Bereitstellungsmodus ermöglicht das horizontale Sharding von Mandanten über mehrere Server oder Knoten hinweg. Verwenden Sie verteilte Tabellen in mehrinstanzenfähigen Datenbanken, um sicherzustellen, dass alle Daten für einen Mandanten auf demselben Knoten gespeichert sind. Dieser Ansatz verbessert die Abfrageleistung.
Weitere Informationen finden Sie in den folgenden Artikeln:
- Entwerfen einer mehrinstanzenübergreifenden Datenbank mithilfe von Azure Cosmos DB für PostgreSQL
- Verteilte Tabellen
- Auswählen von Verteilungsspalten
- Verwenden von Citus für Mehrinstanzenanwendungen
Elastische Cluster
Elastische Cluster sind ein Feature von Azure Database for PostgreSQL. Sie bieten horizontale Skalierungsfunktionen innerhalb eines einzelnen verwalteten Diensts. Diese Bereitstellungsoption verwendet verteilte Tabellenfunktionen für mehrinstanzenfähige Workloads, die Skalierungsfunktionen erfordern.
In Multitenant-Lösungen ermöglichen elastische Cluster die Aufteilung von Mandantendaten über mehrere Knoten hinweg. Elastische Cluster unterstützen zwei Shardingmodelle:
- Zeilenbasiertes Sharding: Sie können Tabellen anhand der Mandanten-ID verteilen, um sicherzustellen, dass Mandantendaten auf bestimmten Knoten zusammengeführt werden. Dieser Ansatz kann die Abfrageleistung für mandantenspezifische Abfragen verbessern, erfordert jedoch, dass Abfragen die Verteilungsspalte enthalten.
- Schemabasiertes Sharding: Sie können Mandanten mithilfe eines separaten Schemas pro Mandant isolieren. Dieser Ansatz eignet sich ideal für ISVs, die Anwendungen bereitstellen, die keine Abfrageänderungen durchlaufen können, um zeilenbasierte sharding zu unterstützen. Schemabasiertes Sharding eignet sich gut für Workloads, die zwischen 1 und 10.000 Mandanten haben.
Weitere Informationen finden Sie in den folgenden Artikeln:
Verbindungspooling
Postgres verwendet ein prozessbasiertes Modell für Verbindungen. Dieses Modell macht es ineffizient, eine große Anzahl von Verbindungen im Leerlauf beizubehalten. Einige mehrinstanzenfähige Architekturen erfordern viele aktive Verbindungen, die sich negativ auf die Leistung des Postgres-Servers auswirken.
Verbindungspooling über PgBouncer wird standardmäßig in Azure Database for PostgreSQL installiert.
Weitere Informationen finden Sie in den folgenden Artikeln:
- PgBouncer in Azure Database for PostgreSQL
- Verbindungs-Pooling in Azure Cosmos DB für PostgreSQL
- Strategie für Connection-Pooling bei Azure-Datenbank für PostgreSQL mit PgBouncer
Microsoft Entra-Authentifizierung
Azure Database for PostgreSQL unterstützt die Verbindungsauthentifizierung mithilfe von Microsoft Entra ID. Mit diesem Feature können Anwendungsworkloads in einer mehrinstanzenfähigen Umgebung mithilfe eines mandantenspezifischen Dienstprinzipals oder einer verwalteten Identität bei der Datenbank authentifiziert werden. Der Datenbankzugriff kann auf einen einzelnen Mandanten erweitert werden. Indem Sie die Authentifizierung von Microsoft Entra ID zusammen mit mandantenspezifischen Richtlinien für die Sicherheit auf Zeilenebene nutzen, senken Sie das Risiko, dass eine Anwendung aus einer mehrinstanzenfähigen Datenbank Zugriff auf die Daten eines anderen Mandaten erlangt.
Weitere Informationen finden Sie in den folgenden Artikeln:
- Microsoft Entra-Authentifizierung in Azure-Datenbank für PostgreSQL
- Verbinden mit verwalteter Identität zu Azure Database for PostgreSQL
Azure Confidential Computing
Azure Database for PostgreSQL unterstützt Azure vertraulichen Computing über vertrauenswürdige Ausführungsumgebungen (TEEs), die hardwarebasierten Schutz für verwendete Daten bieten. Dieses Feature schützt Mandantendaten vor unbefugtem Zugriff durch das Betriebssystem, den Hypervisor oder andere Anwendungen.
Für multitenantische Lösungen, die vertrauliche Daten verarbeiten, bietet vertrauliches Computing während der Verarbeitung Schutz auf Hardwareebene. Verwenden Sie vertrauliches Computing, wenn Mandanten strenge Datenschutzanforderungen oder gesetzliche Complianceanforderungen haben oder wenn Sie sicherstellen müssen, dass der Anwendungsanbieter nicht auf Mandantendaten zugreifen kann.
Weitere Informationen finden Sie unter Azure vertrauliches Rechnen für Azure Database for PostgreSQL.
Verschlüsselung
Daten, die in Azure Database for PostgreSQL gespeichert sind, werden standardmäßig mithilfe von Microsoft verwalteten Schlüsseln verschlüsselt, aber Sie können auch kundenverwaltete Schlüssel (CMKs) verwenden, um Mandanten die Angabe ihrer eigenen Verschlüsselungsschlüssel zu ermöglichen.
Wenn Sie CMKs verwenden, können Sie Ihre eigenen Verschlüsselungsschlüssel bereitstellen, die in Azure Key Vault gespeichert sind. In mehrinstanzenfähigen Umgebungen können Sie mit diesem Ansatz unterschiedliche Verschlüsselungsschlüssel für unterschiedliche Mandanten verwenden, auch wenn ihre Daten auf demselben Datenbankserver gespeichert sind. Diese Funktion bietet Mandanten auch die Kontrolle über ihre eigenen Verschlüsselungsschlüssel. Wenn sich ein Mandant entscheidet, sein Konto zu deaktivieren, stellt das Löschen des zugehörigen Schlüssels sicher, dass auf ihre Daten nicht mehr zugegriffen werden kann.
Azure Database for PostgreSQL unterstützt automatische Aktualisierungen der Schlüsselversionen für CMKs. Dieses Feature wird in Key Vault automatisch nach der Rotation auf neue Schlüsselversionen umgestellt und erfordert keine manuelle Verwaltung von Schlüsselversionen. In mehrinstanzenfähigen Umgebungen, in denen die Einhaltung gesetzlicher Vorschriften eine regelmäßige Schlüsseldrehung erfordert, reduziert diese Automatisierung manuelle Betriebsaufgaben und verwaltet den Datenschutz ohne Dienstunterbrechung.
Beitragende
Microsoft verwaltet diesen Artikel. Die folgenden Mitwirkenden haben diesen Artikel geschrieben.
Hauptautor:
- Daniel Scott-Raynsford | Partner Solution Architect, Data & AI
Andere Mitwirkende:
John Downs | Principal Software Engineer, Azure Patterns & Practices- Arsen Vladimirskiy | Principal Customer Engineer, FastTrack für Azure
- Paul Burpo | Principal Customer Engineer, FastTrack für Azure ISVs
- Assaf Fraenkel | Senior Engineer/Data Architect, Azure FastTrack für ISVs und Start-ups
Um nicht-öffentliche LinkedIn-Profile anzuzeigen, melden Sie sich bei LinkedIn an.