DOAG 2010 Kerberos für die Datenbank Dr. Günter Unbescheid Database Consult GmbH Jachenau Database Consult GmbH Kerberos für die Datenank • • • Gegründet 1996 Kompetenzen im Umfeld von ORACLE-basierten Systemen Tätigkeitsbereiche – – – – – – – – – 11/2010 Tuning, Installation, Konfiguration Security, Identity Management Expertisen/Gutachten Support, Troubleshooting, DBA-Aufgaben Datenmodellierung und –design Datenbankdesign, Systemanalysen Programmierung: SQL,PL/SQL,Java, JSP, ADF, BC4J Workshops www.database-consult.de ©Database Consult GmbH - Jachenau Folie 2 von 36 Agenda Kerberos für die Datenank • • • • Einführung Kerberos Konfiguration Kerberos – Datenbank Kerberos - Datenbank – LDAP-Dienst Ausblick: Erweiterte Möglichkeiten der LDAP Einbindung 11/2010 ©Database Consult GmbH - Jachenau Folie 3 von 36 Kerberos für die Datenank Einführung Kerberos 11/2010 ©Database Consult GmbH - Jachenau Folie 4 von 36 4 Kerberos Kerberos für die Datenank -- Anmeldung als [email protected] sqlplus /@targetdb SQL> show user USER is "[email protected]" -- Alternativ: Anmeldung als [email protected] sqlplus /@targetdb SQL> show user USER is "SHAREUSER" SELECT global_name, user, sys_context('userenv','external_name') external_user FROM global_name; GLOBAL_NAME USER EXTERNAL_USER -------------------- ---------- -------------------------------TARGETDB.DBC.DE SHAREUSER cn=guenter,cn=Users,dc=dbc,dc=de 11/2010 ©Database Consult GmbH - Jachenau Folie 5 von 36 Kerberos Kerberos für die Datenank • Verteilter Autentifizierungsdienst – SSO Prinzip – Basis symmetrische Kryptografie – Kerberos 5 Netzwerkdienst als „trusted third party“ • Von Microsoft genutzt als Standardprotokoll für die Authentifizierung • Ideale Benutzerbasis in Windowsnetzwerken • Tools zur Nutzung unter Unix & CO. • Anmeldung als /@zieldb • Verbunden mit gleichnamigem "externen" DB-User 11/2010 ©Database Consult GmbH - Jachenau Folie 6 von 36 Benutzer Resource > Authentication Request Ticket Granting Server (TGS) Authentication Server (AS) > *AS < Response mit TGT, Sitzungsschlüssel > *TGS > Anforderung Service Ticket (Ressource,TGT,Authent.) < Ticket mit Auth. an < Ticket, Sitzungsschlüssel Service > Service bestätigt Weitere Kommunikation verschlüsselt oder nicht Tickets sind immer nur vom Target lesbar 11/2010 ©Database Consult GmbH - Jachenau Folie 7 von 36 Kerberos für die Datenank KDC Kerberos Ablauf Kerberos Kerberos für die Datenank • • • okinit testuser sqlplus /@zieldb Oracle-User: [email protected] (entsprechend Principal Name) 11/2010 ©Database Consult GmbH - Jachenau Folie 8 von 36 Kerberos (Unix Umfeld) Kerberos für die Datenank okinit testuser Kerberos Utilities for Solaris: Version 10.2.0.1.0 – Production on 03-MAY-2010 16:57:49 Copyright (c) 1996, 2004 Oracle. All rights reserved. Password for [email protected]: oklist Kerberos Utilities for Solaris: Version 10.2.0.1.0 – Production on 03-MAY-2010 16:59:46 Copyright (c) 1996, 2004 Oracle. All rights reserved. Ticket cache: /opt/oracle/1020client/network/krb5/krbcache Default principal: [email protected] Valid Starting Expires 03-May-2010 16:58:04 04-May-2010 00:57:49 krbtgt/[email protected] Principal sqlplus /@zieldb 11/2010 ©Database Consult GmbH - Jachenau Folie 9 von 36 Kerberos für die Datenank Kerberos Konfiguration 11/2010 ©Database Consult GmbH - Jachenau Folie 10 von 36 10 Kerberos-Konfiguration (kurz) • • Lizenz: Advanced Security Option Anlegen Principal User, anhängen Service Principal Name (AD) Konfigurationsdateien sqlnet.ora und krb5.conf (Client/Server) unter Windows: krb5.ini Keyfile auf den/die DB-Server kopieren – enthält Credentials Datenbank-User mit entsprechendem Principal Name ktpass -princ oracle/[email protected] -mapuser testserver01 -pass password123 –DesOnly -crypto des-cbc-crc -ptype KRB5_NT_PRINCIPAL –kvno 1 –out C:\Users\keytab.testserver01 -------------------CREATE USER "[email protected]" IDENTIFIED EXTERNALLY; 11/2010 ©Database Consult GmbH - Jachenau Folie 11 von 36 Kerberos für die Datenank • • • Konfiguration Kerberos für die Datenank • Lizenz: Advanced Security Option – Extra der Enterprise Edition • Client – Type Administrotor/Custom – JDBC [thick, thin (>= 11gR1)] • Unix: Kommando adapters • Network Manager (netmgr) – unter „Profil“ der Bereich „Oracle Advanced Security“ opatch lsinventory –detail –oh <oracle home> ... Oracle Advanced Security .... ########### a d a p t e r s ######### Installed Oracle Net transport protocols are:.... Installed Oracle Net naming methods are: Installed Oracle Advanced Security options are: 11/2010 ©Database Consult GmbH - Jachenau 11.2.0.1.0 Folie 12 von 36 Konfiguration Kerberos für die Datenank • Kerberos Principal – <Name> für die Zuordnung des symmetrischen Schlüssels • Format: <servicename>/<hostname>@<REALM> – <hostname> als "user account" , use DES encryption aktivieren – Service Principal Name ## AD Konsole [General tab] First name: testserver01 Display name: testserver01 Password: <beliebiges Kennwort> [Account tab:] User logon name: [email protected] User logon name (pre-Windows 2000): DBC\testserver01 ########################################## ktpass -princ oracle/[email protected] -mapuser testserver01 -pass password123 -DesOnly -crypto des-cbc-crc -ptype KRB5_NT_PRINCIPAL –kvno 1 –out C:\Users\keytab.testserver01 11/2010 ©Database Consult GmbH - Jachenau Folie 13 von 36 Konfiguration Kerberos für die Datenank -- Kontrolle setspn -L testserver01 Registered ServicePrincipalNames for CN=testserver01,CN=Users,DC=dbc,DC=de: oracle/testserver01 ### Kopieren auf den betreffenden DB-Server ### Kontrolle oklist -k –t /<pfad>/<keyfile> Kerberos Utilities for Solaris: Version 10.2.0.1.0 - Production on 30-APR-2010 11:42:37 Copyright (c) 1996, 2004 Oracle. All rights reserved. Service Key Table: /u01/app/oracle/product/1020/network/krb5/keytab.testserver01 Ver 1 11/2010 Timestamp Principal 01-Jan-1970 01:00:00 oracle/[email protected] ©Database Consult GmbH - Jachenau Folie 14 von 36 Konfiguration SERVERSEITE sqlnet.ora NAMES.DIRECTORY_PATH= (TNSNAMES) SQLNET.AUTHENTICATION_SERVICES = (kerberos5) SQLNET.KERBEROS5_CONF = /u01/oracle/1020client/network/krb5/krb5.conf SQLNET.KERBEROS5_CC_NAME = /opt/oracle/1020client/network/krb5/krbcache SQLNET.KERBEROS5_CONF_MIT = true SQLNET.AUTHENTICATION_KERBEROS5_SERVICE = oracle SQLNET.KERBEROS5_KEYTAB = /u01/oracle/product/krb5/keytab.testserver01 11/2010 ©Database Consult GmbH - Jachenau Folie 15 von 36 Kerberos für die Datenank CLIENTSEITE sqlnet.ora (Windows System) NAMES.DIRECTORY_PATH= (TNSNAMES) SQLNET.AUTHENTICATION_SERVICES = (kerberos5) # Erreichbarkeit KDC SQLNET.KERBEROS5_CONF = c:\windows\krb5.ini # Credential Cache (TPT usw.) SQLNET.KERBEROS5_CC_NAME = OSMSFT:// # SQLNET.KERBEROS5_CC_NAME = /opt/oracle/1020client/network/krb5/krbcache SQLNET.KERBEROS5_CONF_MIT = true SQLNET.AUTHENTICATION_KERBEROS5_SERVICE = oracle Konfiguration Kerberos für die Datenank • Serviceticket-Anforderung über – – – – Host-Klausel des tnsnames-Eintrages hostname auf Zielserver ergänzt durch Eigeneintrag von /etc/hosts ergänzt durch Kerberos5 Servicename SERVERSEITE sqlnet.ora (krb5.ini/krb5.conf) mit Zeitversatz [libdefaults] default_realm = DBC.DE clockskew = 3000 [realms] DBC.DE = { kdc = adnet.dbc.de } [domain_realm] .dbc.de = DBC.DE dbc.de = DBC.DE ##### /etc/hosts <dbserver IP> testserver01.dbc.de testserver01 11/2010 ©Database Consult GmbH - Jachenau Folie 16 von 36 Konfiguration Kerberos für die Datenank ########## AD Enduser ####################### Username/DN CN=testuser,CN=Users,DC=dbc,DC=de Logon Name [email protected] msDS-PrincipalName DBC\testuser userPrincipalName [email protected] ########## DB ######################## CREATE USER "[email protected]" IDENTIFIED EXTERNALLY; GRANT connect, resource TO "[email protected]"; ########## Client-Seite ############### okinit testuser Kerberos Utilities for Solaris: Version 10.2.0.1.0 - Production on 03-MAY-2010 16:57:49 Copyright (c) 1996, 2004 Oracle. All rights reserved. Password for [email protected]: 11/2010 ©Database Consult GmbH - Jachenau Folie 17 von 36 Konfiguration # Client: Tracing Logging nur im Bedarfsfall TRACE_LEVEL_CLIENT=16 TRACE_DIRECTORY_CLIENT=/u01/oracle/1020client/network/network/trace TRACE_UNIQUE_CLIENT=on TRACE_FILE_CLIENT=kerb_client # Okinit: Tracing TRACE_LEVEL_OKINIT=16 TRACE_DIRECTORY_OKINIT=/u01/oracle/1020client/network/network/trace TRACE_FILE_OKINIT=kerb_okinit 11/2010 ©Database Consult GmbH - Jachenau Folie 18 von 36 Kerberos für die Datenank # Server: Tracing Logging nur im Bedarfsfall TRACE_LEVEL_SERVER = SUPPORT TRACE_FILE_SERVER = NETserver.ora TRACE_DIRECTORY_SERVER = /u01/app/oracle/product/1020/network/network/trace TRACE_TIMESTAMP_SERVER = TRUE Kerberos Kerberos für die Datenank • Kerberos authentifiziert. • Authorisierung erfolgt separat. • Weitere Konfigurationsmöglichkeiten: – Kombination mit Enterprise Usern: Kerberos User „mapped“ auf shared schema – Umleitung auf proxy user • Tool/API Unterstützung, u.a. – SQL Developer (über OCI/thick driver) – JDBC thin und thick 11/2010 ©Database Consult GmbH - Jachenau Folie 19 von 36 Kerberos für die Datenank Kerberos - Datenbank – LDAP-Dienst 11/2010 ©Database Consult GmbH - Jachenau Folie 20 von 36 20 Authentifizierungsvarianten Kerberos für die Datenank 11/2010 ©Database Consult GmbH - Jachenau Folie 21 von 36 Komponenten – DB: Enterprise Edition – DB: ASO für Authenfitizierungen ausser Password – OID/OVD – Bestandteil von „Identity Management“ von OFM (11g) • Verzeichnisdienst – Oracle Internet Directory (OID) + Repository – Active Directory (AD) – alternativ/zusätzlich – ggf. Oracle Virtual Directory als „Frontend“ zur Integration • Weblogic Server – Admin Oberflächen OID/OVD 11/2010 ©Database Consult GmbH - Jachenau Folie 22 von 36 Kerberos für die Datenank • Produkte/Lizenzen Enterprise User/Roles Kerberos für die Datenank • LDAP-Verzeichnisdienst – Benutzer (enterprise user), Rollen (enterprise roles) – registrierte Datenbanken, „Mappings“ – Authentifizierung über PW, Zertifikat, Kerberos • Datenbank(en) – Globale Benutzer, Globale Rollen – Verbindung zum Verzeichnisdienst (ldap.ora) • Motivation – Zentralisierung der Benutzerverwaltung – Reduktion der lokalen DB-Administration 11/2010 ©Database Consult GmbH - Jachenau Folie 23 von 36 Enterprise Benutzer Kerberos für die Datenank 11/2010 ©Database Consult GmbH - Jachenau Folie 24 von 36 EUS Modell 1 OID für Benutzer und Metadaten Authentifizierung per Kerberos Ticket über die Datenbank Mapping auf Principal Name eines Enterprise Users Zuordnung auf shared schema + Global Role der Ziel-Datenbank 11/2010 ©Database Consult GmbH - Jachenau Folie 25 von 36 Kerberos für die Datenank • • • • Procedere RDBMS-Software lt. Zertifizierungsmatrix installieren Repository Datenbank anlegen – UTF8 Zeichens. Weblogic Software installieren (java –jar) OFM – IDM Software installieren (OUI) Patch Sets für WLS + IDM Konfiguration von WLS/IDM – WLS Domäne mit Admin Server + Managed Server • ldap.ora, Registrierung DBs, Shared Schemas, Roles • Enterprise User + Roles einrichten • Global Users und Roles in den Zielsystemen 11/2010 ©Database Consult GmbH - Jachenau Folie 26 von 36 Kerberos für die Datenank • • • • • • Procedere Kerberos für die Datenank • • Verbindung Datenbank – OID/LDAP über ldap.ora Erstellen manuell oder per Net Configuration Assistant – Auswahl von DIRECTORY USAGE CONFIGURATION • Admin Kontext verweist auf Metadaten -- ldap.ora DIRECTORY_SERVERS= (oidserver:6051:6055) DEFAULT_ADMIN_CONTEXT = "dc=dbc,dc=de" DIRECTORY_SERVER_TYPE = OID 11/2010 ©Database Consult GmbH - Jachenau Folie 27 von 36 Procedere Registrierung der Datenbank über Database Configuration Assistant (dbca) – silent Mode mit Response Datei ist möglich • • Dadurch: Eintrag im OID unter Admin Kontext, Wallet-Aufbau Einrichten/prüfen init.ora -- Response-Datei (Ausschnitt) -- Aufruf: dbca -silent -responseFile dbcaLDAP.rsp PERATION_TYPE = "configureDatabase" [CONFIGUREDATABASE] SOURCEDB = "orcl" REGISTERWITHDIRSERVICE= TRUE DIRSERVICEUSERNAME= "name" DIRSERVICEPASSWORD= "password" WALLETPASSWORD= "password" DIRECTORY_SERVERS= (oidserver:6051:6055) DEFAULT_ADMIN_CONTEXT = "dc=dbc,dc=de" DIRECTORY_SERVER_TYPE = OID 11/2010 ©Database Consult GmbH - Jachenau Folie 28 von 36 Kerberos für die Datenank • Procedere Kerberos für die Datenank -- Prüfung des Wallet in $ORACLE_HOME/admin/<SID>/wallet mkstore -wrl . -viewEntry ORACLE.SECURITY.DN mkstore -wrl . -viewEntry ORACLE.SECURITY.PASSWORD -- init.ora ldap_directory_access = PASSWORD rdbms_server_dn = 'cn=T1,cn=OracleContext,dc=dbc,dc=de‘ -- Verbindungskontrolle zum Verzeichnisdienst mit PW aus dem Wallet ldapbind -h <ldaphost> -p <non-ssl-port> \ -D "cn=T1,cn=OracleContext,dc=fra,dc=bb,dc=de" -w "DB pwd" ldapbind -h <ldaphost> -p <non-ssl-port> \ -W "file:/opt/oracle/1020/admin/T1/wallet" -P "wallet pwd" -- Datenbank CREATE USER jedermann PROFILE "DEFAULT" IDENTIFIED GLOBALLY AS ''; GRANT CREATE SESSION TO jedermann; CREATE ROLE r_global1 IDENTIFIED GLOBALLY; GRANT <provilege> TO r_global1; -- kein grant an User möglich 11/2010 ©Database Consult GmbH - Jachenau Folie 29 von 36 Enterprise User Werkzeuge: – EM Database Control und Grid Control – eusm Command line Tool (ab 11g [ID 1085065.1] ) – Enterprise Security Manager (esm) (grafisch 10g) 11/2010 ©Database Consult GmbH - Jachenau Folie 30 von 36 Kerberos für die Datenank • Enterprise Roles Kerberos für die Datenank 11/2010 ©Database Consult GmbH - Jachenau Folie 31 von 36 Kerberos für die Datenank Erweiterte Möglichkeiten 11/2010 ©Database Consult GmbH - Jachenau Folie 32 von 36 32 Architekturvarianten Kerberos für die Datenank • Problematik User-Daten – Redundanz vermeiden – Userstamm in AD – ggf. weitere Sourcen: Verzeichnisse, Tabellen etc. • Lösungsvarianten – OID – Directory Integration Plattform (kopieren) – OID – Server Chaining (verlinken) – OVD integriert/verlinkt diverse Verzeichnisse/DBs • Trennung von Metadaten und Userdaten • Schemaerweiterung für EUS notwendig • Password-Problematik – ggf. Passwordfilter (für AD) 11/2010 ©Database Consult GmbH - Jachenau Folie 33 von 36 OVD Nutzung Kerberos für die Datenank 11/2010 ©Database Consult GmbH - Jachenau Folie 34 von 36 (Hoch)Verfügbarkeit Kerberos für die Datenank 11/2010 ©Database Consult GmbH - Jachenau Folie 35 von 36 Kerberos für die Datenank Danke für‘s Zuhören www.database-consult.de 11/2010 ©Database Consult GmbH - Jachenau Folie 36 von 36