Implementieren von Compliancekontrollen für vertrauliche Daten
Die Implementierung von Compliancekontrollen nach der Migration Ihrer Datenbank ist wichtig, um sicherzustellen, dass Ihre Daten sicher bleiben und den relevanten Vorschriften entsprechen. Durch die Migration zu einer neuen Umgebung, z. B. Azure SQL, werden neue Sicherheitsfunktionen und -features eingeführt.
Erkunden der Server- und Datenbanküberwachung
Bei der Azure SQL-Überwachung werden Datenbankereignisse nachverfolgt und in ein Überwachungsprotokoll in Ihrem Azure Storage-Konto, Log Analytics-Arbeitsbereich oder in Event Hubs geschrieben. Darüber hinaus erleichtert es die Aufrechterhaltung der Einhaltung gesetzlicher Bestimmungen, die Analyse von Aktivitätsmustern und die Erkennung von Abweichungen, die möglicherweise auf Sicherheitsverstöße hinweisen können.
Sie können Richtlinien auf Server- und Datenbankebene definieren. Serverrichtlinien gelten automatisch für neue und vorhandene Datenbanken in Azure.
- Wenn Sie die Serverüberwachung aktivieren, wird die Überwachung für die Datenbank unabhängig von den jeweiligen Überwachungseinstellungen ausgelöst.
- Sie können die Überwachung auf Datenbankebene aktivieren, sodass Server- und Datenbankrichtlinien gleichzeitig vorhanden sind.
- Die Überwachung von schreibgeschützten Replikaten wird automatisch aktiviert.
Es empfiehlt sich, die Server- und Datenbanküberwachung nicht zusammen zu aktivieren, außer in den folgenden Szenarien.
Sie benötigen ein eigenes Speicherkonto, einen bestimmten Aufbewahrungszeitraum oder einen Log Analytics-Arbeitsbereich für eine bestimmte Datenbank.
Eine Überwachung ist für eine bestimmte Datenbank mit eindeutigen Ereignistypen oder Kategorien erforderlich, die sich von den anderen auf dem Server unterscheiden.
In allen anderen Fällen wird empfohlen, die Überwachung nur auf Serverebene zu aktivieren und die Überwachung auf Datenbankebene für alle Datenbanken deaktiviert zu lassen.
Die Standardüberwachungsrichtlinie für SQL-Datenbank umfasst die folgenden Aktionsgruppen:
Aktionsgruppe | Definition |
---|---|
BATCH_COMPLETED_GROUP | Überwacht alle Abfragen und gespeicherten Prozeduren, die für die Datenbank ausgeführt werden. |
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP | Zeigt an, dass sich ein Prinzipal erfolgreich bei der Datenbank angemeldet hat. |
FAILED_DATABASE_AUTHENTICATION_GROUP | Zeigt an, dass sich ein Prinzipal nicht bei der Datenbank anmelden konnte. |
Um die Überwachung für alle Datenbanken auf einem Azure SQL-Server zu aktivieren, wählen Sie auf dem Hauptblatt Ihres Servers im Abschnitt Sicherheit die Option Überwachung aus.
Auf der Seite Überwachung können Sie das Ziel des Überwachungsprotokolls festlegen und außerdem angeben, ob die Aktivitäten des Microsoft-Supporttechnikers im selben Protokollziel wie die Azure SQL-Überwachung oder in einem anderen Protokollziel nachverfolgt werden sollen.
Mit der folgenden Abfrage können Sie die Überwachungsprotokolle von Microsoft-Supportvorgängen in Ihrem Log Analytics Arbeitsbereich überprüfen:
AzureDiagnostics
| where Category == "DevOpsOperationsAudit"
Wichtig
Azure SQL Database und die Überwachungsdienste von Azure SQL Managed Instance wurden optimiert, um eine optimale Verfügbarkeit und Leistung zu erzielen. Es ist jedoch zu beachten, dass bestimmte überwachte Ereignisse unter Umständen bei außergewöhnlich hoher Aktivität oder erheblicher Netzwerküberlastung nicht protokolliert werden.
Überwachen vertraulicher Bezeichnungen
In Kombination mit der Datenklassifizierung können Sie auch den Zugriff auf vertrauliche Daten überwachen. Die Azure SQL-Überwachung wurde erweitert, um ein neues Feld mit dem Namen data_sensitivity_information
in das Überwachungsprotokoll zu integrieren.
Durch die Protokollierung der Vertraulichkeitsbezeichnungen der von einer Abfrage zurückgegebenen Daten bietet dieses Feld eine einfachere Möglichkeit, den Zugriff auf klassifizierte Spalten zu verfolgen.
Die Überwachung umfasst die Nachverfolgung und Aufzeichnung von Ereignissen, die in der Datenbank-Engine auftreten. Die Azure SQL-Überwachung vereinfacht die zur Aktivierung erforderlichen Konfigurationsschritte und erleichtert so die Verfolgung von Datenbankaktivitäten für SQL-Datenbank und SQL Managed Instance.
Dynamische Datenmaskierung
Bei der dynamischen Datenmaskierung werden Daten verschleiert, um ihre Offenlegung zu verhindern. Es ermöglicht Benutzern, die keinen Zugriff auf vertrauliche Informationen benötigen, die Spalte, aber nicht die eigentlichen Daten anzuzeigen. Beachten Sie, dass die dynamische Datenmaskierung auf der Präsentationsebene erfolgt und dass nicht maskierte Daten für Benutzer mit hoher Berechtigungsstufe immer sichtbar sind.
Die dynamische Datenmaskierung bietet den Vorteil, dass nur minimale Änderungen an Ihrer Anwendung oder Datenbank erforderlich sind. Sie können die Datenmaskierung einfach über das Azure-Portal oder mithilfe von T-SQL konfigurieren.
Im Beispiel oben werden die Spalten PhoneNumber und EmailAddress vor dem Benutzer DDMDemo verborgen, der nur über die Berechtigung SELECT
für diese Tabelle verfügt. Dem Benutzer werden nur die letzten vier Ziffern der Telefonnummer angezeigt, da diese mit einer partial-Funktion maskiert wurde, die alle Ziffern bis auf die letzten vier in der Spalte ersetzt. Diese Maskierung wird als benutzerdefinierte Funktion angesehen. Sie können jedoch nicht nur T-SQL, sondern auch die Azure SQL-Datenbank verwenden, um Regeln für die dynamische Datenmaskierung im Azure-Portal zu erstellen.
Sie gelangen zu diesem Bildschirm, indem Sie im Azure-Portal zu Ihrer Datenbank navigieren und Dynamische Datenmaskierung im Abschnitt Sicherheit des Hauptblatts für Ihre Datenbank auswählen.
Die dynamische Datenmaskierung unterstützt die folgenden Maskierungsmuster:
Maskierungsfunktion | Definition | T-SQL-Beispiel |
---|---|---|
Standard | Maskiert die Daten in der Spalte, ohne einen Teil der Werte für den Benutzer sichtbar zu machen. Der Benutzer sieht XXXX für Zeichenfolgenwerte, 0 für Zahlen und 01.01.1900 für Datumswerte. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
Kreditkarte | Maskiert alle Zeichen bis auf die letzten vier, sodass Benutzern die letzten vier Ziffern angezeigt werden. Diese Maskierungsmethode eignet sich beispielsweise im Fall eines Kundenservicemitarbeiters, der die letzten vier Ziffern einer Kreditkartennummer einsehen muss, jedoch nicht die gesamte Nummer. Die Daten werden im üblichen Format einer Kreditkartennummer angezeigt, XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
Nur der erste Buchstabe und das nachfolgende Domänensuffix sind nicht maskiert, z. B. „aXXX@XXXXXXX.com“ | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
|
Number | Dieses Maskierungsformat sollte für numerische Spalten verwendet werden. Sie zeigt anstelle des tatsächlichen Werts eine Zufallszahl für den maskierten Wert an. Bei jeder Abfrage wird eine andere Zahl angezeigt. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
Benutzerdefinierte Zeichenfolge | Mit dieser Option kann Text mit einem beliebigen Wert maskiert werden, und eine benutzerdefinierte Anzahl von Zeichen kann am Anfang oder Ende des maskierten Werts angezeigt werden. Wenn die Länge des maskierten Werts kleiner oder gleich der Zeichenanzahl ist, die in der Maskierungsregel festgelegt ist, werden nur maskierte Zeichen angezeigt. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Damit Benutzer nicht maskierte Daten aus den Spalten abrufen können, für die eine Maskierung definiert ist, müssen Sie explizit die Berechtigung UNMASK
erteilen.
Hinweis
Es ist möglich, maskierte Daten zu identifizieren, indem man aus den Ergebnissen auf sie schließt. Wenn Sie die Datenmaskierung verwenden, sollten Sie auch die Möglichkeit des Benutzers einschränken, Ad-hoc-Abfragen durchzuführen.
Aus diesem Grund wird empfohlen, die dynamische Datenmaskierung mit anderen Sicherheitsfeatures wie Überwachung, Verschlüsselung und Sicherheit auf Zeilenebene zu kombinieren, um den Schutz vertraulicher Daten zu verbessern.
Anwendungsfall
Die Datenmaskierung ist ein einfaches und schlankes Feature, das sich für eine Reihe von Szenarien eignet, z. B:
Maskieren von Daten aus Anwendungen, die keinen Direktzugriff auf die Datenbank haben.
Einschränkung von privaten Informationen für eine Gruppe von Benutzer*innen.
Bereitstellen von maskierten Daten für externe Anbieter, wenn Sie vertrauliche Informationen schützen und gleichzeitig die Beziehungen zwischen den Elementen in den Daten beibehalten müssen.
Exportieren einer Kopie Ihrer Produktionsdatenbank zu Entwicklungszwecken in eine untergeordnete Umgebung mit einem Benutzer, der nicht über die Berechtigung
UNMASK
verfügt. Die exportierten Daten haben ein maskiertes Format.
Importieren und Exportieren von Daten.
Das Kopieren von Daten aus einer maskierten Spalte in eine andere Tabelle mit SELECT INTO
oder INSERT INTO
führt zu maskierten Daten in der Zieltabelle.
Wenn ein Benutzer ohne UNMASK
-Berechtigung einen SQL Server-Import und -Export ausführt, enthält die exportierte Datendatei maskierte Daten, und die importierte Datenbank enthält inaktiv maskierte Daten.