Sicherheit auf Zeilenebene jetzt auch in Microsoft Azure SQL Data Warehouse

Veröffentlicht am 7 November, 2018

Principal Program Manager, Azure SQL Data Warehouse

Wir freuen uns, heute die allgemeine Verfügbarkeit der Sicherheit auf Zeilenebene (Row-Level Security, RLS) für Microsoft Azure SQL Data Warehouse ankündigen zu können. Dieses Features gibt Ihnen zusätzliche Möglichkeiten zum Verwalten der Sicherheit Ihrer sensiblen Daten. Azure SQL Data Warehouse ist ein schnelles, flexibles und sicheres Cloud-Data Warehouse, das komplexe Abfragen schnell und für mehrere Petabyte an Daten ausführen kann.

Wenn Sie Ihre Daten in die Cloud migrieren, ist das Sichern dieser Daten essentiell, um das Vertrauen Ihrer Kunden und Partner zu festigen. Mit RLS können Sie Sicherheitsrichtlinien implementieren, um den Zugriff auf Zeilen in Ihren Tabellen zu regeln (um also zu bestimmen, wer auf diese Zeilen zugreifen darf). RLS ermöglicht diese engmaschige Zugriffssteuerung, ohne dass Sie Ihr Data Warehouse umgestalten müssen. Dadurch wird die allgemeine Sicherheitsimplementierung vereinfacht, da sich die Zugriffsbeschränkungslogik auf der Datenbankebene und nicht auf einer anderen, von den Daten getrennten Anwendungsebene befindet. Durch RLS ist es zudem nicht mehr erforderlich, Ansichten zu erstellen, um Zeilen für die Zugriffssteuerung auszublenden. Darüber hinaus unterstützt RLS sowohl die SQL-Authentifizierung als auch die Azure Active Directory-Authentifizierung.

In diesen Situationen bietet sich RLS an:

  • Ein Gesundheitsversorgungsanbieter erzwingt eine Sicherheitsrichtlinie, durch die Krankenpfleger nur die Datenzeilen ihrer eigenen Patienten sehen können.
  • Ein Finanzdienstleister schränkt den Zugriff auf Zeilen mit finanziellen Daten abhängig von der Abteilung oder Rolle eines Mitarbeiters im Unternehmen ein.
  • Eine Anwendung mit mehreren Mandanten erzwingt eine logische Trennung der Datenreihen der jeweiligen Mandanten voneinander.

RLS-Diagramm

RLS ist eine Form der prädikatbasierten Zugriffssteuerung, bei der automatisch ein Sicherheitsprädikat auf alle Abfragen einer Tabelle angewendet wird. Das Prädikat legt fest, welche Benutzer auf eine Zeile zugreifen können. Ein einfaches Prädikat ist z.B. „WHERE SalesRep = SYSTEM_USER“, und ein komplexes Prädikat kann z.B. JOIN-Klauseln enthalten, um Informationen aus anderen Tabellen zu erhalten.

Es gibt zwei Arten von Sicherheitsprädikaten:

  • Filterprädikate filtern stillschweigend SELECT-, UPDATE- und DELETE-Vorgänge, damit diese keine Zeilen enthalten, die das Prädikat nicht erfüllen.
  • Blockprädikate blockieren INSERT-, UPDATE- und DELETE-Vorgänge explizit, damit diese keine Zeilen enthalten, die das Prädikat nicht erfüllen.

In diesem Release unterstützt Azure SQL Data Warehouse nur Filterprädikate. Die Unterstützung für Blockprädikate wird in naher Zukunft hinzugefügt. Zudem unterstützt RLS in diesem Release keine externen Tabellen, die über PolyBase erstellt wurden.

Sie benötigen als Erstes eine Inlinetabellenwertfunktion, die Ihre Zugriffskriterien definiert, um ein Sicherheitsprädikat für eine Tabelle hinzuzufügen. Anschließend erstellen Sie eine Sicherheitsrichtlinie, die ein Filterprädikat zu jeder beliebigen Tabelle mit dieser Funktion hinzufügt. Hier sehen Sie ein einfaches Beispiel, durch das Vertriebsmitarbeiter nicht auf Zeilen zugreifen können, die ihnen nicht zugewiesen sind:

CREATE SCHEMA security;

CREATE FUNCTION security.customerPredicate(@SalesRepName AS sysname)
RETURNS TABLE
    WITH SCHEMABINDING
AS
    RETURN SELECT 1 AS accessResult
WHERE @SalesRepName = SYSTEM_USER OR SYSTEM_USER = 'Manager';
go

CREATE SECURITY POLICY security.customerAccessPolicy
ADD FILTER PREDICATE security.customerPredicate(SalesRepName) ON dbo.Customers
WITH (STATE = ON);
go

Diese Funktion ist jetzt in allen Azure-Regionen ohne weitere Kosten verfügbar. Der Rollout wurde bereits in einigen Regionen komplett durchgeführt. Die weltweite Bereitstellung soll innerhalb der nächsten zwei Wochen abgeschlossen sein. Azure SQL Data Warehouse ist weiterhin führender Dienst in den Bereichen der Sicherheit, Compliance, Datenschutz und Überwachung.

Nächste Schritte