作爲安全性收緊練習,我將從Oracle數據庫用戶中刪除所有系統權限。現在,這個用戶只具有以下系統權限:Oracle安全 - 如何防止用戶從DROP TABLE自己的表中刪除
- 創建會話
- UNLIMITED TABLESPACE
我希望用戶將無法做任何DDL命令。但令我驚訝的是,即使用戶不能創建DROP TABLE,用戶也可以在自己的模式下使用DROP TABLE。
Oracle documentation表示DROP TABLE的先決條件是「該表必須位於您自己的模式中,或者您必須具有DROP ANY TABLE系統特權」。只是!!!我不明白Oracle的安全邏輯,但有什麼辦法可以阻止用戶刪除自己的表?
另一種方法是創建另一個用戶來運行應用程序和授予對象訪問權限,我想避免這種情況,因爲存在潛在的問題。
你確實意識到無限制的TABLESPACE並不是一件好事情來授予用戶嗎?因爲它授予任何表空間的權限,包括SYSTEM和SYSAUX之類的應用程序不應該使用的權限。如果你要鎖定的東西,你應該明確地向用戶授予* named tablespace *的配額。 – APC 2012-01-12 17:36:59
感謝您的建議APC。是的,UNLIMITED TABLESPACE對於生產系統來說不是最好的特權。但是所有的數據庫用戶都被授予了RESOURCE角色(Oracle默默授予UNLIMITED TABLESPACE而不告訴你)。現在我刪除了RESOURCE角色,我必須授予此特權以用於臨時目的。但稍後會進一步提供撥款額度。 – Tyn 2012-01-13 11:07:09