Datenbank-gestützte Authentifizierung und Autorisierung von Web

Transcrição

Datenbank-gestützte Authentifizierung und Autorisierung von Web
Datenbank-gestützte
Authentifizierung und Autorisierung
von Web-Applikationen
Dr. Günter Unbescheid
Database Consult GmbH - Jachenau
Database Consult GmbH
Authentifizierung und Autorisierung von Web-Applikationen
•
•
•
Gegründet 1996
Kompetenzen im Umfeld von ORACLE-basierten Systemen
Tätigkeitsbereiche
–
–
–
–
–
–
–
–
Version 10-2005
Tuning, Installation, Konfiguration
Support, Troubleshooting, DBA-Aufgaben
Datenmodellierung und –design
Datenbankdesign, Systemanalysen
Programmierung: SQL,PL/SQL,JSP, ADF UIX, BC4J
Schulungen
Expertise
www.database-consult.de
©Database Consult GmbH - Jachenau
Folie 2 von 31
Prolog
Internetprogramme, auch Webanwendungen genannt,
sind Anwendungen, die auf einem Webserver ausgeführt werden
und dann in einem Browser dargestellt werden.
Kategorien von WA u.a.: Transaktionale Webanwendungen
(Erweiterung um den Bereich Datenbanken)
Wikipedia
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 3 von 31
Authentifizierung und Autorisierung von Web-Applikationen
- Datenbanken steuern immer häufiger die Aufbereitung dynamischer
Web-Seiten
- Die intensive Eingabe und Modifikation von Daten stellt zusätzliche
Anforderungen an Authentifizierung und Autorisierung
- Durch multiple Nutzungskontexte sollte AA auch über DB
abgesichert werden
- Das Datenmodell ist i.d.R. dauerhafter als die Präsentationsschichten
Agenda
Authentifizierung und Autorisierung von Web-Applikationen
•
•
•
•
•
•
Einführung: Application Server und Datenbanken
Connection – Session – Authentifizierung
Secure Application Roles und Client Identifier
Proxy Authentication
Virtual Private Database
Auditing
Stand der Technik: Oracle 10g Release 2
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 4 von 31
Einführung
Authentifizierung und Autorisierung von Web-Applikationen
Datenbank
Einheit von Session und Connection
++
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 5 von 31
Einführung
Authentifizierung und Autorisierung von Web-Applikationen
Application
Server
Stateless Requests über HTTP(S)
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 6 von 31
Einführung
Application
Server
Datenbank
Stateless Requests
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 7 von 31
Authentifizierung und Autorisierung von Web-Applikationen
„Permanente“ Verbindung
Connection Pool
•
•
Authentifizierung und Autorisierung von Web-Applikationen
Application
Server
Datenbank
Wiederverwendung physischer Datenbankverbindungen
Konfigurierbarer Aufbau
– Minimale und maximale Anzahl physischer Verbindungen
– Maximale Idle-Zeiten zum Abbau der Verbindung
•
Ähnelt Multithreaded Server der Datenbank
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 8 von 31
Grundmodell
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 9 von 31
Authentifizierung und Autorisierung von Web-Applikationen
• Zentraler, fest codierter Applikationsbenutzer auf Seiten
des App-Server
• Unterschiedliche Endbenutzer mit diversen
Privilegienanforderungen
• Größtmöglicher Querschnitt aus allen erforderlichen
Objektprivilegien für App-Benutzer
• ggf. Filterung der erforderlichen Privilegien durch
Mittelschicht
• Gefahr des Mißbrauchs bei „Quereinstieg“, z.b. ClientServer Applikation
Einflussfaktoren
Authentifizierung und Autorisierung von Web-Applikationen
Session
Connection
Authentication
Authorization
Auditing
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 10 von 31
Was – Wo?
Strukturelle „Stabilität“
Zentralität
Application
Server
EndUser
Authentication
Authorization
Auditing
Version 10-2005
Datenbank
ApplicationUser
Authentication
Authorization
Auditing
©Database Consult GmbH - Jachenau
Folie 11 von 31
Authentifizierung und Autorisierung von Web-Applikationen
„Präsentationsdynamik“
„Pluralität“
Intermezzo: JDBC
– Java Standard zur Verbindung zwischen JavaProgrammen/Applicationserver und relationalen Datenbanken
– kompatibel mit SQL92 entry level
• Implementiert über Standard java.sql Interfaces
• Komponenten
– Standard JDBC APIs
– Oracle Treiber mit spezifischen Erweiterungen zur
Unterstützung von Oracle-Datentypen und PerformanceVerbesserungen
• Spezifische Erweiterungen über oracle.jdbc
Package
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 12 von 31
Authentifizierung und Autorisierung von Web-Applikationen
• Java Database Connectivity
Intermezzo: JDBC
– Thin driver: „reiner“ Java-Treiber auf Clientseite ohne OracleClient-Installation für Applets und Anwendungen.
Implementiert SQL*Net über Java Sockets mit TCP/IP
– OCI-Treiber (thick driver): Treiber auf Clientseite mit OracleClient-Installation für Anwendungen
Konvertiert in OCI-Calls
• breitere Funktionalität: OCI Connection Pool, TAF
– Server-side thin driver: wie thin driver jedoch für Java-Code auf
dem Datenbankserver für Zugriffe auf andere Session bzw.
Server
– Server-side internal driver: Java-Code für Zugriffe innerhalb
einer Session
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 13 von 31
Authentifizierung und Autorisierung von Web-Applikationen
• 3 Ausprägungen
Connection Modelle (1)
Implicit Connection Cache
– JDBC 3.0 kompatible Implementierung des DataSource Interface
– Logische Verbindungen (Anforderungen) und physische Verbindungen
•
•
•
Verfügbar für thin und thick (OCI) Treiber
Ein Cache pro DataSource Instance möglich mit unterschiedlichen
Benutzer-Authentifikationen.
Cache Properties: MinLimit, MaxLimit, InitialLimit,Timout-Properties
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 14 von 31
Authentifizierung und Autorisierung von Web-Applikationen
•
Connection Modelle (2)
•
•
•
OCI Connection Pooling
Verfügbar nur für JDBC OCI Treiber (thick JDBC)
Session Mulitplexing von logischen Verbindungen über (wenige)
physische Verbindungen
Call-Basis
Trennung von Session und Connection
Codebeispiel siehe Artikel
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 15 von 31
Authentifizierung und Autorisierung von Web-Applikationen
•
•
•
Schema-Trennung
Authentifizierung und Autorisierung von Web-Applikationen
Rollen / current_schema
App-User
Owner
Internal
Ux
Uy
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 16 von 31
Proxy-Authentifizierung
Proxy Authentication
– Connection/Benutzer A agiert als Proxy für Benutzer B, C, D …..
– Verfügbar für thin und thick JDBC
– Proxy-Connections nutzen Caching
•
Prinzip
– Application-Benutzer wird authentifiziert
– Datenbank-Endbenutzer gibt Privilegiesierung vor
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 17 von 31
Authentifizierung und Autorisierung von Web-Applikationen
•
Proxy-Authentifizierung
Zu beachten:
Datenbank „kennt“ Endbenutzer
Datenbank privilegiesiert Endbenutzer
App-Benutzer benötigt kein Passwort von Endbenutzer
Auditing und Logging kennen Proxy
– proxy_sessionid in Tabelle aud$
• Unterschiedliche Möglichkeiten der Authentifizierung
(s.u.)
• Untermenge von Privilegien ist möglich
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 18 von 31
Authentifizierung und Autorisierung von Web-Applikationen
•
•
•
•
•
Proxy-Authentifizierung
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 19 von 31
Authentifizierung und Autorisierung von Web-Applikationen
-- App-User anlegen
CREATE USER application1 IDENTIFIED BY apppwd;
-- andere Authentifizierungen sind machbar
-- App-User minimal privilegieren
GRANT CREATE SESSION TO application1;
-- Enduser anlegen und privilegieren
CREATE USER enduser1 IDENTIFIED BY endpwd;
GRANT r1, r2, r3 TO enduser1;
-- (anonymes) Proxy einrichten und privilegisieren
ALTER USER client1
GRANT CONNECT THROUGH applikation1
WITH ROLE r2;
-- Eingaben überprüfen über View
SELECT * FROM DBA_PROXIES;
Proxy-Authentifizierung
-- (c) unter Angabe von Distinguished Name (noch)
CREATE USER gu IDENTIFIED GLOBALLY AS
'CN=gu,OU=Europe,O=dbconsult,L=jachenau,ST=by,C=de';
ALTER USER <usr> GRANT CONNECT THROUGH <appusr>
AUTHENTICATED USING DISTINGUISHED NAME;
-- (d) unter Nutzung eines DN über Zertifikat
ALTER USER <usr> GRANT CONNECT THROUGH <appusr>
AUTHENTICATED USING CERTIFICATE
TYPE 'X.509' VERSION '3';
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 20 von 31
Authentifizierung und Autorisierung von Web-Applikationen
-- Alternativen der Authentifizierung für Enduser
-- (a) anonym (ohne Angabe eines PW für Enduser)
ALTER USER <usr> GRANT CONNECT THROUGH <appusr>;
-- (b) unter Angabe des PW von Enduser
ALTER USER <usr> GRANT CONNECT THROUGH <appusr>
AUTHENTICATED USING PASSWORD;
Proxy-Authentifizierung
SCHEMANAME
STATUS
USERNAME
TYPE
SERVER
------------ ------------ ------------ --------- ----------CLIENT1
INACTIVE
CLIENT1
USER
PSEUDO
APPLICATION1
INACTIVE APPLICATION1
USER
DEDICATED
SYSTEM
ACTIVE
SYSTEM
USER
DEDICATED
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 21 von 31
Authentifizierung und Autorisierung von Web-Applikationen
SELECT schemaname, status, username, type, server
FROM v$session
WHERE username IS NOT NULL;
Enterprise User
Authentifizierung und Autorisierung von Web-Applikationen
enterprise user
LDAP
enterprise roles
shared schema
enterprise user
global roles
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 22 von 31
Enterprise User Proxy
Authentifizierung und Autorisierung von Web-Applikationen
LDAP
enterprise user
proxy permissions
schema
enterprise user
ALTER USER local_database_user_name
GRANT CONNECT THROUGH ENTERPRISE USERS;
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 23 von 31
Client Identifier
Authentifizierung und Autorisierung von Web-Applikationen
•
Beliebige, freibleibende „Markierung“ einer Session
– Z.B. mit Namen des Endusers
– Nicht zu verwechseln mit „Client Info“
– Zur Sicherheit entsprechende Plausis einbauen
•
Protokolliert in aud$
•
•
Enduser müssen nicht in DB eingerichtet sein
Authorisierung z.B. über Secure Application Roles
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 24 von 31
Client Identifier
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 25 von 31
Authentifizierung und Autorisierung von Web-Applikationen
-- Fragment eines Startpakets von Appuser
CREATE OR REPLACE PROCEDURE app (user_in IN VARCHAR2)
AUTHID CURRENT_USER
IS
-- diverse Deklarationen
BEGIN
-- .. je mehr kombiniert wird, desto sicherer
IF
SYS_CONTEXT ('userenv', 'ip_address') = valid_ip
AND SYS_CONTEXT ('userenv', 'host') = valid_host
AND SYS_CONTEXT ('userenv', 'external_name') = valid_ext
THEN
-- Client Identifier wie authentifizierter Benutzer
DBMS_SESSION.set_identifier (user_in);
-- Rolle Aktivieren
DBMS_SESSION.set_role ('DEMO_ENDUSER');
-- etc.
Client Identifier
Authentifizierung und Autorisierung von Web-Applikationen
-- Zugriff auf gesetzten Client Identifier
SELECT * FROM my_view
WHERE benutzer = SYS_CONTEXT('userenv', 'client_identifier');
-- Löschen…
BEGIN
DBMS_SESSION.clear_identifier;
END;
/
-- Absicherung der Logik des Startpakets durch Wrap
-- SQL-Syntax in Datei, dann auf BS-Ebene:
wrap iname=pack.sql
-- Verbesserungen unter 10g (siehe nächste Folie)
-- … oder in R2:
begin
dbms_ddl.create_wrapped
('create or replace procedure p1 as
begin null; end;')
end;
/
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 26 von 31
Client Identifier
1APP:
1USER_IN:
1VARCHAR2:
1AUTHID:
1CURRENT_USER:
1LV_VALID_IP:
1CONSTANT:
150:
1192.168.13.113:
1LV_VALID_HOST:
1myserver:
1LV_VALID_EXTERNAL:
1cn=guenter,cn=users,dc=dbconsult,dc=de:
1SYS_CONTEXT:
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 27 von 31
Authentifizierung und Autorisierung von Web-Applikationen
abcd
7
31d 223
abmdzXjvd7hFJQbws1ew0M8o9rQwg/DxzPYVfI4C/mgPUprlymWkSnkGhDxxF2fr8Rr8Qebq
ahsRpHmNzZq7yU1Z31JrqHkpOrmtxHjMUkZ6XOdWoQ73J8MrWg72l8Mh4OUFdFQnYKyEicUC
JVS1Lsr1pqY/0LCfl9SsuvfdOOktd0Chx0ZnjL9VRgf7RpD4SJjHErG5M4OQ/y60tQKIlYNx
Autorisierung
Anforderungen
– Zentrale App-Accounts mit wechselnden Identitäten/Endbenutzern
– Individuelle Privilegisierung (need to know- und least privilege-Prinzip)
•
Konsequenzen
– Keine fest gegranteten Objektprivilegien möglich
– Flexible und sichere Schaltung von Rollen: Secure Application Roles
+
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 28 von 31
Authentifizierung und Autorisierung von Web-Applikationen
•
Secure Application Roles
Authentifizierung und Autorisierung von Web-Applikationen
•
Rollenaktivierung über prädestinierte Programmeinheiten
– Programme sollten Plausibilitäten prüfen
•
Zuteilung der Rollen an App-Benutzer nicht als Default!
-- Die Rollen werden geschaltet über das Schema SECUSER (Locking)
CREATE ROLE demo_enduser IDENTIFIED USING secuser.setpriv;
-- Aufbau der Programmeinheit
-- Kontrolle der angelegten Application Roles
SELECT ROLE, SCHEMA, PACKAGE
FROM dba_application_roles WHERE SCHEMA = 'SECUSER';
-- Zuteilung der Application Roles an den APP-Benutzer
GRANT demo_enduser TO appuser;
GRANT EXCUTE ON secuser.setpriv TO appuser;
-- Application Roles sollen keine Default Rollen sein:
ALTER USER appuser DEFAULT ROLE NONE;
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 29 von 31
Secure Application Roles
– Implementiert in separatem Security Schema ohne create
session Privileg (account lock)
• Diverse Plausbilitäten einbauen:
– Hierzu sys_context('userenv ', '…') oder v$session
– Z.B. authentication_type, ip_address, terminal,
programm etc.
• Code schützen durch „wrapping“
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 30 von 31
Authentifizierung und Autorisierung von Web-Applikationen
• Programmeinheit
Virtual Private Database
VPD = fine grain access control
– Kontext-abhängige, automatische Generierung von where-Klauseln
•
•
Eingeführt unter Version 8, unter 9 und 10 erweitert
Komponenten
– Anwendungskontexte – kennen name-value-Paare
– Policy-Funktionen – erzeugen Where-Klauseln
– Policies – verbinden Funktionen, DB-Objekte und Operationen
where col = 'x'
User A> SELECT * FROM x;
User B> SELECT * FROM x;
Version 10-2005
where col = 'y'
©Database Consult GmbH - Jachenau
Folie 31 von 31
Authentifizierung und Autorisierung von Web-Applikationen
•
Virtual Private Database
Authentifizierung und Autorisierung von Web-Applikationen
• Anforderungen bei Webanwendungen
– Sessions mit wechselnden Identitäten
– Dadurch schnelle und effiziente Anpassung der Kontexte
• Technologien
– Globale Applikationskontexte
• Gespeichert in SGA, d.h. für alle Sessions verfügbar
• Können gekoppelt sein an User und Client-Identifier
– Funktions, Policies und Policy Groups wie gehabt
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 32 von 31
Virtual Private Database
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 33 von 31
Authentifizierung und Autorisierung von Web-Applikationen
-- Anlegen und autorisieren des globalen Contexts
CREATE CONTEXT test_ctx USING secusr.secproc
ACCESSED GLOBALLY;
-- pauschales aktivieren (für alle) in SECPROC
DBMS_SESSION.SET_CONTEXT
(namespace => 'test_ctx' ,attribute => ' name1'
,value => ' wert1');
-- Ausschalten
DBMS_SESSION.CLEAR_ALL_CONTEXT ('test_ctx');
-- Aktivieren für alle unter Schema USR
DBMS_SESSION.SET_CONTEXT
(namespace => 'test_ctx' ,attribute => ' name1'
,value => ' wert1' , username => ' USR');
-- zusätzliche Kopplung an Client Identifier
DBMS_SESSION.SET_CONTEXT
(namespace => 'test_ctx' ,attribute => ' name1'
,value => ' wert1' , username => ' USR',client_id => 'U');
Auditing
–
–
–
–
–
–
–
–
–
AUDIT_TYPE
Session_id
Proxy_sessionid
Global_uid
Db_user
Client_id
Ext_name
Comment_text (enthält Authentication_Type)
Priv_used
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 34 von 31
Authentifizierung und Autorisierung von Web-Applikationen
• Erweiterte Attribute, zB. DBA_COMMON_AUDIT_TRAIL
Authentifizierung und Autorisierung von Web-Applikationen
Danke für´s Zuhören
Version 10-2005
©Database Consult GmbH - Jachenau
Folie 35 von 31