CAMPUS INNENSTADT APEX - OUD - VPD Steffi Geiser-Metz & Mathias Weber & Björn Hötschl & Markus Geis
APEX-OUD-VPD > INM AGENDA Institut für Notfallmedizin und Medizinmanagement - INM Oracle Unified Directory Verknüpfung APEX mit OUD VPD + Verknüpfung mit APEX Fazit 2
APEX-OUD-VPD > INM AGENDA Institut für Notfallmedizin und Medizinmanagement - INM Oracle Unified Directory Verknüpfung APEX mit OUD VPD + Verknüpfung mit APEX Fazit 3
APEX-OUD-VPD > INM KLINIKUM DER UNIVERSITÄT Campus Großhadern und Campus Innenstadt 2.200 Betten 500.000 Patienten ambulant, teilstationär und stationär 9.500 Beschäftigte: 1.600 Mediziner / 3.200 Pflegekräfte ca. 1 Mrd. Umsatz 5.955 Studenten-Wintersemester 2014/15 4
APEX-OUD-VPD > INM Interdisziplinäre Forschungseinrichtung Qualitätsmanagement in der Medizin, Notfallmedizin und im Rettungswesen derzeit ca. 40 Mitarbeiter DWH: Einsatz-, medizinischen- / GEO-Daten HSC www.inm-online.de 5
APEX-OUD-VPD > INM HW / SW / ORACLE-SW Betrieb eines 12c 3 Knoten Clusters (12.1.0.2 EE) / Oracle-Linux -> 3 DB s mit ca. 2TB / ca. 1.400 DB-Usern Netapp Metro Cluster / VMWARE Umgebung Shared Disk Spaces sind über NFS (dnfs) eingebunden (kein ASM) DB-Optionen: Partitioning Spatial (Routenberechnung und Geo-Analysen) WEBLOGIC 12 / TOMCAT ORACLE - mapviewer OUD (Oracle Unified Directory 11.1.2.3.0) APEX 5.1 / ORDS 3.0 ORACLE-HTTP / Apache 6
APEX-OUD-VPD > INM HISTORIE ALTE APPLIKATION alte JSP Applikation (TOMCAT) 1.200 DB-Usern Applikation hielt immer die Session VPD für die Einschränkung der User-Sichten Versuch mit JAVA + ADF 7
APEX-OUD-VPD > INM NEUE APPLIKATION APEX 5.1 ORDS 3.0 Oracle 12.1.0.2 VPD für die Einschränkung der User-Sichten Userverwaltung auf Basis LDAP (keine DB-USER) Nutzung des LDAP s für weitere APEX-Applikation und zusätzliche Applikationen wie z.b. owncloud + joomla 8
APEX-OUD-VPD > INM AGENDA Institut für Notfallmedizin und Medizinmanagement - INM Oracle Unified Directory Verknüpfung APEX mit OUD VPD + Verknüpfung mit APEX Fazit 9
APEX-OUD-VPD > INM OUD Oracle Unified Directory LDAP v. 3.0 compatible durchgängige Nutzung von Oracle-Produkten einfache Installation Lizenzierung über Anzahl User einfacher Betrieb und Sicherung Passwort-Verwaltung über SELF-Service-Portal Verwaltung über einfache OpenSource-Software (ODSM / oud_domain/bin/startweblogic.sh) 10
APEX-OUD-VPD > INM OUD 11
APEX-OUD-VPD > INM AGENDA Institut für Notfallmedizin und Medizinmanagement - INM Oracle Unified Directory Verknüpfung APEX mit OUD VPD + Verknüpfung mit APEX Fazit 12
APEX-OUD-VPD > INM OUD APEX ANBINDUNG APEX bietet mehrere Möglichkeiten um User zu authentifizieren Default: klassische APEX User (für die Entwicklung) LDAP (3-Tier Application / stateless) die Authentifizierung kann pro Applikation gewählt werden Einstellung unter Shared Components 13
APEX-OUD-VPD > INM OUD APEX ANBINDUNG Über CREATE eine neue Authentifizierung-Möglichkeit erstellen die gewünschte Authentifizierung-Möglichkeit wird mit CURRENT der Applikation zugeordnet 14
APEX-OUD-VPD > INM OUD APEX ANBINDUNG Parameter für die LDAP-Konfiguration Distinguished Name (DN) -> Beginn des LDAP-Verzeichnisses SEARCH-Filter: Applikation > LDAP - Gruppen zuordnen &(uid=%ldap_user%)(ismemberof=cn=apex_tcpr,ou=gruppen,dc=inm-online,dc=de) 15
APEX-OUD-VPD > INM OUD APEX ANBINDUNG 16
APEX-OUD-VPD > INM OUD APEX ANBINDUNG Aufbau einer ACL (Access Control List) für den LDAP Zugriff: BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl => ldap_acl_file.xml', description => LDAP ACL', principal => 'APEX_050100', is_grant => true, privilege => 'connect'); DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => ldap_acl_file.xml', principal => 'APEX_050100', is_grant => true, privilege => 'resolve'); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl => ldap_acl_file.xml', host => 'xurca.inm-online.de' lower_port => 1234, upper_port => 1235 ); END; 17
APEX-OUD-VPD > INM OUD APEX ANBINDUNG Test LDAP-Connect 18
APEX-OUD-VPD > INM APEX ERGÄNZUNG AUTHORISIERUNG LDAP-Connect -> reine Authentifizierung APEX bietet auch die Möglichkeit einer Autorisierung 19
APEX-OUD-VPD > INM AGENDA Institut für Notfallmedizin und Medizinmanagement - INM Oracle Unified Directory Verknüpfung APEX mit OUD VPD + Verknüpfung mit APEX Fazit 20
APEX-OUD-VPD > INM WAS IST VPD (GRUNDGEDANKE)? Steuerung der Daten-Zugriffe bei Tabellen auf Zeilenebene Objektprivilegien -> select, insert, update, delete beziehen sich auf alle ROWS einer Table Daten können gruppen-/userbezogen dargestellt werden (mandantenfähig) 21
APEX-OUD-VPD > INM WAS IST VPD? ist ein Feature der Oracle Enterprise Edition Anfang: Trusted Oracle 7 / Label Security relativ altes Feature -> ab Version 8i Transparent für die Applikation Einsatz im Institut ab der Version 8.2.0.3 LABEL-Security -> nicht lizensfrei 22
APEX-OUD-VPD > INM WAS IST VPD? mehre Begriffe werden synonym verwendet: VIRTUAL PRIVATE DATABASE (VPD) ROW LEVEL SECURITY (RLS) FINE GRAINED ACCESS CONTROL VPD Wichtig: Context (z.b. 3-tier architecture / Connection-Pool) 23
APEX-OUD-VPD > INM WAS IST VPD? VPD hat immer eine TABLE zur BASIS VPD wird über eine Policy an eine Table gehängt als Basis für die Policy dient eine stored function mehrere Policys können pro Table genutzt werden VPD ergänzt die Statements auf eine Tabelle mit einer zusätzlichen -> WHERE-Bedingung um die Anzahl der zu selektierten Zeilen einzuschränken VPD ermöglicht ebenfalls Spalten aus einer Table für gewisse User zu maskieren bzw. nicht anzuzeigen 24
APEX-OUD-VPD > INM AUFBAU EINER VPD-UMGEBUNG CONTEXT um aus der Applikation Werte in die Datenbank zu übertragen Ein Tabellenmodell, welches als Basis für den Aufbau dient (Planung) Table: Userverwaltung (User + Rechte / Was darf wer sehen) Function, welche die Rechte für die User zusammenstellt und einen Rückgabe-String für die Nutzung von VPD aufbaut Policy, welche über die Function mit einem Rückgabewert versorgt wird, um die Einschränkungen durchzuführen 25
APEX-OUD-VPD > INM AUFBAU EINER VPD-UMGEBUNG POLICY Aufbau mit CONTEXT / LOGIN PACKAGE CREATE OR REPLACE CONTEXT RDB_CONTEXT USING RDB_LOGIN_PACKAGE; CREATE OR REPLACE package rdb_login_package is procedure set_context(p_userid in varchar2); end rdb_login_package; CREATE OR REPLACE package body rdb_login_package Is procedure set_context(p_userid in varchar2) is v_rdb wasserw_verwaltung.userverwaltung.id_rdb%type := 1; begin for cl in (select id_rdb from wasserw_verwaltung.userverwaltung where upper(user_name) = upper(p_userid)) loop v_rdb := cl.id_rdb; end loop; dbms_session.set_context('rdb_context','id_rdb', v_rdb); end set_context; end rdb_login_package; 26 24.10.2014
APEX-OUD-VPD > INM AUFBAU EINER VPD-UMGEBUNG POLICY Aufbau mit CONTEXT / Function CREATE OR REPLACE function WASSERW.f_rdb_policy(p_schema varchar2, p_object varchar2) return varchar2 is v_sql varchar2(32767); begin if sys_context('rdb_context','id_rdb') = 0 then null; elsif sys_context('rdb_context','id_rdb')!= 0 then v_sql := ' ID_RDB = ( ' sys_context('rdb_context','id_rdb') ')'; end if; return v_sql; end; / 27 24.10.2014
APEX-OUD-VPD > INM AUFBAU EINER VPD-UMGEBUNG POLICY anlegen BEGIN SYS.DBMS_RLS.ADD_POLICY (,object_name => 'TAB1',policy_name => 'ZUGRIFFSKONTROLLE_TAB1',policy_function => 'F_ZUGRIFF_RDB_XXX',statement_types => 'SELECT,INSERT,UPDATE,DELETE',policy_type => dbms_rls.dynamic,long_predicate => FALSE,update_check => TRUE,static_policy => FALSE,enable => TRUE ); END; BEGIN SYS.DBMS_RLS.DROP_POLICY ( object_schema => Null,object_name => 'TAB1',policy_name => 'ZUGRIFFSKONTROLLE_TAB1'); END; 28
APEX-OUD-VPD > INM AUFBAU EINER VPD-UMGEBUNG POLICY Aufbau mit CONTEXT / 3-Tier Application / APEX Shared Komponents -> Security Attributes -> Security / Database Session http://www.oracle.com/webfolder/technetwork/de/community/apex/tipps/virtual-private-database/index.html 29 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 30 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 31 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 32 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 33 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 34 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 35 24.11.2017
APEX-OUD-VPD > INM APPLIKATION 36 24.11.2017
APEX-OUD-VPD > INM AGENDA Institut für Notfallmedizin und Medizinmanagement - INM Oracle Unified Directory Verknüpfung APEX mit OUD VPD + Verknüpfung mit APEX Fazit 37
APEX-OUD-VPD > INM FAZIT APEX -> Einarbeitung; schnelle Entwicklung von Prototypen; große, agile Community, DB-nah; komplexe Applikationen möglich die Verbindung OUD / APEX / VPD stabil und einfach VPD ist einfach einzusetzten (trivial) VPD bietet viele Möglichkeiten die Datenbestände vor neugierigen Blicken zu schützen VPD ist für die Applikation völlig transparent Berechtigungskonzepte können über VPD ohne Applikationsänderungen modifiziert werden (flexibel) einziger VPD-Nachteil -> Enterprise Edition weniger GUT: Oracle-HTTP / WEBLOGIC 38 24.10.2014
VIELEN DANK FÜR IHRE AUFMERKSAMKEIT! M. Weber / M. Geis Klinikum der Universität München Institut für Notfallmedizin und Medizinmanagement Phone: 089 / 4400-57101 E-Mail: mathias.weber@med.uni-muenchen.de markus.geis@med.uni-muenchen.de Internet: www.inm-online.de 39 16.03.2016
40 24.11.2017