程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 利用Oracle許可實現更好控制Linux

利用Oracle許可實現更好控制Linux

編輯:Oracle數據庫基礎

Oracle許可安全(grant security)有這樣的一個缺點,要維護所有的訪問角色並將這些角色分配給最終用戶是非常困難的。為了解決這些問題並簡化Oracle的安全模式,Oracle引入了許可執行方法(grant execute method)。使用許可執行方法,所有的數據訪問代碼都會被封裝進Oracle的存儲過程裡,而最終用戶會被賦予執行這段代碼的能力。

許可執行安全模式的設計

同特定的許可模式(在這個模式下,特定的數據庫權限被賦予特定的用戶)不同,許可執行模式允許用戶被賦予執行的訪問權,而不需要任何數據庫的權限。在Oracle裡,這叫做定義者的權利(definer right)。當代碼被執行的時候,最終用戶就取得了存儲過程定義者對數據庫的訪問權限。同標准的許可安全模式相比,定義者權利具有多個重要的優勢,主要是訪問規則的簡化。

在Oracle裡,你可能也會使用調用者權利(invoker right),通過它,最終用戶將只能使用由標准許可安全模式所分配的權限來執行存儲過程。調用者權利要更復雜一些(這也是很多Oracle設計者更不願意看到的),因為還必須實現Oracle許可安全。

很明顯,許可執行模式需要仔細的前期設計。開發人員必須被迫遵照設計標准,創建Oracle存儲過程和函數,它們然後會被封裝進程序包裡。

從操作過程上講,這要求Oracle的設計人員為系統預先確定過程碼(process code),並定義一組執行所有數據庫訪問和處理的程序包。

許可執行安全模式的好處

許可執行模式尤其引起了Oracle設計者的關注,因為它還有其他幾個好處:

所有的過程碼和SQL都被保存在數據字典裡——

許可執行模式允許所有的SQL和程序都駐留在數據字典裡,在這裡它們能夠被很容易地找到、修改和調整。

很容易就能夠通過過程碼來實現快速執行——

在Oracle9i裡,所有的存儲過程都能夠被編譯,還能夠使用dbms_shared_pool.keep過程被放在在Oracle的庫緩沖區裡。這就實現了應用程序代碼的超高速執行。

數據和行為的耦合

將代碼封裝進Oracle的存儲過程裡使得Oracle的設計人員能夠將數據庫實體同作用於這些實體的代碼緊密地耦合在一起。例如,Oracle的成員方法(member method)能夠為客戶表格而創建,這樣Oracle就知道數據庫同什麼代碼相關聯。這同面向對象的模型是相同的,在面向對象的模型裡,方法是同C++或者Java對象的類相關聯的。

數據庫代碼的隔離

由於最終用戶的屏幕上沒有過程代碼或者SQL,因此所有對數據庫的訪問都是通過調用標准的存儲過程而實現的。這就使得應用程序不再依賴於數據庫,這意味著該應用程序能夠被輕易地移植到另一個數據庫,而不要對前端的代碼作出任何修改。

數據訪問的嚴密控制

通過使用定義者權利,最終用戶只有在使用存儲過程和函數的情況下才能夠訪問數據庫。這就使得過程代碼能夠嚴密地控制訪問規則並消除任何從後門對數據庫的訪問。許可執行模式所能做到的還不止對Oracle表格的訪問控制。由於存儲過程會控制對數據庫的訪問,因此存儲過程能夠定義過程規則,而最終用戶需要這些規則才能夠看到Oracle的數據。行這一層、列這一層,以及依賴於數據的訪問規則都是在Oracle存儲過程的PL/SQL或者Java內被編碼的。

拒絕後門

最終用戶只有在其執行存儲過程的時候才擁有對數據庫的(訪問)權限,超出了其過程的范圍,他們就無法訪問Oracle了。

和所有的Oracle安全模式一樣,許可執行模式不是沒有局限性的。現在讓我們來看看其中的一些。

許可執行安全模式的局限性

許可執行安全模式最適合於正式的系統設計項目,在這樣的項目裡,項目分析人員會在開始編程之前仔細地規劃訪問代碼和規則。許可執行模式的主要局限性有:

需要仔細的前期設計

專用系統的開發並不是很容易就能夠實現的,因為其設計需要對主要的程序包、存儲過程和函數預先進行定義。

可選的過程語言有限

Oracle的函數和存儲過程的代碼需要在PL/SQL或者Java裡編寫。但是,有些Oracle的設計人員要求只有SQL才能夠被保存在存儲過程裡。這就使得開發人員能夠使用他們所希望使用的任何過程語言。前端並沒有被要求完全獨立於代碼,它包含有過程代碼,但是所有的數據庫SQL都會被存儲過程和函數調用所替代。

難以審計

由於最終用戶只有在執行存儲過程的時候才能夠具有訪問數據庫的權限,因此創建列表來包括數據庫實體以及那些能夠訪問這些數據庫實體的最終用戶是很困難的。對定義者權利和許可執行安全的審計需要你編寫復雜的審計程序,以剖析和解釋這些存儲過程。

許可的執行

正如你能夠看到的,許可執行這一方法同傳統的許可安全模式相比具有很多優勢,但是它也存在某些不足之處。由於Oracle是世界上最強大和最靈活的數據庫,所以你還有其他的方法來控制用戶對數據的訪問。Oracle為數據訪問的控制提供了很多選擇,而你的任務就是去選擇和實現能夠滿足你設計要求的最佳訪問控制法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved