Benutzer-Werkzeuge

Webseiten-Werkzeuge


prog:virtual_private_database

Oracle Virtual Private Database (VPD) und Oracle Label Security

Seit Oracle 8i

In Arbeit

Mit Application Context and Fine-Grained Access Control kann der Zugriff auf Daten innerhalb einer Tabelle sehr gut eingeschränkt werden.

Zugriff auf Tabellenebene prinzipiell einschränken

Problem: Über normale Rechte kann das Lesen auf einer Tabelle nur auf alles oder nichts gesetzt werden

Rechte auf Zeilen können über die Anwendung geprüft werden, aber die Anwendung kann mit SQL*Plus umgangen werden Mit Views sind nur bedingte Einschränkungen möglich und nur schwer zu warten bei sehr vielen unterschiedlichen Berechtigungen

Lösung: Virtual Private Database Bei jedem Zugriff auf eine Tabelle wird zuvor eine versteckte Funktion ausgewertet, die das SQL Statement entsprechend einschränkt

Lizenz
  • Oracle Label Security ⇒ EE + Extra Option notwendig
  • VPD ⇒ EE ohne Extra Option

Fine Grained Access Control mit dem Package DBMS_RLS

Eine Funktion wird einer Tabelle zugeordnet

Beim Parsen eines SQL-Statements wird das Ergebnis der Funktion in die Where-Bedingung mit eingearbeitet.

Beispiel: (Angestellter darf nur seinen Datensatz sehen)

Funktion erzeugt Prädikat:

empno=(select empno from emp where ename = sys_context('userenv','session_user')

Angestellter sucht mit select * from emp

Automatisch wird das SQL-Statement erweitert um:

SELECT * FROM emp WHERE empno=(SELECT empno FROM emp WHERE ename = sys_context('userenv','session_user')

Dazu den Application-Context mit sys_context benutzerdefiniert erweitern.


Überwachen

Problem - Ist die VPD in der aktuellen Session in Verwendung ?

Zugriff auf eine Tabelle mit RLS

SELECT COUNT(*) FROM personen;

Überprüfen der verwendeten Policie akutell in dieser Session

SELECT * FROM V$VPD_POLICY;
 
ADDRESS|PARADDR|SQL_HASH|SQL_ID|CHILD_NUMBER|OBJECT_OWNER|OBJECT_NAME|POLICY_GROUP|POLICY|POLICY_FUNCTION_OWNER|PREDICATE
--------------------------------------------------------------------------------------------------------------------------
0000000075443B20|00000000792EAF18|2338103776|0ur9ps25pt8g0|0|INFO|PERSONEN|SYS_DEFAULT|PERSONEN_ZUGRIFFSKONTROLLE|INFO|1=1

Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
prog/virtual_private_database.txt · Zuletzt geändert: 2019/05/24 18:25 von gpipperr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki