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

Oracle's native RBAC

Meistern von Oracle’s nativem RBAC: Ein umfassender Leitfaden – Teil 2

Oracles nativer RBAC - Teil 2 Erweitert

4. Erweiterte Konzepte des nativen RBAC von Oracle

Die RBAC-Implementierung von Oracle bietet erweiterte Funktionen, die zusätzliche Flexibilität und Granularität bei der Verwaltung des Zugriffs ermöglichen. Lassen Sie uns einige dieser erweiterten Konzepte erkunden.

4.1 Rollenhierarchien

Rollenhierarchien ermöglichen es Ihnen, Eltern-Kind-Beziehungen zwischen Rollen zu erstellen. Eine Kindrolle besitzt die gleichen Berechtigungen wie ihre Elternrolle. Die Kindrolle erhält auch alle zusätzlichen Berechtigungen, die speziell an sie vergeben wurden. Dies ermöglicht die Erstellung einer hierarchischen Struktur von Rollen und vereinfacht die Verwaltung komplexer Zugriffssteuerungsrichtlinien.

Um eine Rollenhierarchie in Oracle zu erstellen, verwenden Sie die GRANT-Anweisung, um einer Rolle eine andere Rolle zuzuweisen. Zum Beispiel:

-- Erstelle eine Elternrolle namens "manager"
CREATE ROLE manager;
-- Gewähre Berechtigungen an die Rolle "manager"
GRANT SELECT, INSERT, UPDATE ON employees TO manager;
-- Erstelle eine Kindrolle namens "sales_manager"
CREATE ROLE sales_manager;
-- Weise die "manager"-Rolle der "sales_manager"-Rolle zu
GRANT manager TO sales_manager;
-- Gewähre zusätzliche Berechtigungen speziell für die Rolle "sales_manager"
GRANT SELECT ON sales TO sales_manager;

In diesem Beispiel erstellen wir eine Elternrolle namens “manager” und gewähren ihr Berechtigungen für die Tabelle “employees”. Dann erstellen wir eine Kindrolle namens “sales_manager” und weisen ihr die Rolle “manager” zu. Der Vertriebsmanager besitzt alle Berechtigungen eines Managers und zusätzlich spezielle Berechtigungen im Zusammenhang mit dem Vertrieb.

Rollenhierarchien vereinfachen die Verwaltung von Berechtigungen, indem grundlegende Berechtigungen auf höheren Ebenen festgelegt und detaillierte Anpassungen auf niedrigeren Ebenen vorgenommen werden. Dies reduziert Redundanz und erleichtert die Wartung und Aktualisierung von Zugriffssteuerungsrichtlinien.

4.2 Sichere Anwendungsrollen

In der Regel hängen diese Bedingungen von der erfolgreichen Ausführung eines PL/SQL-Pakets oder einer Funktion ab.

Um eine sichere Anwendungsrolle in Oracle zu erstellen, verwenden Sie die CREATE ROLE-Anweisung mit der Klausel IDENTIFIED USING. Dieses Paket oder diese Funktion gibt an, welche Rolle aktiviert werden soll. Zum Beispiel:

-- Erstelle ein PL/SQL-Paket zur Überprüfung der Bedingungen
CREATE OR REPLACE PACKAGE security_pkg IS
FUNCTION check_access RETURN BOOLEAN;
END security_pkg;
/
-- Erstelle eine sichere Anwendungsrolle
CREATE ROLE secure_role IDENTIFIED USING security_pkg.check_access;
-- Gewähre Berechtigungen für die sichere Anwendungsrolle
GRANT SELECT ON sensitive_data TO secure_role;

In diesem Beispiel erstellen wir ein PL/SQL-Paket namens “security_pkg”, das eine Funktion “check_access” enthält. Diese Funktion bestimmt, ob die sichere Anwendungsrolle aktiviert werden soll. Sie berücksichtigt Faktoren wie die IP-Adresse des Benutzers, die aktuelle Zeit und spezifische Anwendungsregeln.

Als nächstes erstellen wir eine sichere Rolle namens “secure_role” unter Verwendung der Klausel IDENTIFIED USING und der Spezifikation “security_pkg.check_access”. Die Rolle wird nur aktiviert, wenn die Funktion “check_access” TRUE zurückgibt.

Wir gewähren speziellen Zugriff auf die sichere Anwendungsrolle, sodass Benutzer mit dieser Rolle und den entsprechenden Voraussetzungen auf sensible Daten zugreifen können.

Sichere Anwendungsrollen verbessern die Sicherheitsmaßnahmen insgesamt, indem sie Rollen nur aktivieren, wenn bestimmte Bedingungen erfüllt sind, und somit zusätzliche Sicherheit bieten. Dies verhindert unbefugten Zugriff und fügt eine zusätzliche Kontrollebene über die üblichen rollenbasierten Zugriffssteuerungsmethoden hinaus hinzu.

4.3 Feingranulare Zugriffskontrolle

Feingranulare Zugriffskontrolle innerhalb von Oracles nativem RBAC ermöglicht es, den Zugriff auf Daten basierend auf spezifischen Bedingungen oder Attributen im Detail festzulegen. Dies bedeutet, dass Sie den Zugriff auf Daten auf einer äußerst granularen Ebene steuern können.

Sie können genau festlegen, wer berechtigt ist, bestimmte Daten einzusehen oder zu ändern. FGAC bietet die Möglichkeit, den Zugriff basierend auf spezifischen Kriterien oder Attributen einzuschränken. Oracle bietet Werkzeuge wie VPD und OLS für präzise Zugriffskontrolle in Datenbanken an.

VPD ermöglicht es Ihnen, Sicherheitsrichtlinien zu SQL-Abfragen für eine Tabelle oder Sicht hinzuzufügen. Diese Richtlinien können Zeilenebenen-Sicherheit basierend auf Benutzerattributen oder Anwendungskontext erzwingen. Zum Beispiel:

-- Erstelle eine VPD-Richtlinienfunktion
CREATE OR REPLACE FUNCTION policy_func (
schema_var IN VARCHAR2,
table_var IN VARCHAR2
)
RETURN VARCHAR2
IS
BEGIN
RETURN 'department_id = SYS_CONTEXT(''USERENV'', ''DEPARTMENT_ID'')';
END;
/
-- Wende die VPD-Richtlinie auf eine Tabelle an
BEGIN
DBMS_RLS.ADD_POLICY (
object_schema => 'HR',
object_name => 'EMPLOYEES',
policy_name => 'EMP_POLICY',
function_schema => 'HR',
policy_function => 'POLICY_FUNC',
statement_types => 'SELECT,UPDATE,DELETE',
update_check => TRUE
);
END;
/

In diesem Beispiel erstellen wir eine VPD-Richtlinienfunktion namens “policy_func”. Diese Funktion generiert eine Regel basierend auf der Abteilungs-ID des Benutzers. Die Funktion gibt eine Bedingung zurück, die sicherstellt, dass Benutzer nur auf Datensätze zugreifen können, die ihrer eigenen Abteilung gehören.

Als nächstes wenden wir die VPD-Richtlinie auf die Tabelle “EMPLOYEES” mit dem Prozeduraufruf DBMS_RLS.ADD_POLICY an. Wir spezifizieren die Richtlinienfunktion und die Arten von Anweisungen, auf die sie angewendet wird.

Die VPD-Richtlinie ermöglicht Benutzern den Zugriff und die Änderung von Datensätzen, die ihrer Abteilungs-ID entsprechen. Dies bietet präzise Kontrolle über den Zugriff auf Zeilenebene.

Oracle Label Security (OLS) ist eine weitere Funktion, die eine feingranulare Zugriffskontrolle basierend auf Datenklassifikationslabels ermöglicht. OLS lässt Sie Datenzeilen kennzeichnen und den Zugriff basierend auf den Labels der Benutzer kontrollieren. Dies ist besonders nützlich in Umgebungen mit sensitiven Daten, die strikte Vertraulichkeit und Datenabgrenzung erfordern.

Feingranulare Zugriffskontrolle ergänzt RBAC, indem sie zusätzliche Sicherheitsebenen hinzufügt. Sie ermöglicht die Durchsetzung von Zugriffsregeln basierend auf spezifischen Datenattributen oder Bedingungen.

Attributbasierte Zugriffskontrolle (ABAC)

ABAC ist eine Methode zur Zugriffskontrolle, die Benutzerattribute, Ressourcenattribute und die Umgebung berücksichtigt, um Zugriffsberechtigungen zu bestimmen. ABAC bietet einen dynamischeren und flexibleren Ansatz im Vergleich zu traditionellen RBAC.

Bei ABAC werden Zugriffskontrollrichtlinien basierend auf Attributen und nicht auf Rollen definiert. Attribute sind Merkmale, die Benutzerdetails, Ressourcendetails und Umgebungsdetails umfassen können.

Benutzerdetails können Jobtitel oder Abteilung umfassen. Ressourcendetails können Datenklassifikation oder Sensitivitätslevel umfassen. Umgebungsdetails können die Tageszeit oder den Standort umfassen.

Oracle unterstützt ABAC durch verschiedene Funktionen und Technologien wie Oracle Entitlements Server (OES) und Oracle Access Manager (OAM). Diese Lösungen ermöglichen es Ihnen, attributbasierte Richtlinien zu definieren und sie über verschiedene Anwendungen und Ressourcen hinweg durchzusetzen.

Hier ist ein Beispiel dafür, wie ABAC mithilfe des Oracle Entitlements Servers implementiert werden kann:

-- Definieren von Benutzerattributen
CREATE ATTRIBUTE USER_ATTRIBUTES.JOB_TITLE VARCHAR(255);
CREATE ATTRIBUTE USER_ATTRIBUTES.DEPARTMENT VARCHAR(255);
CREATE ATTRIBUTE USER_ATTRIBUTES.SECURITY_CLEARANCE VARCHAR(255);
-- Definieren von Ressourcenattributen
CREATE ATTRIBUTE RESOURCE_ATTRIBUTES.CLASSIFICATION VARCHAR(255);
CREATE ATTRIBUTE RESOURCE_ATTRIBUTES.SENSITIVITY_LEVEL VARCHAR(255);
-- Definieren einer ABAC-Richtlinie
CREATE POLICY ACCESS_POLICY
GRANT VIEW ON RESOURCE
WHERE RESOURCE_ATTRIBUTES.CLASSIFICATION = 'CONFIDENTIAL'
AND USER_ATTRIBUTES.SECURITY_CLEARANCE >= 'SECRET'
AND USER_ATTRIBUTES.DEPARTMENT = 'FINANCE';

In diesem Beispiel sprechen wir über Benutzerdetails wie Jobtitel und Abteilung sowie Ressourcenattribute wie Klassifikation und Sensitivitätslevel.

Wir haben eine Richtlinie namens “ACCESS_POLICY”. Diese Richtlinie erlaubt es nur Benutzern mit einer Sicherheitsfreigabe von ‘SECRET’ und der Abteilung ‘FINANCE’, auf ‘CONFIDENTIAL’-Ressourcen zuzugreifen.

ABAC-Richtlinien können komplexer sein und mehrere Attribute und Bedingungen umfassen. Die Richtlinienbewertungs-Engine prüft Benutzer-, Ressourcen- und Umgebungsdetails, um zu bestimmen, ob der Zugriff gewährt werden soll.

ABAC ergänzt RBAC, indem es einen feineren und dynamischeren Ansatz zur Zugriffskontrolle bietet. Es ermöglicht flexiblere und kontextbewusste Zugriffsentscheidungen basierend auf einer Kombination von Attributen.

6. Zugriffssteuerungslisten (ACLs)

Zugriffssteuerungslisten (ACLs) sind ein weiteres Mittel zur Zugriffskontrolle auf Ressourcen. ACLs werden verwendet, um Berechtigungen für einzelne Benutzer oder Gruppen auf spezifischen Objekten oder Ressourcen festzulegen.

In Oracle werden ACLs häufig verwendet, um den Zugriff auf externe Netzwerkressourcen wie Webdienste oder entfernte Datenbanken zu verwalten. Oracle bietet einen eingebauten ACL-Mechanismus durch das Paket DBMS_NETWORK_ACL_ADMIN.

Hier ist ein Beispiel, wie eine ACL erstellt und Berechtigungen mittels des Pakets DBMS_NETWORK_ACL_ADMIN gewährt werden:

-- Erstelle eine ACL
BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => 'my_acl.xml',
description => 'ACL für den Zugriff auf externe Webdienste',
principal => 'HR_USER',
is_grant => TRUE,
privilege => 'connect'
);
END;
/ -- Weisen Sie die ACL einem Netzwerkhost zu BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => 'my_acl.xml',
host => 'www.example.com',
lower_port => 80,
upper_port => 80
);
END;
/

In diesem Beispiel erstellen wir eine ACL namens “my_acl.xml” unter Verwendung der Prozedur DBMS_NETWORK_ACL_ADMIN.CREATE_ACL. Wir geben den Prinzipal (Benutzer oder Rolle) an, auf den die ACL angewendet wird, in diesem Fall ‘HR_USER’. Wir setzen auch die Berechtigung auf ‘connect’, die dem Prinzipal erlaubt, eine Verbindung zur externen Ressource herzustellen.

Anschließend weisen wir die ACL einem spezifischen Netzwerkhost unter Verwendung der Prozedur DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL zu. Wir geben den Namen der ACL, den Hostnamen oder die IP-Adresse und den Portbereich an, auf den die ACL angewendet wird.

Mit dieser ACL kann ‘HR_USER’ eine Verbindung zum angegebenen Netzwerkhost im bestimmten Portbereich herstellen.

ACLs helfen, den Zugriff auf externe Ressourcen im Detail zu steuern und arbeiten neben den eigenen Zugriffssteuerungsmechanismen der Datenbank. Sie sind hilfreich beim Verwalten von Netzwerkressourcen und stellen sicher, dass nur genehmigte Benutzer oder Anwendungen darauf zugreifen können.

Dies schließt Teil 2 ab. Im letzten Teil 3 werden wir die Rollen ausführlicher behandeln.

Suchen Sie nach professionellen Lösungen zur Datenbanksicherheit? Nehmen Sie online an einer umfassenden Demo-Session zur Verwaltung von Benutzern und Rollen in DataSunrise teil und entdecken Sie fortschrittliche Lösungen für Oracle-Datenbanken. Erfahren Sie, wie Sie den Zugriffsschutz optimieren und die Sicherheit mit unserer intuitiven Plattform verbessern können.

Nächste

Oracle’s Native RBAC meistern: Ein umfassender Leitfaden – Teil 3

Oracle’s Native RBAC meistern: Ein umfassender Leitfaden – Teil 3

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]