DataSunrise sponsert AWS re:Invent 2024 in Las Vegas, bitte besuchen Sie uns am Stand #2158 von DataSunrise

Row Level Security

Row Level Security

Row Level Security

In der heutigen datengetriebenen Welt ist der Schutz von sensiblen Informationen von größter Bedeutung. Datenbanken enthalten viele Daten. Und es ist wichtig sicherzustellen, dass nur die richtigen Personen auf bestimmte Teile davon zugreifen können. Hier kommt Row Level Security (RLS) ins Spiel.

Row Level Security ist eine leistungsstarke Funktion, die es Datenbankadministratoren ermöglicht, den Zugriff auf einzelne Zeilen zu steuern. Die Kontrolle hängt von Benutzerrollen, Berechtigungen oder anderen Kriterien ab. In diesem Artikel werden die Grundlagen der Row Level Security behandelt. Wir schauen uns an, wie dies in verschiedenen Datenbanken funktioniert und nutzen Beispiele, um deren Anwendung zu zeigen.

Was ist Row Level Security?

Row Level Security beschränkt den Zugriff auf bestimmte Zeilen in einer Datenbank basierend auf festgelegten Bedingungen. Es bietet eine präzise Kontrolle darüber, wer Daten sehen oder ändern kann, und stellt sicher, dass Benutzer nur mit autorisierten Zeilen interagieren. Dies ist besonders wichtig in Szenarien, in denen eine Tabelle sensible Informationen enthält, wie z. B. persönliche Daten, Finanzaufzeichnungen oder vertrauliche Geschäftsinformationen.

Row Level Security konzentriert sich darauf, den Zugriff auf der Ebene einzelner Zeilen zu steuern, anstatt auf die gesamte Tabelle. Sie kontrollieren nicht den Zugriff auf die gesamte Tabelle. RLS ermöglicht es Ihnen, anzugeben, welche Zeilen ein Benutzer basierend auf Faktoren wie seiner Rolle oder Abteilung anzeigen kann.

Implementierung von RLS

Verschiedene Datenbanksysteme bieten verschiedene Mechanismen zur Implementierung von Row Level Security. Schauen wir uns an, wie Row Level Security in PostgreSQL und SQL Server funktioniert.

PostgreSQL

PostgreSQL bietet eine Funktion namens Row Level Security. Es ermöglicht Ihnen, Richtlinien zu definieren, um den Zugriff auf einzelne Zeilen zu steuern. Um RLS für eine Tabelle zu aktivieren, müssen Sie den folgenden SQL-Befehl ausführen:

ALTER TABLE table_name ENABLE ROW LEVEL SECURITY;

Sobald Row Level Security aktiviert ist, können Sie Regeln erstellen, die bestimmen, wann ein Benutzer bestimmte Zeilen sehen kann. Angenommen, wir haben eine Tabelle namens employees mit den Spalten id, name, department und salary. Wir möchten sicherstellen, dass Mitarbeiter nur ihre eigenen Gehaltsinformationen anzeigen können. Hier ist, wie wir eine Richtlinie erstellen können, um dies zu erreichen:

CREATE POLICY employee_salary_policy ON employees
FOR SELECT
TO PUBLIC
USING (current_user = name);

In diesem Beispiel erstellen wir eine Richtlinie namens employee_salary_policy für die Tabelle employees. Sie erlaubt Benutzern nur dann, Zeilen auszuwählen, wenn current_user mit dem Wert in der Spalte name übereinstimmt. Dies stellt sicher, dass Mitarbeiter nur ihre eigenen Gehaltsinformationen anzeigen können.

SQL Server

SQL Server implementiert Row Level Security durch die Verwendung von Sicherheitspredikaten. Sicherheitspredikate sind T-SQL-Ausdrücke, die die Bedingungen definieren, unter denen ein Benutzer auf bestimmte Zeilen zugreifen kann. Um Row Level Security in SQL Server einzurichten, erstellen Sie eine Sicherheitsrichtlinie und verknüpfen sie mit einer Tabelle.

Hier ist ein Beispiel für die Erstellung einer Sicherheitsrichtlinie für die Tabelle employees:

CREATE SECURITY POLICY employee_policy
ADD FILTER PREDICATE dbo.fn_securitypredicate(department) ON dbo.employees
WITH (STATE = ON);

In diesem Beispiel erstellen wir eine Sicherheitsrichtlinie namens employee_policy. Wir verwenden eine Funktion namens fn_securitypredicate, um eine Filterregel hinzuzufügen. Diese Funktion überprüft die Spalte department und entscheidet, ob der Benutzer auf die Zeile zugreifen kann, indem er entweder eine wahre oder eine falsche Antwort gibt.

Die Funktion fn_securitypredicate kann wie folgt aussehen:

CREATE FUNCTION fn_securitypredicate(@department varchar(100))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS fn_securitypredicate_result
WHERE @department = USER_NAME() OR USER_NAME() = 'admin';

Diese Funktion erlaubt Benutzern, Zeilen nur dann anzuzeigen, wenn ihr Benutzername mit der Spalte department übereinstimmt oder wenn sie ‘admin’ sind.

Detailliertes Beispiel für PostgreSQL

Testtabelle

Betrachten wir ein Beispiel, um zu verstehen, wie Row Level Security in der Praxis funktioniert. Angenommen, wir haben eine Tabelle namens orders mit folgender Struktur:

CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
product VARCHAR(100),
quantity INT,
price DECIMAL(10, 2)
);

Einrichten der Sicherheitsrichtlinie

Wir möchten sicherstellen, dass Kunden nur ihre eigenen Bestellungen anzeigen können. Hier erfahren Sie, wie wir Row Level Security in PostgreSQL implementieren können:

1. Aktivieren Sie Row Level Security für die Tabelle orders:

ALTER TABLE orders ENABLE ROW LEVEL SECURITY;

2. Erstellen Sie eine Richtlinie, die den Zugriff basierend auf der Spalte customer_id einschränkt:

CREATE POLICY customer_orders_policy ON orders
FOR SELECT
TO PUBLIC
USING (customer_id = current_user_id());

In diesem Beispiel gibt die Funktion current_user_id() die ID des aktuell angemeldeten Kunden zurück.

Zugriff

Jetzt, wenn ein Kunde die Tabelle orders abfragt, sieht er nur die Zeilen, in denen die Spalte customer_id seiner eigenen ID entspricht. Zum Beispiel:

SELECT * FROM orders;

Ergebnis für Kunde 1:

id | customer_id | product  | quantity | price
---+-------------+----------+----------+-------
1  | 1           | Product A| 10       | 100.00
3  | 1           | Product C| 5        | 250.00

Ergebnis für Kunde 2:

id | customer_id | product  | quantity | price
---+-------------+----------+----------+-------
2  | 2           | Product B| 20       | 200.00
4  | 2           | Product D| 15       | 300.00

Wie Sie sehen können, kann jeder Kunde nur seine eigenen Bestellungen anzeigen, was Datenschutz und Sicherheit gewährleistet.

Über das Beispiel hinaus

Zusätzlich zu PostgreSQL und SQL Server bieten mehrere andere Datenbanksysteme RLS-Funktionen. Hier sind einige bemerkenswerte Beispiele:

Oracle Database

  • Oracle Database unterstützt RLS durch das Virtual Private Database (VPD)-Feature.
  • VPD ermöglicht es Ihnen, Sicherheitsrichtlinien zu erstellen, die die zeilenweise Zugriffskontrolle basierend auf benutzerdefinierten Bedingungen durchsetzen.
  • Richtlinien werden mit PL/SQL-Funktionen definiert und transparent auf SQL-Abfragen angewendet, die auf die geschützten Tabellen zugreifen.

MySQL

  • MySQL bietet RLS durch die Verwendung von Views und die DEFINER -Klausel.
  • Sie können Views erstellen, die spezifische zeilenweise Bedingungen enthalten, und den Zugriff auf diese Views anstelle der zugrunde liegenden Tabellen gewähren.
  • Die DEFINER -Klausel ermöglicht es Ihnen, den Sicherheitskontext festzulegen, in dem die View ausgeführt wird, und sicherzustellen, dass Benutzer nur auf die Zeilen zugreifen können, für die sie autorisiert sind.

IBM Db2

  • IBM Db2 implementiert Row Level Security durch die Verwendung von Row and Column Access Control (RCAC).
  • RCAC ermöglicht es Ihnen, Zeilenberechtigungen und Spaltenmasken zu definieren, um den Zugriff auf bestimmte Zeilen und Spalten innerhalb einer Tabelle zu steuern.
  • Zeilenberechtigungen werden mithilfe von SQL-Ausdrücken definiert, die die Bedingungen festlegen, unter denen ein Benutzer auf eine Zeile zugreifen kann.
  • Spaltenmasken werden verwendet, um die Sichtbarkeit und Änderung bestimmter Spalten basierend auf benutzerdefinierten Regeln zu steuern.

SAP HANA

  • SAP HANA unterstützt RLS durch die Verwendung von analytischen Berechtigungen und zeilenweiser Zugriffskontrolle.
  • Analytische Berechtigungen ermöglichen es Ihnen, Zugriffskontrollrichtlinien basierend auf Benutzerrollen und anderen Attributen zu definieren.
  • Die zeilenweise Zugriffskontrolle ermöglicht es Ihnen, den Zugriff auf bestimmte Zeilen innerhalb einer Tabelle basierend auf benutzerdefinierten Bedingungen einzuschränken.
  • Diese Sicherheitsfunktionen können mithilfe von SQL-Anweisungen und Sicherheitsrichtliniendefinitionen implementiert werden.

Amazon Redshift

  • Amazon Redshift, ein cloudbasierter Data-Warehouse-Dienst, bietet RLS durch die Verwendung von zeilenweisen Zugriffskontrollrichtlinien.
  • Sie können Richtlinien definieren, die den Zugriff auf bestimmte Zeilen basierend auf Benutzerrollen, Datenklassifikationen oder anderen Kriterien einschränken.
  • Richtlinien werden mithilfe von SQL-Anweisungen erstellt und transparent auf Abfragen angewendet, die auf die geschützten Tabellen zugreifen.

Dies sind nur einige Beispiele für Datenbanksysteme, die RLS unterstützen. Jedes Datenbanksystem kann seine eigene spezifische Implementierung und Syntax für die Konfiguration und Verwaltung von RLS-Richtlinien haben.

Fazit

Row Level Security ist eine Funktion, die es Datenbankadministratoren ermöglicht, den Zugriff auf einzelne Zeilen innerhalb einer Tabelle zu steuern. Es hilft sicherzustellen, dass Benutzer nur auf Daten zugreifen können, deren Ansicht ihnen gestattet ist. RLS schützt sensible Informationen vor unbefugtem Zugriff.

Dieser Artikel behandelt die Grundlagen von RLS. Er vergleicht außerdem, wie Sie RLS in PostgreSQL und SQL Server implementieren können. Wir geben Beispiele, um zu zeigen, wie es den Zugriff basierend auf Benutzerrollen oder anderen Faktoren einschränkt.

Die Implementierung von Row Level Security ist entscheidend, um den Datenschutz aufrechtzuerhalten und verschiedene Vorschriften einzuhalten. Es fügt Ihrer Datenbank eine zusätzliche Sicherheitsebene hinzu und bietet eine feingranulare Kontrolle über den Datenzugriff.

DataSunrise bietet erstklassige Sicherheitswerkzeuge für Datenbanken, einschließlich Funktionen für Sicherheit, Auditregeln, Maskierung und Compliance. Unsere Row Level Security-Funktion zeichnet sich dadurch aus, dass Sie detaillierte Zugriffskontrollen auf Zeilenebene festlegen können.

Wenn Sie mehr über die Sicherheitslösungen von DataSunrise erfahren möchten, kontaktieren Sie unser Team für eine Online-Demo. Wir demonstrieren Ihnen gerne unsere robusten Sicherheitswerkzeuge und besprechen, wie sie Ihre Daten schützen.

Denken Sie daran, dass Datensicherheit heutzutage entscheidend ist. Mit Row Level Security und der Expertise von Unternehmen wie DataSunrise können Sie die Vertraulichkeit und Integrität Ihrer Datenbank schützen und gleichzeitig den erforderlichen Zugriff gewähren.

Nächste

Datenschutz: Grundlagen

Datenschutz: Grundlagen

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Allgemeine Informationen:
[email protected]
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
[email protected]