Schützen einer Datenbank und eines Servers

Abgeschlossen

Traditionell werden Open-Source-Datenbanken mit der Datenbankauthentifizierung und -autorisierung geschützt. Durch das Hosten von Datenbanken in Azure haben Sie die Möglichkeit, diesen Schutz zu verbessern.

Als Datenbankentwickler für AdventureWorks möchten Sie den Schutz der Azure Database for PostgreSQL-Datenbanken Ihres Unternehmens verbessern.

In dieser Lerneinheit erfahren Sie, welcher zusätzliche Schutz möglich ist, nachdem Sie Ihre lokale PostgreSQL-Datenbank zu Azure migriert haben.

Daten schützen

PostgreSQL und MySQL verfügen über eigene Authentifizierungs- und Autorisierungsmechanismen, die steuern, welche Benutzer auf Datenbanken zugreifen dürfen und welche Berechtigungen sie für Elemente in diesen Datenbanken haben. Die Benutzer und Berechtigungen sollten Sie weitestgehend wie vor der Migration verwalten. Denken Sie daran, dass Sie Verwaltungstools wie pgAdmin und MySQL Workbench verwenden können, um eine Verbindung mit Servern herzustellen, die in Azure gehostet werden.

Azure bietet jedoch noch zusätzliche Schutzmechanismen für Ihre Server. Dieser Schutz funktioniert auf drei Ebenen:

  1. Steuern des Zugriffs auf den Server und Filtern des Datenverkehrs von unbekannten oder nicht vertrauenswürdigen Quellen
  2. Schützen des Datenverkehrs und Sicherstellen, dass er zwischen Client und Server nicht manipuliert oder abgefangen werden kann
  3. Schützen des Servers selbst vor allgemeinen externen Bedrohungen

In den folgenden Abschnitten werden diese Aspekte ausführlicher erörtert.

Filtern des Datenverkehrs mit Firewallregeln

Azure Database for MySQL oder PostgreSQL wird hinter einer Firewall ausgeführt, die von Microsoft verwaltet wird. Standardmäßig kann nichts diese Firewall passieren. Sie fügen Firewallregeln hinzu, um Datenverkehr aus festgelegten IP-Adressbereichen zu aktivieren, wie bereits in den vorherigen Modulen beschrieben. Sie sollten die IP-Adressen, die Datenverkehr senden dürfen, in regelmäßigen Abständen aktiv überprüfen und die IP-Adressen von Clients entfernen, die nicht mehr benötigt werden.

Wenn Sie andere Azure-Dienste ausführen, die auf Ihre Datenbanken angewiesen sind, müssen Sie die Firewall auch für diese Dienste öffnen. Wählen Sie im Azure-Portal auf der Seite Verbindungssicherheit für Ihren Azure Database for MySQL- oder PostgreSQL-Dienst die Einstellung Zugriff auf Azure-Dienste erlauben aus, um sie auf ON festzulegen.

Image highlighting the Allow access to Azure services action setting in the firewall configuration for Azure Database for MySQL or PostgreSQL

Hinweis

Es kann bis zu fünf Minuten dauern, bis Änderungen an der Firewall aktiv werden.

In einigen Situationen ist das Öffnen des Servers für alle Azure-Dienste möglicherweise zu umfangreich. Wenn Sie die Azure Database for MySQL- oder PostgreSQL-Versionen „Universell“ oder „Arbeitsspeicheroptimiert“ ausführen, filtern Sie den Datenverkehr auf der Ebene des virtuellen Netzwerks mithilfe von Azure Virtual Network-Regeln (VNET-Regeln). Mit einer VNET-Regel können Sie Datenverkehr aus Ihren eigenen virtuellen Netzwerken den Zugriff auf den Server erlauben. Datenverkehr aus anderen Netzwerken wird blockiert.

Image showing the virtual network rules for Azure Database for MySQL or PostgreSQL

Wenn Sie Skripts für Firewallverwaltungsaufgaben erstellen möchten, verwenden Sie die Azure-Befehlszeilenschnittstelle. In den folgenden Beispielen für das Hinzufügen, Löschen und Anzeigen von Firewallregeln wird der Befehl az mysql verwendet, mit dem Vorgänge für Azure Database for MySQL ausgeführt werden. Wenn Sie einen PostgreSQL-Befehl ausführen, verwenden Sie stattdessen die az postgres-Befehle – die Parameter sind identisch:

Zulassen des Zugriffs von Clients im Bereich von 13.83.152.0 bis 13.83.152.15

az mysql server firewall-rule create \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1 \
    --start-ip-address 13.83.152.0 \
    --end-ip-address 13.83.152.15

Auflisten aller Firewallregeln

az mysql server firewall-rule list \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name]

Anzeigen von Details zur Firewallregel „FirewallRule1“

az mysql server firewall-rule show \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Entfernen von „FirewallRule1“. Clients im Adressbereich für diese Regel wird der Zugriff verweigert.

az mysql server firewall-rule delete \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Um den Zugriff auf Azure-Dienste zu ermöglichen, erstellen Sie eine Firewallregel mit dem Wert 0.0.0.0 für start-ip-address und end-ip-address.

Sie können VNET-Regeln auf ähnliche Weise auch mit Befehlen der Form az msysql server vnet-rule erstellen und verwalten.

Schützen von Datenverkehr mithilfe von SSL

Der SSL-Schutz ist für Azure Database for MySQL oder PostgreSQL standardmäßig aktiviert. Sie können SSL im Azure-Portal mithilfe der Einstellung SSL-Verbindung erzwingen auf der Seite Verbindungssicherheit für Ihren Azure Database for MySQL- oder PostgreSQL-Dienst deaktivieren und erneut aktivieren:

Image highlighting the Enforce SSL connection setting on the Connection security page for Azure Database for MySQL or PostgreSQL

Schützen des Servers mithilfe von Azure Advanced Threat Protection

Advanced Threat Protection bildet eine zusätzliche Sicherheitsebene, die von Azure bereitgestellt wird. Advanced Threat Protection überwacht den Zugriff auf Ihren Server und sucht nach Mustern für ungewöhnliches oder potenziell schädliches Verhalten. Falls ein solches Verhalten erkannt wird, können Sie das Senden einer Warnung an angegebene E-Mail-Adressen einrichten.

Die Muster für ungewöhnliche Aktivität umfassen Folgendes:

  • Zugriff von einem unerwarteten oder ungewöhnlichen Standort aus
  • Zugriff über ein ungewöhnliches Azure-Rechenzentrum
  • Zugriff von einer Anwendung, die möglicherweise schädlich ist, z. B. einem bekannten Angriffstool
  • Eine große Anzahl fehlerhafter Anmeldeversuche in kurzer Zeit, die auf einen möglichen Brute-Force-Angriff hinweisen

Sie können Advanced Threat Protection im Azure-Portal auf der Seite Advanced Threat Protection für Ihren Dienst aktivieren:

Image showing the Advanced Threat Protection page for Azure Database for MySQL or PostgreSQL

Sichern und Wiederherstellen von Servern

Beim Azure Database for MySQL- bzw. PostgreSQL-Dienst werden Ihre Server automatisch gemäß dem folgenden Zeitplan gesichert:

  • Eine vollständige Sicherung erfolgt wöchentlich, wobei die erste vollständige Sicherung durchgeführt wird, sobald der Server erstellt wurde.
  • Eine differenzielle Sicherung wird zweimal täglich durchgeführt.
  • Eine Transaktionsprotokollsicherung wird alle fünf Minuten durchgeführt.

Der gesamte Server wird gesichert. Es ist nicht möglich, einzelne Datenbanken zu sichern, und Sie können die Sicherung nicht manuell erzwingen.

Festlegen von Sicherungsoptionen

Mit diesen Sicherungen können Sie eine Wiederherstellung zu jedem beliebigen Zeitpunkt durchführen, für den Sie die Sicherungsdateien aufbewahrt haben. Standardmäßig werden Sicherungen sieben Tage lang aufbewahrt, Sie können sie jedoch bis zu 35 Tage lang aufbewahren. Außerdem geben Sie an, wie die Sicherungen gespeichert werden. Lokal redundante Sicherungen werden innerhalb derselben Region wie der Server gespeichert, und georedundante Sicherungen werden in Rechenzentren in anderen Regionen kopiert. Die Option für georedundante Sicherung ist nur in den Tarifen „Universell“ und „Arbeitsspeicheroptimiert“ verfügbar. Sie legen die Sicherungsoptionen im Azure-Portal auf der Seite Tarife für Ihren Server fest:

Image showing the backup configuration section of the pricing tiers page for Azure Database for MySQL or PostgreSQL

Wiederherstellen eines Servers

Azure Database for MySQL und PostgreSQL unterstützen zwei Arten von Serverwiederherstellungsvorgängen – Zeitpunkt- und Geowiederherstellung. In beiden Fällen wird durch die Wiederherstellungsaktion ein neuer Server erstellt. Der ursprüngliche Server bleibt verfügbar. Wenn Anwendungen die wiederhergestellten Daten verwenden sollen, müssen Sie sie mit dem neuen Server neu konfigurieren. Außerdem müssen Sie daran denken, die Firewall des neuen Servers zu öffnen, damit Clients und Dienste eine Verbindung herstellen können.

Wichtig

Ein Server, der gelöscht wurde, kann nicht wiederhergestellt werden. Wenn Sie einen Server löschen, werden auch die zugehörigen Sicherungen gelöscht.

Wiederherstellung bis zu einem bestimmten Zeitpunkt

Bei einer Zeitpunktwiederherstellung wird mithilfe der Sicherungen des ursprünglichen Servers ein neuer Server erstellt und ein Rollforward des Servers zum angegebenen Zeitpunkt ausgeführt. Sie initiieren einen Wiederherstellungsvorgang im Azure-Portal mithilfe des Befehls Wiederherstellen auf der Symbolleiste der Seite Übersicht für Ihren Server. Sie werden zur Eingabe eines Namens für den neuen Server und eines Zeitpunkts aufgefordert.

Image showing the point-in-time restore page for Azure Database for MySQL or PostgreSQL

Auch die Azure-Befehlszeilenschnittstelle unterstützt die Befehle az mysql/postgres server restore, wenn Sie die Wiederherstellungsvorgänge lieber an der Befehlszeile ausführen möchten. Beispiel:

az mysql server restore \
    --resource-group [resource group name] \
    --name [new Azure Database for MySQL server name] \
    --source-server [original Azure Database for MySQL server name] \
    --restore-point-in-time "2019-10-23T02:10:00+08:00"

Geowiederherstellung

Bei einer Geowiederherstellung handelt es sich um eine vollständige Wiederherstellung eines Servers mithilfe einer Sicherung aus dem georedundanten Speicher. Wenn Sie über das Azure-Portal einen neuen Server erstellen, geben Sie eine georedundante Sicherung als Datenquelle an. Der neue Server wird während der Erstellung mit den Datenbanken aus dieser Sicherung aufgefüllt.

Image showing the server details section when creating an Azure Database for MySQL or PostgreSQL server

Die Azure-Befehlszeilenschnittstelle bietet die Befehle az mysql/postgres server georestore zum Durchführen einer Geowiederherstellung über die Befehlszeile.

Es kann bis zu einer Stunde dauern, bis eine georedundante Sicherung in eine andere Region repliziert wird. Dies könnte dazu führen, dass die Daten von bis zu einer Stunde verloren gehen, wenn Sie eine Geowiederherstellung aus einer anderen Region durchführen müssen.