Oracle Secure External Password Store

Oracle Secure External Password Store Sven Vetter Trivadis AG Bern Schlüsselworte: Passwort, Wallet, Single SignOn, PKCS#12, PKCS#11, Zertifikat, Aut...
Author: Gerda Pfaff
12 downloads 2 Views 73KB Size
Oracle Secure External Password Store Sven Vetter Trivadis AG Bern

Schlüsselworte: Passwort, Wallet, Single SignOn, PKCS#12, PKCS#11, Zertifikat, Autologin

Einleitung Sie müssen sich viele Passwörter für die Anmeldung an verschiedenen Oracle-Datenbanken merken? Eine "grosse" Single SignOn-Lösung haben Sie aber noch nicht eingeführt? Dann könnte dieses Feature für Sie hilfreich sein! Konzept: • Alle Ihre Passwörter werden in einem Wallet abgelegt • Sie benötigen nur dessen Master-Passwort für den Zugriff auf Ihre Datenbanken Wallet Management Für diverse Oracle Features (nicht nur für Secure External Password Store) wird ein Wallet gebraucht: • Verschlüsselung von sensitiven Daten in Datenfiles • Verschlüsselung von Backups und Exports • SSL-Verbindung (Verschlüsselung, Integritätsprüfung und Autorisierung) Ein Wallet entspricht dem PKCS#12-Standard. Im Wallet können sowohl Zertifikate als auch (seit Oracle 10.2) Passwörter gespeichert werden. Mit folgenden Tools können Wallets bearbeitet werden: • Oracle Wallet Manager • orapki (siehe Anhang F orapki Utility im Oracle Database Advanced Security Administrator's Guide) • mkstore z.B. Wallet erzeugen (neues Wallet-Passwort wird abgefragt) mkstore -wrl $ORACLE_BASE/admin/$ORACLE_SID/wallet -create

Durch mkstore ist per Default "Auto Login" eingeschaltet, dies hat aber einige Konsequenzen: • Es wird eine zweite Datei (cwallet.sso) erzeugt, durch welche bestimmte (Lese-) Operationen ohne Passwortabfrage möglich sind • Das normalerweise verschlüsselte Wallet kann von der Datenbank abgefragt werden • Änderungen benötigen noch das Passwort • Das Wallet kann einschliesslich sso-Datei auf einen anderen Rechner kopiert werden und ist auch dort geöffnet (seit Oracle 10g) - und kann z.B. für Entschlüsselungen gebraucht werden! Ein offenes Wallet wird von manchen Tools gebraucht, um ohne Benutzereingriff zu arbeiten: • Backup-Verschlüsselung • Datenverschlüsselung in Datenfiles • Oracle Secure Password Store • SSL Deswegen: Autologin ist manchmal notwendig, dann aber das Wallet gut schützen (am besten auf einem externen Device, z.B. einem USB-Stick mit Passwortverschlüsselung) ! Natürlich kann auch ein Wallet ohne Autologin erzeugt werden (besser gesagt, das SSO-File wieder gelöscht werden): mkstore -wrl $ORACLE_BASE/admin/$ORACLE_SID/wallet \ -create -deleteSSO Alternativ zu Auto Login kann das Wallet auch direkt in der Datenbank geöffnet werden: ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY {password}; Und natürlich auch wieder geschlossen werden: ALTER SYSTEM SET WALLET CLOSE; Dies funktioniert aber nicht für Oracle Secure Password Store, da dabei das Wallet auf der Client-Seite ist! Und den Enterprise Login Assistent gibt es leider nicht mehr…

Installation und Konfiguration Auf dem Client muss in SQLNET.ORA der Speicherplatz des Wallets eingetragen sein: WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = p:\Oracle\wallets) ) )

Ausserdem muss eventuelle SSL Authentication (welche ja auch über das Wallet gesteuert wird) ausgeschaltet sein: SQLNET.WALLET_OVERRIDE = TRUE Jetzt können die Passwörter eingetragen werden (im Beispiel wird für den connect_string "DB1" der User "scott" mit Passwort "tiger" definiert): mkstore -wrl p:\Oracle\wallets -createCredential DB1 \ scott tiger Die Anmeldung an der DB erfolgt durch: connect /@DB1 Das bedeutet: • Pro Connect_string kann nur ein Username/Passwort abgespeichert werden • Brauche ich mehrere Benutzer innerhalb einer DB, muss ich mehrere Connect_strings in TNSNAMES.ORA (ONAMES, OID, …) definieren Mit mkstore können folgende Operationen auf die Username/Passwort-Kombinationen durchgeführt werden • Weitere Usernamen/Passwort-Kombinationen erzeugen: -createCredential • Löschen einer Kombination: -deleteCredential • Anzeigen aller Kombinationen: -listCredential mkstore -wrl p:\Oracle\wallet –listCredential Enter password: List credential (index: connect_string username) 2: DB1.svv.bern.trivadis.com system 1: DB1 scott 4: DB920 appl1 3: DB1_DBA system Die Passwörter innerhalb der Datenbank und innerhalb des Wallets werden nicht synchronisiert. Deshalb muss mit mkstore auch das Passwort (oder eventuell auch der Usernamen) geändert werden: mkstore -wrl p:\Oracle\wallets -modifyCredential \ DB1 scott new_pwd Enter password: Modify credential Modify 1

Innerhalb einer Oracle-Session kann nicht festgestellt werden, ob konventionell per Usernamen/Passwort oder per Wallet angemeldet wird: SELECT sys_context('userenv','authentication_method') method FROM dual; METHOD ------------------------------PASSWORD Das Feature wird auf Client-Seite durch OracleNet ausgeführt: • Geht dadurch gegen alle unterstütze Oracle-Datenbank-Versionen • Geht mit jedem Client, der auf OracleNet 10.2 basiert Ablage des Wallets Das Wallet kann auch in der Windows Registry abgelegt werden. Dadurch ist eine Verteilung einfacher (es müssen keine Files an die richtige Stelle kopiert und geschützt werden). Vorgehen (mit Oracle Wallet Manager Wallet in Registry laden): • "Wallet (File) öffnen • "Auto Login einschalten" • "Use Windows Registry" einschalten • Save • Location auswählen (es können mehrere Wallets gespeichert werden, standardmässig DEFAULT)

Die Daten werden gespeichert unter: HKEY_CURRENT_USER\Software\Oracle\WALLETS\

Dadurch werden die Informationen bei Roaming Profiles mitgenommen!

SQLNET.ORA muss dafür wie folgt angepasst werden: WALLET_LOCATION = (SOURCE = (METHOD = REG) (METHOD_DATA = (KEY = DEFAULT) ) ) Method legt fest, dass das Wallet aus der Registry gelesen wird, Key legt die Location innerhalb der Registry fest. Leider kann das Passwort in der Registry nicht geändert werden (siehe Metalink Doc ID 4701381). Dies wurde als Enhancement Request anerkannt. Zitat: "Very desirable feature ... Easier Administration of wallets stored in registry. Otherwise each time a change is required, we will have to save the wallet from registry to file, make a change and save the wallet back into the registry" Seit Oracle 10g unterstützt Oracle Hardware Security Module nach Public-Key Cryptography Standards (PKCS) #11. Zertifiziert sind im Moment aber nur Module von nCipher Corporation. Laut Metalink sollten auch Module von Chrysalis und Eracom funktionieren. Die Geräte dieser Hersteller haben aber alle Koffergrösse und Autopreise – und sind deshalb für die Speicherung meiner Passwörter nur bedingt geeignet. Ob und wann Passwörter darauf gespeichert werden können, ist sowieso noch unklar (Zitat aus einem Service Request): "We will check what the plans are for support of PCKS#11 and secure external password store. I do not believe we have any support for this combination in the current release."

Toolunterstützung Getestet und funktioniert: • SQL Navigator (Version 5.0.0): Username leer lassen, als Passwort "/" eingeben • TOAD (Version 8.6.0): Username leer lassen, als Passwort "/" eingeben, im Login-Fenster wird "EXTERNAL" angezeigt • RMAN • SQLPLUS

Getestet und funktioniert (noch) nicht • Developer Suite 10.1.2 (nutzt eigene Network-Libraries 10.1) o Designer o Forms, Reports o JDeveloper • SQL-Developer (checkt, ob Username und Passwort ausgefüllt) • Oracle Enterprise Manager (checkt, ob Username und Passwort ausgefüllt) • TORA Risiken Schon erwähnt: Das Wallet kann zusammen mit dem Autologin-File gestohlen werden. Dadurch können alle Ihre Accounts benutzt werden! Ausserdem: Wenn das Wallet-Passwort bekannt ist, kann das Passwort im Klartext aus dem Wallet extrahiert werden!!! Dies darf aber nie der Fall sein! C:\>mkstore -wrl p:\Oracle\wallets \ -viewEntry oracle.security.client.password1 Enter password: oracle.security.client.password1 = tiger Fazit Oracle Secure External Password Store ist eine Erleichterung, um sich z.B. in einer grossen Entwicklungsumgebung nicht alle Passwörter merken zu müssen. Als weiteres Anwendungsgebiet sehe ich die Möglichkeit, in Programmen (über das Netzwerk) kein Passwort hart codieren zu müssen (z.B. RMAN, Exports, ..., aber auch Applikationsserver). Durch Ablage in der Registry ist eine einfache Verteilung bei Windows Clients möglich. Leider ist eine Änderung des Passwortes in der Registry (noch) nicht möglich. Ausserdem unterstützen diverse Tools dieses Feature (noch) nicht. Die erwähnten Risiken sollten unbedingt beachtet werden.

Kontaktadresse: Sven Vetter Trivadis AG Papiermühlestrasse 73 CH-3014 Bern Telefon: Fax: E-Mail Internet:

+41-31-928 09 60 +41-31-928 09 64 [email protected] http://www.trivadis.com

Suggest Documents