2013-10-29 13 views
1

不應使用SYS和SYSTEM用戶,因爲存在損壞SYS模式的風險:「通常,除非文檔告訴您,否則您將永遠不會登錄系統或系統,它們是我們的內部數據字典帳戶,不適合您的使用,您最好通過忘記它們而存在。「 (http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2659418700346202574在SYS擁有的對象上授予權限的最佳和最安全的方式

什麼是授予用戶SYS權限的最好和最安全的方式?例如:

GRANT EXECUTE ON sys.dbms_pipe TO foobar; 

我應該使用哪個用戶代替SYS或SYSTEM?

+2

向用戶授予執行sys過程/程序包的特權沒有任何問題,儘可能保留最小權限的原則。 –

回答

1

您正在對SYS擁有的包授予EXECUTE特權,您無法在其中指定其他架構名稱。它必須是SYS,或者您可以在這種情況下刪除架構名稱,只需使用GRANT EXECUTE ON dbms_pipe TO user_name;

0

我會將需要授予權限的所有對象都創建並創建一個具有這些權限的特殊角色。這個角色比管理多個用戶的多重管理更容易管理。

我還會問一個問題:你爲什麼需要這個?這可以做到嗎?這是好的設計嗎?

+1

人們必須記住,通過角色授予的權限在PL/SQL中無法識別。 –

+0

根據我的經驗,將SYS/SYSTEM對象授予角色是完全沒有用的,因爲在大多數情況下,您會希望在PL/SQL中使用它們,因此無論如何都需要直接授予。但是YMMV當然。 –

2

這是我不同意Tom Kyte的極少數情況之一。在我看來,將SYS對象的特權授予SYS是非常明智的。這同樣適用於SYSTEM。