DataSunrise erreicht AWS DevOps Kompetenz Status in AWS DevSecOps und Überwachung, Protokollierung, Performance

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 eine Menge Daten. Es ist jedoch wichtig sicherzustellen, dass nur die richtigen Personen auf bestimmte Teile davon zugreifen können. Hier kommt die Row Level Security (RLS) ins Spiel.

Row Level Security ist ein leistungsstarkes Feature, das 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 werden untersuchen, wie dies in verschiedenen Datenbanken funktioniert und Beispiele zur Veranschaulichung der Nutzung geben.

Was ist Row Level Security?

Row Level Security beschränkt den Zugriff auf bestimmte Zeilen in einer Datenbank basierend auf festgelegten Bedingungen. Sie 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 persönliche Daten, Finanzunterlagen oder vertrauliche Geschäftsdaten.

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, festzulegen, welche Zeilen ein Benutzer basierend auf Faktoren wie seiner Rolle oder Abteilung anzeigen kann.

Implementierung von RLS

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

PostgreSQL

PostgreSQL bietet ein Feature 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 die Mitarbeiter nur ihre eigenen Gehaltsinformationen anzeigen können. So können wir eine Richtlinie erstellen, 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 die Zeilen auszuwählen, wenn der Wert in der Spalte name mit dem aktuellen Benutzer übereinstimmt. Dies stellt sicher, dass die Mitarbeiter nur ihre eigenen Gehaltsinformationen anzeigen können.

SQL Server

SQL Server implementiert Row Level Security durch die Verwendung von Sicherheitspraedikaten. Sicherheitspraedikate 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 Sicherheitspolitik und verknüpfen sie mit einer Tabelle.

Hier ist ein Beispiel für die Erstellung einer Sicherheitspolitik 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 Sicherheitspolitik 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 sie entweder eine wahre oder falsche Antwort zurückgibt.

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 ermöglicht es Benutzern, Zeilen nur dann zu sehen, wenn ihr Benutzername mit der Spalte department übereinstimmt oder wenn sie ein ‘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)
);

Sicherheitsrichtlinien-Einrichtung

Wir möchten sicherstellen, dass Kunden nur ihre eigenen Bestellungen einsehen können. So können wir Row Level Security in PostgreSQL implementieren:

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 derzeit angemeldeten Kunden zurück.

Zugriff

Wenn ein Kunde nun die Tabelle orders abfragt, sieht er nur die Zeilen, bei denen die Spalte customer_id mit seiner eigenen ID übereinstimmt. 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 einsehen, was die Datensicherheit und den Datenschutz gewährleistet.

Über das Beispiel hinaus

Neben PostgreSQL und SQL Server bieten auch mehrere andere Datenbanksysteme RLS-Features an. Hier sind einige bemerkenswerte Beispiele:

Oracle Database

  • Oracle Database unterstützt RLS durch das Feature der Virtual Private Database (VPD).
  • VPD ermöglicht die Erstellung von Sicherheitsrichtlinien, die den Zugriff auf Zeilen basierend auf benutzerdefinierten Bedingungen steuern.
  • Richtlinien werden unter Verwendung von 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 Ansichten und der DEFINER-Klausel.
  • Sie können Ansichten erstellen, die spezifische zeilenbasierte Bedingungen enthalten, und den Zugriff auf diese Ansichten anstelle der zugrunde liegenden Tabellen gewähren.
  • Die DEFINER-Klausel ermöglicht es Ihnen, den Sicherheitskontext festzulegen, unter dem die Ansicht ausgeführt wird, und stellt sicher, dass Benutzer nur auf die Zeilen zugreifen können, die sie anzeigen dürfen.

IBM Db2

  • IBM Db2 implementiert Row Level Security durch die Verwendung von Row and Column Access Control (RCAC).
  • RCAC ermöglicht die Definition von Zeilenberechtigungen und Spaltenmasken zur Steuerung des Zugriffs auf spezifische Zeilen und Spalten innerhalb einer Tabelle.
  • Zeilenberechtigungen werden über SQL-Ausdrücke definiert, die die Bedingungen bestimmen, 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 Analyseberechtigungen und zeilenbasierter Zugriffskontrolle.
  • Analyseberechtigungen ermöglichen die Definition von Zugriffskontrollrichtlinien basierend auf Benutzerrollen und anderen Attributen.
  • Die zeilenbasierte Zugriffskontrolle ermöglicht es, den Zugriff auf spezifische Zeilen innerhalb einer Tabelle basierend auf benutzerdefinierten Bedingungen einzuschränken.
  • Diese Sicherheitsfeatures können über SQL-Befehle und Sicherheitsrichtliniendefinitionen implementiert werden.

Amazon Redshift

  • Amazon Redshift, ein cloudbasierter Data-Warehousing-Dienst, bietet RLS durch die Verwendung von zeilenbasierenden 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-Befehlen 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 ein Feature, das 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, die sie sehen dürfen. RLS schützt sensible Informationen vor unbefugtem Zugriff.

Dieser Artikel behandelt die Grundlagen von RLS. Zudem wird erläutert, wie RLS in PostgreSQL und SQL Server implementiert werden kann, und es werden Beispiele gegeben, wie der Zugriff basierend auf Benutzerrollen oder anderen Faktoren eingeschränkt wird.

Die Implementierung von Row Level Security ist entscheidend für den Schutz der Datenprivatsphäre und die Einhaltung verschiedener Vorschriften. Sie fügt der Datenbank eine zusätzliche Sicherheitsebene hinzu und bietet eine feingranulare Kontrolle über den Datenzugriff.

DataSunrise bietet erstklassige Sicherheitstools für Datenbanken, einschließlich Funktionen für Sicherheit, Prüfregeln, Maskierung und Compliance. Unser Row Level Security Feature zeichnet sich dadurch aus, dass Sie detaillierte Zugriffskontrollen auf der 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 Sicherheitstools und erläutern, 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

Datenkonformität: Grundlagen

Datenkonformität: Grundlagen

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Allgemeine Informationen
Vertrieb
Kundenservice und technischer Support
Partnerschafts- und Allianz-Anfragen
Allgemeine Informationen:
info@datasunrise.com
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
partner@datasunrise.com