Übung: Verwalten Ihrer Sicherheit
Sobald Azure SQL-Datenbank auf Netzwerk-, Authentifizierungs- und Datenschutzebene abgesichert ist, müssen Sie lernen, wie die fortlaufende Sicherheitsverwaltung erfolgt. Die Sicherheitsverwaltung umfasst die Überprüfung, Überwachung und Datenklassifizierung.
Überwachung
Die Überwachung kann Ihnen dabei helfen, die gesetzlichen Bestimmungen einzuhalten, die Datenbankaktivität zu verstehen und Einblicke in Abweichungen und Anomalien zu erhalten, die Hinweise auf potenzielle Sicherheitsverstöße darstellen können. In dieser Übung richten Sie das Auditing auf Serverebene ein. Es ist jedoch auch auf Datenbankebene verfügbar.
Als Alternative zu SQL Server Audit gibt es in Azure SQL-Datenbank das Azure SQL-Auditing. Es wird durch SQL Server Audit unterstützt und unterstützt wie SQL Server Überwachungsaktionsgruppen und -aktionen. Das Überprüfungsfeature verfolgt Datenbank- und Serverereignisse nach und schreibt diese in ein Überprüfungsprotokoll in Azure-Speicher, Log Analytics oder eine Azure Event Hubs-Instanz. Wenn Sie auf ein Azure Blob Storage-Konto verweisen, können Sie die Ergebnisse in XEvents-Dateien speichern und analysieren. Mit Log Analytics aktivieren Sie die Möglichkeit, Ihre Protokolle mit der Kusto-Abfragesprache (Kusto Query Language, KQL) abzufragen und die Auditing-Dashboards von Log Analytics zu verwenden.
Konfigurieren der Überwachung
In einer früheren Übung zur Bereitstellung von SQL-Datenbank haben Sie die Überprüfung auf Serverebene eingerichtet, aber sie ist auch auf Datenbankebene verfügbar. In einer zukünftigen Übung erfahren Sie, wie Sie den Zugriff auf die an Azure Blob Storage, KQL und Log Analytics-Dashboards gesendeten Dateien übernehmen und diese verwenden können.
Schließen Sie zum Einrichten eines Log Analytics-Arbeitsbereichs die folgenden Schritte ab:
Geben Sie in der Azure-Portal-Suchleiste Log Analytics ein, und wählen Sie dann Log Analytics-Arbeitsbereiche aus den Ergebnissen aus. Der Bereich Log Analytics-Arbeitsbereiche wird angezeigt.
Klicken Sie auf Erstellen. Das Menü Log Analytics-Arbeitsbereich erstellen wird angezeigt.
Füllen Sie auf der Registerkarte Grundlagen die folgenden Werte für jede Einstellung aus.
Einstellung Wert Projektdetails Subscription Concierge-Abonnement Ressourcengruppe Wählen Sie in der Dropdownliste [Sandbox-Ressourcengruppe] aus.Instanzendetails Name Geben Sie azuresql-la ein. Region Wählen Sie aus der Liste oben den Standort aus, der Ihnen nächsten liegt Mit der kostenlosen Sandbox können Sie Ressourcen in einem Teil der globalen Azure-Regionen erstellen. Wählen Sie eine Region aus der folgenden Liste aus, wenn Sie Ressourcen erstellen:
- USA, Westen 2
- USA Süd Mitte
- USA (Mitte)
- East US
- Europa, Westen
- Asien, Südosten
- Japan, Osten
- Brasilien, Süden
- Australien, Südosten
- Indien, Mitte
Wählen Sie Überprüfen + erstellen aus, warten Sie, bis Ihre Eingaben überprüft wurden, und wählen Sie dann Erstellen aus. Warten Sie, bis die Ressource bereitgestellt wurde.
Wählen Sie Zu Ressource wechseln aus. Der Bereich Übersicht für Ihren Log Analytics-Arbeitsbereich wird angezeigt.
Wechseln Sie im Azure-Portal zu Ihrer Datenbank AdventureWorks.
Wählen Sie im Menü unter Sicherheit die Option Überwachung aus. Überprüfen Sie die Optionen.
Sie können die Überwachung auf Serverebene anwenden. Diese gilt für alle Datenbanken innerhalb des logischen Azure SQL-Datenbank-Servers. Wenn Sie die Überprüfung auch auf Datenbankebene anwenden (was Sie in dieser Lektion tun werden), erfolgen beide Überprüfungen parallel, ohne das die eine die andere überschreibt.
Wählen Sie den Schieberegler zum Enable Azure SQL Auditing (Aktivieren der Überwachung von Azure SQL) aus.
Aktivieren Sie das Kontrollkästchen Speicher, und füllen Sie dann die Pflichtfelder aus:
- Wählen Sie für Abonnement in der Dropdownliste das Concierge-Abonnement aus.
- Wählen Sie für Speicherkonto das Konto aus der Dropdownliste aus, das mit
sql
beginnt, gefolgt von einer zufälligen Zeichenfolge aus Buchstaben und Zahlen. - Der Speicherauthentifizierungstyp sollte als Standardoption für den Speicherzugriffsschlüssel beibehalten werden.
Das Speicherkonto
sql
wird verwendet, um XEvent-Protokolldateien zu erfassen, die als Sammlung von Blobdateien in einem Container mit dem Namen sqldbauditlogs gespeichert werden. In einer späteren Aktivität prüfen Sie den Container, um zu erfahren, wie sich Protokolldateien von Log Analytics unterscheiden.Tipp
Wenn keine Speicherkonten angezeigt werden, erstellen Sie ein neues Konto. Möglicherweise müssen Sie Ihre Seite nach einigen Minuten aktualisieren, bevor es angezeigt wird.
Wenn Sie Ihre Produktionsumgebung überwachen möchten, sollten Sie ein separates Speicherkonto für Überwachungsprotokolle verwenden.
Wählen Sie Erweiterte Eigenschaften aus, um den Abschnitt zu erweitern, und legen Sie die folgenden Konfigurationselemente fest:
- Geben Sie für Aufbewahrung (Tage)7 ein.
- Wählen Sie für SpeicherzugriffsschlüsselPrimary aus.
Hinweis
Wenn Erweiterte Eigenschaften nicht angezeigt wird, wählen Sie auf der Befehlsleiste Speichern aus, und wiederholen Sie dann die Konfigurationsanweisungen für diese Seite.
Aktivieren Sie das Kontrollkästchen Log Analytics, und füllen Sie die Pflichtfelder aus.
- Wählen Sie für Abonnement das Concierge-Abonnement aus der Dropdownliste aus.
- Wählen Sie für Log Analytics den Log Analytics-Arbeitsbereich aus, den Sie zuvor in dieser Übung (asuresql-la) erstellt haben.
Wählen Sie Speichern aus.
Die Verarbeitung der Konfiguration kann einige Minuten dauern.
Sie haben nun die Überwachung für ein Speicherkonto und einen Log Analytics-Arbeitsbereich aktiviert. Später erfahren Sie mehr über die Überwachungsfunktionen in Azure SQL. Sie werden erfahren, wie Sie die Überwachungsprotokolle analysieren können, um alle im Laufe des Moduls vorgenommenen Änderungen sowie einige andere interessante Anwendungsfälle anzuzeigen.
Ledger für Azure SQL-Datenbank
Das Feature Ledger bietet Ihnen manipulationssichere, kryptografische Nachweise der Datenintegrität in Ihrer Datenbank. Dieser Nachweis kann dazu beitragen, den Überwachungsprozess zu optimieren.
Ledger hilft beim Schutz von Daten vor Angreifern oder Benutzern mit umfangreichen Berechtigungen, einschließlich Datenbankadministratoren (Database Administrators, DBAs) sowie System- und Cloudadministratoren. Wie bei einem herkömmlichen Ledger werden Verlaufsdaten beibehalten. Wenn Daten durch eine Transaktion in einer Ledgertabelle geändert werden, wird das Ereignis kryptografisch mit einem SHA-256-Hash versehen. Dabei wird eine Merkle-Baumdatenstruktur verwendet, die einen Stammhash generiert, der alle Zeilen in der Transaktion darstellt. Die von der Datenbank verarbeiteten Transaktionen werden über eine Merkle-Baumdatenstruktur gemeinsam mit einem SHA-256-Hash versehen. Das Ergebnis ist ein Stammhash, der einen -Block bildet. Der Block wird dann mithilfe seines Stammhashes zusammen mit dem Stammhash des vorherigen Blocks als Eingabe für die Hashfunktion mit SHA-256 gehasht. Durch diesen Hashvorgang wird eine Blockchain gebildet. Bei der Aktualisierung einer Zeile in der Datenbank wird der vorherige Wert in einer Verlaufstabelle verwaltet und geschützt. Ledger stellt eine Chronik aller Änderungen bereit, die im Laufe der Zeit an der Datenbank vorgenommen wurden.
Die Ledgerfunktionalität kann Tabellen auf zwei Arten hinzugefügt werden:
- Aktualisierbare Sachtabellen, mit denen Sie Zeilen in Ihren Tabellen aktualisieren und löschen können
- Ledgertabellen nur zum Anfügen, die nur Einfügungen in Ihre Tabellen zulassen
Sowohl aktualisierbare Ledgertabellen als auch Ledgertabellen, die nur Anfügevorgänge unterstützen, bieten Funktionen für Manipulationsbeweis und digitale Forensik.
Übung mit Ledger für Azure SQL-Datenbank
In der Übung zum Erstellen der Instanz von Azure SQL-Datenbank wurde eine Datenbank namens myLedgerDatabase
hinzugefügt und eine Tabelle mit dem Namen Account.Balance
erstellt. In dieser Übung werden Daten eingefügt, Updates für Daten vorgenommen und die Verlaufstabelle und Ledgeransichten abgefragt, um die stattfindende Nachverfolgung und die Beziehung zwischen den Tabellen einzusehen.
Öffnen Sie SSMS, und stellen Sie eine Verbindung mit dem logischen Azure SQL-Datenbank-Server her.
Klicken Sie mit der rechten Maustaste auf die
myLedgerDatabase
-Datenbank, und wählen Sie dann Neue Abfrage aus.Fügen Sie den Namen
Nick Jones
als neuen Kunden mit einem Anfangssaldo von 50 US-Dollar ein.INSERT INTO [Account].[Balance] VALUES (1, 'Jones', 'Nick', 50);
Fügen Sie die Namen
John Smith
,Joe Smith
undMary Michaels
mit einem Anfangssaldo von 500, 30 bzw. 200 US-Dollar ein.INSERT INTO [Account].[Balance] VALUES (2, 'Smith', 'John', 500), (3, 'Smith', 'Joe', 30), (4, 'Michaels', 'Mary', 200);
Zeigen Sie die aktualisierbare Ledgertabelle
[Account].[Balance]
an, und geben Sie die GENERATED ALWAYS-Spalten an, die der Tabelle hinzugefügt wurden. Wählen Sie Ausführen aus, um Ihre Abfrage durchzuführen.SELECT [CustomerID] ,[LastName] ,[FirstName] ,[Balance] ,[ledger_start_transaction_id] ,[ledger_end_transaction_id] ,[ledger_start_sequence_number] ,[ledger_end_sequence_number] FROM [Account].[Balance];
Im Ergebnisfenster werden zunächst die Werte angezeigt, die Sie mit Ihren T-SQL-Befehlen eingefügt haben, sowie die Systemmetadaten, die für die Datenherkunft verwendet werden.
- Die
ledger_start_transaction_id
-Spalte gibt die eindeutige Transaktions-ID an, die der Transaktion zugeordnet ist, mit der die Daten eingefügt wurden. DaJohn
,Joe
undMary
mit derselben Transaktion eingefügt wurden, weisen sie alle dieselbe Transaktions-ID auf. - Die
ledger_start_sequence_number
-Spalte gibt die Reihenfolge an, in der Werte von der Transaktion eingefügt wurden.
- Die
Aktualisieren Sie den Saldo von
Nick
von50
auf100
.UPDATE [Account].[Balance] SET [Balance] = 100 WHERE [CustomerID] = 1;
Zeigen Sie die
[Account].[Balance]
-Ledgeransicht zusammen mit der Transaktions-Ledgersystemansicht an, um Benutzer zu identifizieren, die die Änderungen vorgenommen haben. Wählen Sie Ausführen aus, um die Abfrage durchzuführen.SELECT t.[commit_time] AS [CommitTime] , t.[principal_name] AS [UserName] , l.[CustomerID] , l.[LastName] , l.[FirstName] , l.[Balance] , l.[ledger_operation_type_desc] AS Operation FROM [Account].[Balance_Ledger] l JOIN sys.database_ledger_transactions t ON t.transaction_id = l.ledger_transaction_id ORDER BY t.commit_time DESC;
Der Kontostand von
Nick
wurde in der aktualisierbaren Ledgertabelle erfolgreich in100
geändert.
Die Ledgeransicht zeigt, dass das Aktualisieren der Ledgertabelle einDELETE
der ursprünglichen Zeile mit50
ist. Der Saldo mit einem entsprechendenINSERT
einer neuen Zeile mit100
zeigt den neuen Saldo fürNick
an.
Überwachung
Bei der Überwachung und Verwaltung der Sicherheit gibt es zwei Aspekte:
- Die Azure-Ebene
- Die Datenbank- oder Serverebene
In Azure können Sie Tools wie die Aktivitätsprotokolle und die rollenbasierte Zugriffssteuerung anwenden.
In Ihrer Azure SQL-Datenbank-Instanz können Sie die Azure SQL-Überprüfung konfigurieren und dynamische Verwaltungssichten, Metriken und Warnungen anwenden, um sicherheitsrelevante Ereignisse zu überwachen. Mit sys.event_log
können Sie z. B. die Anzahl der fehlerhaften und erfolgreichen Verbindungen sowie die Anzahl der von der Firewall blockierten Verbindungen nachverfolgen.
Microsoft empfiehlt, Microsoft Defender for Cloud zu konfigurieren, einschließlich Einrichtung von Benachrichtigungen für Advanced Threat Protection. Diese Sicherheitselemente werden im nächsten Abschnitt und in der nächsten Übung erörtert. Schließlich können Sie Microsoft Defender für Cloud nutzen, um die Empfehlungen für alle Azure-Ressourcen zu überwachen, zu verwalten und zu erhalten.
Datenermittlung und -klassifizierung
Der Dienst zur Datenermittlung und -klassifizierung bildet für Azure SQL-Datenbank ein neues Paradigma für den Schutz von Informationen. Der Dienst ist auf den Schutz der Daten und nicht nur der Datenbank ausgerichtet. Dieses Paradigma umfasst Folgendes:
- Ermittlung und Empfehlungen für potenziell vertrauliche Daten, die klassifiziert werden sollten
- Die Möglichkeit, Spalten mithilfe von Metadatenattributen dauerhaft Bezeichnungen hinzuzufügen
- Die Möglichkeit, den Zugriff auf vertrauliche Daten zu überprüfen und abzufragen
Azure SQL bietet sowohl eine SQL-Richtlinie für Information Protection als auch eine Richtlinie für Microsoft Information Protection bei der Datenklassifizierung. Sie können eine dieser Richtlinien basierend auf Ihren Anforderungen auswählen.
Die Portalansicht ist nur für Azure SQL verfügbar, aber SQL Server unterstützt mithilfe eines Assistenten in SQL Server Management Studio (SSMS) eine ähnliche Funktionalität.
Weitere Informationen finden Sie unter Datenermittlung und -klassifizierung.
Microsoft Defender für Cloud
Microsoft Defender für Cloud ist ein einheitliches Paket für erweiterte SQL-Sicherheitsfunktionen. Es bietet einen einzelnen Anlaufpunkt zum Aktivieren und Verwalten von zwei Hauptfunktionen:
- Sicherheitsrisikobewertung
- Advanced Threat Protection
Sicherheitsrisikobewertung
Auf der höchsten Ebene ist die SQL-Sicherheitsrisikobewertung ein Überprüfungsdienst, der einen Einblick zu Ihrem Sicherheitsstatus bietet und umsetzbare Schritte zum Beheben potenzieller Probleme liefert. Wenn Sie regelmäßig wiederkehrende Scans konfigurieren, aktivieren Sie den Dienst, um die Datenbanken alle sieben Tage zu scannen und nach Sicherheitsrisiken zu suchen. Sie können diese Berichte dann an die Administratoren, Abonnementbesitzer oder andere Benutzer senden, die möglicherweise über Änderungen benachrichtigt werden müssen. Damit dieser Dienst ausgeführt werden kann, müssen Sie ein Speicherkonto für die zu speichernden Ergebnisse angeben.
Advanced Threat Protection
Advanced Threat Protection ermöglicht es Ihnen, mögliche Bedrohungen zu erkennen und darauf zu reagieren, wenn diese auftreten, indem Sicherheitswarnungen zu anomalen Aktivitäten empfangen werden. Advanced Threat Protection wendet erweiterte Überwachungs- und Machine Learning-Technologien an, um zu ermitteln, ob die folgenden Bedrohungen aufgetreten sind:
- Einschleusung von SQL-Befehlen
- Sicherheitsrisiko durch Einschleusung von SQL-Befehlen
- Datenexfiltration
- Unsichere Aktion
- Brute-Force-Angriff
- Ungewöhnliche Clientanmeldung
In den nächsten beiden Übungen werden die von Microsoft Defender für Cloud und Azure SQL bereitgestellten Funktionen im Allgemeinen erläutert und die Szenarien vorgestellt, in denen der Dienst Schutz bietet.
Sicherheit auf Zeilenebene
Mithilfe der Sicherheit auf Zeilenebene können Sie den Zugriff auf Zeilen in einer Datenbanktabelle anhand der Gruppenmitgliedschaft oder des Ausführungskontext steuern.
Die Sicherheit auf Zeilenebene (RLS, Row-Level Security) unterstützt Sie beim Implementieren von Einschränkungen für den Datenzeilenzugriff. Beispielsweise können Sie sicherstellen, dass Mitarbeiter nur auf Datenzeilen zugreifen können, die für ihre Abteilung relevant sind. Ein weiteres Beispiel: Sie können den Zugriff von Kunden auf Daten beschränken, die für ihr Unternehmen von Bedeutung sind.
Die Datenbeschränkungszugriffslogik befindet sich auf der Datenbankebene, statt fern der Daten auf einer anderen Anwendungsebene. Das Datenbanksystem wendet die Zugriffsbeschränkungen bei jedem Zugriffsversuch auf Daten aus einer beliebigen Ebene an. Dadurch bietet Ihr Sicherheitssystem eine geringere Angriffsfläche und ist zuverlässiger und robuster.
RLS unterstützt zwei Arten von Sicherheitsprädikaten.
- Filterprädikate filtern automatisch die Zeilen, die für Lesevorgänge (SELECT, UPDATE und DELETE) zur Verfügung stehen.
- Blockprädikate blockieren explizit Schreibvorgänge (AFTER INSERT, AFTER UPDATE, BEFORE UPDATE, BEFORE DELETE), die gegen das Prädikat verstoßen.