Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in die dynamische Maskierung von SQLServer (Codebeispiel)

Detaillierte Einführung in die dynamische Maskierung von SQLServer (Codebeispiel)

不言
不言nach vorne
2019-02-01 10:30:202668Durchsuche

Dieser Artikel bietet Ihnen eine detaillierte Einführung (Codebeispiel) über die dynamische Maskierung von SQL Server. Ich hoffe, dass er Ihnen weiterhilft .

Dynamic Data Masking (DDM) ist eine neue Funktion, die in SQL Server 2016 eingeführt wurde. Der Zweck besteht darin, Personen ohne Erlaubnis den Zugriff auf private Informationen zu verwehren. Admin-Benutzer können entscheiden, welche Felder maskiert werden müssen. Wie können sie also maskiert werden, ohne den Anwendungscode zu ändern? Es muss außerdem sichergestellt werden, dass die Daten unabhängig davon, wie auf sie zugegriffen wird, konsistent sind.

Dies ist eine Funktion, die zum ersten Mal in Azure SQL-Datenbank eingeführt wurde. Sie wird von Benutzern in der Cloud getestet und wurde auf das lokale Produkt migriert. Ich denke, dass viele weitere neue Funktionen diesem Ansatz folgen werden (cloudlokal).

Es ist zu beachten, dass es sich wie bei meiner vorherigen Datensicherheit auf Zeilenebene um datensicherheitsbezogene Inhalte handelt (empfohlene Kurse: MySQL-Tutorial)

Spalte Daten Maskierung

Erstellen Sie zunächst eine Tabelle mit einer maskierten Version einiger Daten. Ich werde einem der Felder beginnend in der Tabellendefinition eine Maske hinzufügen. Beachten Sie, dass Sie dazu das Format „Maske mit ()“ nach dem Datentyp, aber vor den Optionen NULL und Standard verwenden müssen. In Klammern ist FUNCTION = „anzugeben, das unsere Funktion angibt. In den Anführungszeichen geben wir an Die CREATE TABLE-Anweisung lautet wie folgt:

CREATE TABLE MyTable
  ( MySSN VARCHAR (10) MASKED WITH (FUNCTION = 'default()') DEFAULT ('0000000000' )
 , MyName VARCHAR (200) DEFAULT ( ' ')
 , MyEmail VARCHAR (250) DEFAULT ( '')
 , MyInt int
)
GO
INSERT dbo. MyTable
 ( MySSN , MyName, MyEmail , MyInt)
VALUES
 ( '1234567890', 'Steve Jones', 'SomeSteve@SomeDomain.com', 10 )

Wenn der Ersteller diese Tabelle abfragt, werden mir beim Einfügen alle Daten nicht angezeigt Erstellen Sie nun einen normalen Benutzer ohne hohe Berechtigungen, um die Daten in der Tabelle anzuzeigen Sehen Sie, was der Unterschied ist.

Wir können sehen, dass die erste Spalte maskierte Daten enthält. Dadurch wird erreicht, was ich möchte, nämlich die Daten vor Nichtprivilegien zu verbergen Beachten Sie, dass die Daten auf der Festplatte nicht geändert werden, bis sie an den nicht privilegierten Benutzer zurückgegeben werden.

Ich kann sehen, dass dies im letzten Teil des Ausführungsplans geschieht Benutzerplan unter Verwendung derselben Abfrage.


Es gibt ein benutzerdefiniertes Maskenformat, mit dem Sie steuern können, was für eine E-Mail-Adresse angezeigt wird, und eine Zufallszahlenmaske Ich werde diese Probleme in einem anderen Artikel ausführlich besprechen.

Es ist jetzt möglich, mithilfe der E-Mail-Maske eine Maske zu einer anderen Spalte hinzuzufügen. Die Abfrageergebnisse sind wie folgt:

Wie wir sehen können, erhalte ich unterschiedliche Masken aus verschiedenen Zeilen, jede Maske wird auf bestimmte Zeilendaten angewendet

Benutzern erlauben, maskierte echte Daten anzuzeigen.

Es gibt eine neue DDM-Berechtigung. Dies ist die UNMASK-Berechtigung, die wie jede andere Berechtigung funktioniert Erstellen Sie einen neuen Benutzer mit denselben Berechtigungen wie der vorhandene Benutzer. Dann werde ich die Tabelle abfragen. Ähnliche Ergebnisse wie zuvor. Dann schalten wir die Maske mit der Berechtigung ein Wir können sehen, dass die Daten genauso angezeigt werden wie für privilegierte Benutzer. Für NewTester-Benutzer sind alle Daten „entlarvt“.

Allerdings gibt es einen Nachteil. UNMASK-Berechtigungen werden dem Benutzer datenbankweit gewährt. Es gibt keine Granularität nach Tabelle oder Spalte. Wenn ein Benutzer über UNMASK verfügt, kann er alle Daten in in der Datenbank gespeicherten Tabellen mit der SELECT-Berechtigung anzeigen. Wir können dies sehen, indem wir die erste Tabelle mit Newtest abfragen.

Maske entfernen

Der Code lautet wie folgt:

CREATE USER mytest WITHOUT LOGIN
GRANT SELECT ON mytable TO mytest
Sobald ich das mache, sieht der Benutzer direkt die echten Daten.

Die Daten in der Spalte „MySSN“ sind nicht maskiert, aber die Daten in „MyEmail“ und „MyID“ sind weiterhin maskiert

Zusammenfassung

Dynamic Data Masking ist eine großartige neue Funktion, die den Schutz von Daten vor nicht privilegierten Benutzern erleichtern soll. Dies kann in der Datenbank implementiert werden, ohne dass Änderungen am Anwendungscode erforderlich sind, sodass Sie vertrauliche Daten von Anwendungsbenutzern mit minimalem Kosten- und Aufwand maskieren können. Ich möchte Sie auch daran erinnern, dass es sich hierbei nicht um eine echte Sicherheitsfunktion handelt. Die auf Datenträgern und Tabellen gespeicherten Daten werden in keiner Weise verändert. Hierbei handelt es sich immer noch um reine Textdaten, und wenn Benutzer das System abfragen können, können sie möglicherweise immer noch Ihre Daten abfragen und deren Wert ermitteln.

Auf jeden Fall ist diese Funktion zweifellos hilfreich, insbesondere für Systeme, die eine Datenentschlüsselung erfordern. Natürlich haben sich auch die Funktionen seit 17 stark weiterentwickelt. Ich werde sie bei Gelegenheit weiterhin vorstellen.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die dynamische Maskierung von SQLServer (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen