2009-06-17 8 views
4

Wir möchten den DB-Zugriff (Oracle) für unsere Benutzer nur über unsere eigene Anwendung zulassen - nennen wir sie "ourTool.exe", die lokal auf den Computern der Benutzer installiert ist. Derzeit müssen die Benutzer bei jedem Start von "ourTool" Benutzernamen/Passwort angeben. Das bereitgestellte Passwort wird entschlüsselt und wir verwenden username/decrypted-password, um sich endgültig bei der Oracle DB anzumelden. Dieser Ansatz verhindert, dass Benutzer direkt auf unsere Datenbank zugreifen können, indem sie Tools von Drittanbietern (SQLplus, Excel, Access, ...) verwenden und dass alles in der DB garantiert mit "ourTool" eingegeben/bearbeitet wurde.Orakel-DB-Login nur für bestimmte Anwendungen zulassen?

Nun möchte einer unserer Kunden seinen Benutzern "Single Sign-On" (mit SmartCards/Oracle PKI) erlauben. Dadurch kann der Benutzer bei jedem Start von "ourTool" eine Verbindung zu unserer Datenbank herstellen, ohne ein Passwort anzugeben. Aber das gleiche gilt für die potenziell gefährlichen Tools wie SQLplus, Excel, Access usw.

Gibt es eine Möglichkeit, dies zu verhindern? Wie können wir sicherstellen, dass jeder Datensatz in unserem DB nur mit "ourTool" in diesem Szenario erstellt/bearbeitet/gelöscht wird?

Antwort

2

Da es Ihre Anwendung ist und Sie die Quelle kontrollieren können, können Sie entweder passwortgeschützte Datenbankrollen oder sichere Anwendungsrollen verwenden, die von ourTool.exe aktiviert sind. (siehe http://www.oracle.com/technology/obe/obe10gdb/security/approles/approles.htm).

Zum Beispiel würde bei einer kennwortgeschützten Datenbankrolle die erste Verbindung nur mit der Berechtigung CREATE SESSION erfolgen, und dann würde ourTool.exe die SET ROLE mit nur Ihnen bekannten Kennwort ausgeben. Jede andere Anwendung verfügt nicht über die Informationen zum Festlegen der Rolle. Offensichtlich werden die Berechtigungen nur der Rolle und nicht direkt dem Benutzer in dieser Konfiguration gewährt.

+0

Seien Sie vorsichtig beim Einbetten des PW in die Quelle - es gibt viele Tools, mit denen Sie die eingebetteten ASCII-Strings in einer ausführbaren Datei sehen können. – DCookie

+0

guter Punkt - ja, Sie müssen sich mit einer Art und Weise der Verschleierung der Zeichenfolge in der .exe – dpbradley

+0

kommen Wenn Sie nicht den Netzwerkverkehr sichern, konnten sie immer noch den Text vom PC an die Datenbank übergeben. Ich denke, die SQL * -Netzverschlüsselung ist Teil einer der zusätzlichen Kostenoptionen für die Enterprise Edition. –

2

standardmäßig OCI trägt die anrufende Anwendung EXE Namen und Sie können darauf zugreifen, indem v$session Abfrage:

SELECT program 
FROM V$SESSION 

, die Sie in einem AFTER LOGON Trigger tun können.

Aber das kann leicht überschrieben werden und sollte nicht verlässlich sein.

+0

+1 - es wird versehentliches Login über SQL-Tools verhindern. –

1

ich meine sqlplus.exe zu myTool.exe umbenannt und nach einer Verbindung mit myTool.exe

SELECT program 
FROM V$SESSION 
where username = 'SYSTEM'; 

Returns machen: myTool.exe

So bewusst sein, wie Quassnoi sagte: obwohl verwendbar unter bestimmten Umständen ist es sicherlich kein Bullit-Beweis.

Verwandte Themen