Sicherer Betrieb von Oracle Forms-Applikationen TSBU Middleware J. Menge März 2008 Version 1.1 Oracle Deutschland GmbH Riesstr. 25 80992 München www.oracle.com Sicherer Betrieb von Oracle Forms-Applikationen Inhaltsverzeichnis 1 APPLIKATIONS-SICHERHEIT 2 1.1 Traditionelle Authentifizierung 2 1.2 Autorisierung 3 1.3 Authentifizierung (Single Sign-On) 1.3.1 Verwendung alternativer LDAP-Verzeichnisse 1.3.2 Verwendung des Oracle Virtual Directory 3 5 7 1.4 Ausblick 7 1.5 Strong Authentication 7 2 DATENBANK-SICHERHEIT 8 2.1 Traditionelle Authentifizierung 8 2.2 Autorisierung 8 2.3 Authentifizierung (Single Sign-On) 8 2.4 Ausblick 9 2.5 Forms und Virtual Private Database (VPD) 3 10 VERSCHLÜSSELUNG (SSL) 10 1 Applikations-Sicherheit 1.1 Traditionelle Authentifizierung In einer traditionellen Forms-Umgebung erfolgt die Authentifizierung beim Aufruf des Forms-Moduls durch ein Login an der Datenbank (Username, Password, Connect String). Als Benutzer ist der Eigentümer des Schemas anzugeben, in dem sich die Basis-Tabellen bzw. -Views des aufgerufenen Forms-Moduls befinden. Diese Authentifizierung kann durch Programmierung des ON-LOGON-Triggers in Forms modifiziert, z.B. durch ein Null-Statement ausgeschaltet werden. Version 1.1 Seite 2 Sicherer Betrieb von Oracle Forms-Applikationen 1.2 Autorisierung Die Autorisierung, d.h. welche Funktionen der Benutzer aufrufen darf, erfolgt traditionell in Oracle Forms durch die sogenannte ‚Menu Security’, mit der bestimmte Menü-Optionen der Form in Abhängigkeit vom angemeldeten Benutzer aktiviert oder deaktiviert sind. Diese ‚Menu Security’ basiert auf tools-spezifischen Rollen, die in älteren Forms-Versionen in den sogenannten Tools-Tabellen im Schema SYSTEM in der Datenbank gespeichert wurden. Die Existenz und Benutzung dieser Rollen ist optional. In der Forms-Version 10g werden statt der spezifischen Tools-Tabellen und der Forms Menu Roles ganz normale Datenbank-Rollen benutzt, um die Menu Security zu implementieren. Dazu ist es erforderlich eine View in der Datenbank zu erzeugen. Die Beschreibung der notwendigen Schritte findet man unter: Note 28933.1 Implementing and Troubleshooting Menu Security in Forms 1.3 Authentifizierung (Single Sign-On) Oracle Forms bietet bereits seit vielen Versionen die Möglichkeit, die Authentifizierung über den Single Sign-On-Server (SSO-Server) des Oracle Application Servers (OracleAS) durchzuführen. Dazu muss allerdings der OraclAS mit Infrastruktur, d.h. incl. SSO-Server und Oracle Internet Directory (OID) installiert werden. Das Oracle Internet Directory (OID) ist ein Directory Service, der auf dem Standard LDAP v3 basiert, und Informationen über SSO-Benutzer und ihre Anmeldeinformationen (Credentials) speichert. Forms benötigt zwei Arten von Benutzerinformationen im OID: - Applikations-User (SSO User) - Datenbank-User (Resource Access Descriptor) Eine gesonderte Konfiguration des SSO-Service ist für Oracle Forms ab der Version 10g nicht mehr notwendig. Wird Oracle Forms zusammen mit der Infrastruktur des OracleAS installiert oder nachträglich bei einer existierenden Infrastruktur registriert, wird in der Datei formsweb.cfg ein Eintrag oid_formsid=%OID_FORMSID% erzeugt, der auf die OID-Instanz verweist. Kann die Verbindung zum OID nicht hergestellt werden (500 Internal Error), stimmt der eingetragene Wert oid_formsid für die Mid-Tier-Instanz nicht mit dem im OID eingetragenen Wert formsApp_ überein. Note 279707.1 500 Internal Server Error With 10g Forms in SSO Mode Seit Oracle Forms 10g besteht die Möglichkeit, durch dynamische SSO-Direktiven für jede FormsApplikation differenziert den SSO-Service zu aktivieren (Parameter sso_mode=true). Version 1.1 Seite 3 Sicherer Betrieb von Oracle Forms-Applikationen Die folgende Abbildung zeigt, wie Forms-Anwendungen mit Hilfe des OracleAS SSO-fähig gemacht werden können: 1. Der Benutzer ruft die URL einer Forms-Anwendung auf. 2. Das Forms Servlet leitet den Aufruf an den OracleAS SSO-Server weiter. 3. Der Benutzer liefert Benutzername und Passwort durch die Eingabe über die SSO LoginForm. Der Benutzer erkennt dies daran, dass er anstelle des Forms-Login-Fensters die SSOAnmeldemaske des OracleAS präsentiert bekommt und keinen Connect String zur Datenbank angeben muss. 4. Das Passwort wird durch das Oracle Internet Directory (LDAP v3 Server) verifiziert. Bei erfolgreicher Anmeldung wird ein SSO-Cookie gesetzt, der für die Dauer der BrowserSession gültig ist. 5. Der Benutzer wird zur Forms-Anwendung mit den SSO-Informationen (UserID) weitergeleitet. 6. Das Forms Servlet erhält die Datenbank-Credentials vom Oracle Internet Directory (siehe 2.3). 7. Das Forms Servlet setzt den Parameter UserID in der Runform-Session und das Applet verbindet sich zum Forms Listener Servlet. 8. Das Forms Servlet startet den Forms Runtime-Prozess. Version 1.1 Seite 4 Sicherer Betrieb von Oracle Forms-Applikationen Innerhalb der Form kann programmatisch auf folgende SSO-Informationen zugegriffen werden: authenticated_username := get_application_property('sso_userid') ; userDistinguishedName := get_application_property('sso_usrdn') ; subscriberName := get_application_property('sso_subdn') Damit ist es z.B. möglich, aus Forms-Applikationen über Java (Java Bean bzw. Java-Klasse) oder PL/SQL auf das Oracle Internet Directory (OID) zuzugreifen, um weitere Informationen zu einem Benutzer abzufragen. Unternehmen können auf diesem Weg ihre Anwenderverwaltung auf Basis des OID konsolidieren und diese Informationen innerhalb der Forms-Applikation u.a. zur Autorisierung verwenden. Weitere Informationen, u.a. zur Konfiguration des Single Sign-On können in dem White Paper „Oracle Application Server 10g (9.0.4) - Forms Single Sign-On“ nachgelesen werden. Version 1.1 Seite 5 Sicherer Betrieb von Oracle Forms-Applikationen 1.3.1 Verwendung alternativer LDAP-Verzeichnisse Für die Nutzung des SSO-Service in Forms-Anwendungen ist das OID in Verbindung mit dem Oracle Single Sign-On-Server zwingend erforderlich. Werden im Unternehmen andere LDAPVerzeichnisdienste eingesetzt, können die User Credentials über das DIP (Directory Integration Platform) mit dem OID synchronisiert werden. Der Oracle SSO-Server kann ebenfalls mit einem anderen SSO-Service integriert werden. Damit ist auch eine Nutzung von Windows Native Authentication möglich. Das Microsoft Active Directory wird über die Directory Integration Platform (DIP) mit dem Oracle OID synchronisiert. Über ein Kerberos-Token kann eine einmalige Authentifizierung beim Windows-Betriebssystem erreicht werden. Version 1.1 Seite 6 Sicherer Betrieb von Oracle Forms-Applikationen 1.3.2 Verwendung des Oracle Virtual Directory Das Oracle Virtual Directory (OVD) ist ein virtueller Verzeichnisdienst, der eine Konsolidierung verschiedener Verzeichnisse erlaubt. Dabei kann es sich um LDAP-Verzeichnisse (z.B. OID), aber auch um Benutzerinformationen in einer Datenbank handeln. Gegenüber Metadaten-Directories müssen die bestehenden Verzeichnisse physisch nicht zusammengefasst werden. Die Integration wird über eine zusätzliche Schicht ermöglicht, die eine einheitliche Sicht auf fragmentierte Identitätsdaten in verschiedenen Systemen bietet. Dies hat den Vorteil, dass in einem heterogenen Umfeld bestehende Verzeichnisse weiterhin genutzt werden können und gleichzeitig eine ganzheitliche Sicht auf die Verzeichnisdaten möglich ist. Weitere Informationen zum Oracle Virtual Directory können im OTN nachgelesen werden. 1.4 Ausblick Eine direkte Benutzung des Oracle Access Managers aus der Oracle Identity Management Suite ist derzeit nicht möglich. Der Access Manager kann jedoch als führendes System in Kombination mit dem SSO-Server genutzt werden. Alternativ kann der gegenwärtige Prozess der Authentifizierung des Forms Servlets durch einen zu entwickelnden Servlet-Filter modifiziert werden, der Header-Variablen im HTTP-Response des Access Manager Webgate akzeptiert. Version 1.1 Seite 7 Sicherer Betrieb von Oracle Forms-Applikationen 1.5 Strong Authentication Eine Authentifizierung mit Smartcard und/oder biometrischen Merkmalen ist für Oracle Forms transparent. In der Praxis existieren zwei Architektur-Modelle: - CryptoAPI für die Windows-Welt - Java Cryptographic Architecture für die Java-Welt. Beide Welten können miteinander integriert werden. 2 Datenbank-Sicherheit 2.1 Traditionelle Authentifizierung Die Authentifizierung gegenüber der Datenbank erfolgt bei der traditonellen Anmeldung automatisch mit dem Login gegenüber der Forms-Anwendung (1.1). 2.2 Autorisierung Die Autorisierung erfolgt datenbank-seitig auf Basis der Datenbank-Privilegien und Rollen des angemeldeten DB-Users. 2.3 Authentifizierung (Single Sign-On) Da beim Single Sign-On (SSO) sich der Benutzer nur gegenüber der Anwendung als SSO-User authentifiziert wird für die Datenbank eine zusätzliche Anmeldung als DB-User benötigt. Dies geschieht für Forms und Reports durch die Benutzung der Resource Access Descriptoren (RAD) im OID. RADs sind spezielle Objekte im OID, die nur in Verbindung mit Oracle Forms und Reports zum Einsatz kommen. Ein Resource Acces Descriptor (RAD) besteht aus dem Namen und Passwort eines Datenbank-Benutzers sowie der Connect-Information zur Datenbank-Instanz. Forms-Applikationen können im Web durch eine benannte Sektion innerhalb der formsweb.cfg konfiguriert werden. Der Aufruf einer Forms-Applikation erfolgt dann über den Parameter config in der URL, der die benannte Sektion referenziert (http://host:port/forms/frmservlet?config=test). Die Verbindung zwischen RAD und der Forms-Applikation erfolgt über die Identität des Names, d.h. der Name der Forms-Applikation (formsweb.cfg: config=<application>) muss mit dem Resource Name Version 1.1 Seite 8 Sicherer Betrieb von Oracle Forms-Applikationen übereinstimmen. Das Forms Servlet liest den passenden RAD-Eintrag aus dem OID und verbindet sich mit der Datenbank. Existiert kein gleichnamiger RAD-Eintrag, besteht die Möglichkeit des Erzeugens einer Ressource beim ersten Connect durch den Anwender selbst (ssoDynamicResourceCreate=True). Verwenden alle Benutzer den gleichen Connect zur Datenbank, kann in einer speziellen Sektion ein Default RAD angelegt werden (Note 262686.1). Diese Verbindung steht allen Benutzern der entsprechenden Forms-Anwendung zur Verfügung. Für ein künftiges Release von Oracle Forms sind RAD Groups geplant. Man kann RAD-Einträge programmatisch erzeugen. Beschreibungen dazu finden sich in Note 334343.1 How To Create Resource Access Descriptor (RAD) For A Group? And How to Create A RAD Programmatically? Note 244526.1 How To Create and Copy SSO User Resources (RADs) Im OTN findet man ein Beispiel, wie man mit dem DB Package DBMS_LDAP mittels PL/SQL RADEinträge erzeugen kann. Das Beispiel basiert auf Forms 9i, sollte aber auch auf die aktuelle Version 10g anwendbar sein. Ab Forms 10.1.2 erfolgt ein automatisches Update der RAD, wenn das DB-Passwort über die FormsAnwendung geändert wird. 2.4 Ausblick Für Oracle Forms 11g ist die Unterstützung von Database Proxy Usern und Enterprise User Security (EUS) geplant. DB Proxy User werden in der Datenbank mit folgendem Befehl angelegt ALTER USER mary GRANT CONNECT THROUGH midtier AUTHENTICATED USING ...; Der Zugriff des Benutzers auf die DB ist nur über den Application Server möglich. Der Benutzer muss sich dazu gegenüber dem Application Server authentifizieren. Der Application Server hat eine sogenannte Vertrauensstellung gegenüber der Datenbank. Einer der Vorteile der DB Proxy Authentication besteht darin, dass sich viele Benutzer denselben DB Account teilen können (Konzept des Shared Schema), wobei die originale Identität des Benutzers bekannt ist und seine Aktivitäten protokolliert werden können. Für den DB-Account reicht das Privileg Create Session aus. Das verwendete Passwort kann sehr kompliziert sein, da es nicht explizit vom Benutzer eingegeben werden muss. Version 1.1 Seite 9 Sicherer Betrieb von Oracle Forms-Applikationen Die Authentifizierung über einen DB Proxy User erfolgt in folgenden Schritten: - SSO-Anmeldung des Users beim OID über Username/Password des OID Users - der Forms Service verbindet sich mit der Datenbank als Proxy User mit oder ohne Passwort und gibt den Benutzernamen des Users aus dem OID mit - Datenbank akzeptiert den Benutzer und benutzt den OID-Username für Audits Das Konzept des Database Proxy User kann zweckmäßig mit der Enterprise User Security (EUS) verbunden werden. Beim Einsatz von EUS werden die Informationen zu Privilegien und Rollen aus der Datenbank ausgelagert und in einem LDAP-Verzeichnis gespeichert. Neben dem Oracle Internet Directory (OID) kann auch das Oracle Virtual Directory (OVD) zum Einsatz kommen. Ein Vorteil der Enterprise User Security besteht darin, dass die Benutzerrechte zentral an einer Stelle (im LDAP-Verzeichnis) gepflegt werden. Dieses zentrale Verzeichnis kann von mehreren Datenbanken genutzt werden. Eine aufwändige Mehrfachpflege von Benutzerinformationen in den Datenbanken entfällt. Note 272196.1 Step By Step Guide To Configuring 10g Password Authenticated Enterprise User Security 2.5 Forms und Virtual Private Database (VPD) Die Verwendung der Oracle Virtual private Database (VPD) ist transparent für Forms-Applikationen. Allerdings gibt es bestimmte Einschränkungen. So wird z.B. die Zahl der von einer DML-Operation betroffenen Datensätze beim Commit nicht korrekt wiedergegeben, sofern bestimmte Änderungen durch die VPD Policy zurückgewiesen werden. 3 Verschlüsselung (SSL) Die Verschlüsselung mittels SSL ist für Oracle Forms transparent Als Zertifikatsstelle kann entweder eine professionelle Zertifikatsstelle (CA), wie Baltimore oder Verisign, oder OpenSSL genutzt werden. Neben dem Einsatz von SSL für die Enterprise User Security kann auch eine Kerberos-Authentifizierung genutzt werden. Nähere Informationen zur Integration von Kerberos in die Enterprise User Security sind in der Note 458219.1 (How To Configure Enterprise User Security for Kerberos Authentication) zu finden. White Paper Oracle Forms Services 10g: Configuring Transport Layer Security with SSL Note 466662.1 Step by Step Guide To Configure 10g Enterprise User Security (EUS) - SSL Authentication Note.341904.1 Configuring HTTP Server to use SSL in Oracle Application Server 10g (10.1.2 - 10.1.3) Note 147836.1 How to make Jinitiator work with Apache with SSL (HTTPS) Version 1.1 Seite 10