2009-06-17 61 views
4

我們只想通過我們自己的應用程序允許數據庫訪問(Oracle)給我們的用戶 - 我們稱之爲「ourTool.exe」,本地安裝在用戶計算機上。目前,用戶在啓動「ourTool」時必須提供用戶名/密碼。提供的密碼密碼被解密,我們使用用戶名/解密密碼來最終登錄到Oracle數據庫。這種方法可以防止用戶使用第三方工具(SQLplus,Excel,Access,...)直接訪問我們的數據庫,並且DB中的所有內容都保證使用「ourTool」輸入/編輯。只允許oracle db登錄到特定的應用程序?

現在,我們的客戶之一希望允許其用戶「單點登錄」(使用SmartCards/Oracle PKI)。有了這個,用戶將能夠連接到我們的數據庫,而無需在每次啓動「ourTool」時提供任何密碼。但對於諸如SQLplus,Excel,Access等具有潛在危險的工具也是如此。

有沒有辦法來防止這種情況?我們如何確保我們的數據庫中的每條記錄僅在本場景中使用「ourTool」創建/編輯/刪除?

回答

2

由於它是您的應用程序,您可以控制源代碼,因此可以使用受密碼保護的數據庫角色或通過ourTool.exe啓用的安全應用程序角色。 (見http://www.oracle.com/technology/obe/obe10gdb/security/approles/approles.htm)。

例如,對於受密碼保護的數據庫角色,初始連接將僅具有CREATE SESSION特權,然後我們的工具將發出只有您自己知道的密碼的SET ROLE。任何其他應用程序都沒有設置角色的信息。顯然,這些權限僅授予角色,而不是直接授予此配置中的用戶。

+0

請注意將PW嵌入到源代碼中 - 有許多工具可讓您在可執行文件中查看嵌入的ASCII字符串。 – DCookie 2009-06-17 14:42:43

2

默認情況下,OCI發送調用應用程序EXE名字,你可以通過查詢v$session訪問:

SELECT program 
FROM V$SESSION 

,您可以在一個AFTER LOGON觸發做。

但是,這可以很容易覆蓋,不應該依賴。

+0

+1 - 它會防止通過SQL工具意外登錄。 – 2009-06-17 14:26:47

1

我重新命名SQLPLUS.EXE到myTool.exe並且與myTool.exe

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

返回連接後: myTool.exe

所以,要小心,因爲Quassnoi說:雖然可用在某些情況下,這當然不是舉證。

相關問題