Schützen einer Datenbank und eines Servers

Abgeschlossen

Die Datenbankauthentifizierung und Autorisierung stellen fest, wie Sie Ihre Open Source-Datenbank traditionell schützen würden. Das Hosten dieser Datenbank in Azure bietet Ihnen die Möglichkeit, diesen Schutz zu erhöhen.

Als Datenbankentwickler für Adventureworks möchten Sie den Schutz Ihrer Unternehmen Azure Database für PostgreSQL verbessern.

In dieser Einheit sehen Sie, was zusätzlicher Schutz möglich ist, nachdem Sie Ihre lokale PostgreSQL-Datenbank zu Azure migriert haben.

Ihre Daten schützen

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

Azure bietet jedoch zusätzlichen Schutz für Ihre Server. Dieser Schutz wird auf drei Ebenen betrieben:

  1. Er steuert den Zugriff auf den Server, filtert Datenverkehr aus unbekannten oder nicht vertrauenswürdigen Quellen.
  2. Es schützt Datenverkehr, um sicherzustellen, dass er nicht bearbeitet oder abgefangen werden kann, wenn er von einem Client zum Server und wieder zurück fließt.
  3. Er schützt den Server selbst vor allgemeinen externen Bedrohungen.

In den folgenden Abschnitten werden diese Elemente ausführlicher erläutert.

Filtern von Datenverkehr mit Firewallregeln

Azure-Datenbank für MySQL oder PostgreSQL wird in einer firewall ausgeführt, die von Microsoft verwaltet wird. Standardmäßig kann nichts durch diese Firewall passieren. Sie fügen Firewallregeln hinzu, um den Datenverkehr von bestimmten IP-Adressenblöcken zu aktivieren, wie in den vorherigen Modulen beschrieben. Es wird empfohlen, die IP-Adressen, die in häufigen Intervallen Datenverkehr senden dürfen, aktiv zu überprüfen und die IP-Adressen für Clients zu entfernen, die nicht mehr erforderlich sind.

Wenn Sie andere Azure-Dienste ausführen, die Ihre Datenbanken verwenden müssen, müssen Sie die Firewall für diese Dienste öffnen. Wählen Sie im Azure-Portal auf der Seite Verbindungssicherheit für Ihre Azure-Datenbank für MySQL- oder PostgreSQL-Dienst den Zugriff auf Azure-Dienste Aktionseinstellung zulassen, sodass sie ONist.

Bild mit hervorhebung der Aktionseinstellung

Hinweis

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

In einigen Fällen ist das Öffnen Ihres Servers für alle Azure-Dienste möglicherweise zu hoch. Wenn Sie die versionen "General Purpose" oder "Memory Optimized" von Azure Database für MySQL oder PostgreSQL ausführen, filtern Sie den Datenverkehr auf ebene des virtuellen Netzwerks mithilfe von Azure virtual network rules. Mithilfe einer virtuellen Netzwerkregel können Sie Datenverkehr zulassen, der aus Ihren eigenen virtuellen Netzwerken stammt, um auf den Server zuzugreifen. Datenverkehr von anderen Netzwerken wird blockiert.

Abbildung der virtuellen Netzwerkregeln für Azure-Datenbank für MySQL oder PostgreSQL

Wenn Sie Firewallwartungsaufgaben skripten müssen, verwenden Sie die Azure CLI. In den folgenden Beispielen, die Firewallregeln hinzufügen, löschen und anzeigen, verwenden Sie den befehl az mysql, der Vorgänge für Azure Database for MySQL ausführt. Wenn Sie einen PostgreSQL-Befehl ausführen, verwenden Sie stattdessen die entsprechenden az postgres Befehle– die Parameter sind identisch:

Zugriff auf Clients im Bereich 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 der Details von FirewallRule1

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

Entfernen Sie 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 einem start-ip-address und end-ip-address Wert von 0.0.0.0.

Mithilfe der az msysql server vnet-rule Befehle erstellen und verwalten Sie virtuelle Netzwerkregeln auf ähnliche Weise.

Schützen des Datenverkehrs mithilfe von SSL

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

Bild mit hervorhebung der Einstellung

Schützen des Servers mit Azure Advanced Threat Protection

Advanced Threat Protection ist eine zusätzliche Sicherheitsebene, die von Azure bereitgestellt wird. Advanced Threat Protection überwacht den Zugriff auf Ihren Server und sucht nach Mustern ungewöhnlicher oder potenziell böswilliger Verhaltensweisen. Wenn ein solches Verhalten erkannt wird, ordnen Sie an, dass eine Benachrichtigung an angegebene E-Mail-Adressen gesendet wird.

Zu den erkannten Mustern ungewöhnlicher Aktivitäten gehören:

  • Zugriff von einem unerwarteten oder ungewöhnlichen Ort aus.
  • Zugriff über ein ungewöhnliches Azure-Rechenzentrum.
  • Zugriff von einer Anwendung, die möglicherweise schädlich ist, z. B. ein erkanntes Angriffstool.
  • Eine große Anzahl fehlgeschlagener Anmeldungen in schneller Folge, was auf einen möglichen Brute-Force-Angriff hinweist.

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

Abbildung der Seite

Sichern und Wiederherstellen eines Servers

Der Azure-Datenbank für MySQL- oder PostgreSQL-Dienst sichert Ihren Server automatisch gemäß dem folgenden Zeitplan:

  • Eine vollständige Sicherung wird wöchentlich mit der ersten vollständigen Sicherung durchgeführt, sobald der Server erstellt wird.
  • Eine differenzielle Sicherung wird zweimal täglich durchgeführt.
  • Eine Transaktionsprotokollsicherung wird alle fünf Minuten ausgeführt.

Der gesamte Server wird gesichert. Sie können einzelne Datenbanken nicht sichern, und Sie können eine Sicherung nicht manuell erzwingen.

Festlegen von Sicherungsoptionen

Sie verwenden diese Sicherungen, um sie zu einem beliebigen Zeitpunkt wiederherzustellen, für den Sie die Sicherungsdateien aufbewahrt haben. Standardmäßig werden Sicherungen sieben Tage lang aufbewahrt, sie können jedoch bis zu 35 Tage lang aufbewahrt werden. Außerdem geben Sie an, wie die Sicherungen gespeichert werden– lokal redundante Sicherungen werden in derselben Region wie der Server gespeichert, und georedundante Sicherungen werden in Rechenzentren in anderen Regionen kopiert. Die georedundante Option ist nur für Server in den Preisstufen "Allgemeinzweck" und "Speicheroptimiert" verfügbar. Sie legen die Sicherungsoptionen auf der Seite Preisstufen für Ihren Server im Azure-Portal fest:

Abbildung des Abschnitts

Wiederherstellen eines Servers

Azure-Datenbank für MySQL oder PostgreSQL unterstützt zwei Arten von Serverwiederherstellungsvorgängen – Punkt-in-Zeit und Geowiederherstellung. In beiden Fällen erstellt die Wiederherstellungsaktion einen neuen Server. Der ursprüngliche Server bleibt verfügbar. Wenn Anwendungen die wiederhergestellten Daten verwenden sollen, müssen Sie sie neu konfigurieren, um den neuen Server zu verwenden. Darüber hinaus müssen Sie daran denken, die Firewall des neuen Servers zu öffnen, damit Clients und Dienste eine Verbindung herstellen können.

Wichtig

Sie können keinen Server wiederherstellen, der gelöscht wurde. Wenn Sie einen Server löschen, löschen Sie auch die damit verbundenen Sicherungen.

Zeitpunktwiederherstellung

Eine Point-in-Time-Wiederherstellung erstellt einen neuen Server mithilfe der Sicherungen vom ursprünglichen Server und führt den Server an die angegebene Zeit weiter. Sie initiieren einen Wiederherstellungsvorgang mithilfe des Befehls Wiederherstellen auf der Symbolleiste auf der Seite Übersicht für Ihren Server im Azure-Portal. Sie werden zur Eingabe des Namens eines neuen Servers und zu einem bestimmten Zeitpunkt aufgefordert.

Abbildung der Point-in-Time-Wiederherstellungsseite für Azure-Datenbank für MySQL oder PostgreSQL

Die Azure CLI unterstützt die az mysql/postgres server restoreBefehle, wenn Sie Wiederherstellenvorgänge über die 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

Eine Geowiederherstellung ist eine vollständige Wiederherstellung eines Servers, wobei eine Sicherung im georedundanten Speicher verwendet wird. Wenn Sie einen neuen Server mithilfe des Azure-Portals erstellen, geben Sie eine georedundante Sicherung als Datenquelle an. Wenn der neue Server erstellt wird, wird er mit den Datenbanken in dieser Sicherung aufgefüllt.

Abbildung des Abschnitts

Die Azure CLI stellt die az mysql/postgres server georestore Befehle bereit, um eine Geowiederherstellung über die Befehlszeile ausführen zu können.

Es kann bis zu einer Stunde dauern, bis eine georedundante Sicherung in eine andere Region repliziert wird. Dies kann zu einem Verlust von bis zu einem Stundenwert von Daten führen, wenn Sie eine Geowiederherstellung aus einer anderen Region durchführen müssen.