回复 1# zbhero 1.創建數據庫的時候使用restrictive參數這樣就不會有public權限產生2.已經創建的數據庫取消public權限,因爲有public權限的項目非常多我一般是這樣revoke bindadd,connect,createtab,IMPLICIT_SCHEMA on database from PUBLICrevoke select on table SYSCA...
显示全部回复 1# zbhero 1.創建數據庫的時候使用restrictive參數
這樣就不會有public權限產生
2.已經創建的數據庫取消public權限,因爲有public權限的項目非常多
我一般是這樣
revoke bindadd,connect,createtab,IMPLICIT_SCHEMA on database from PUBLIC
revoke select on table SYSCAT.COLAUTH from PUBLIC
revoke select on table SYSCAT.DBAUTH from PUBLIC
revoke select on table SYSCAT.INDEXAUTH from PUBLIC
revoke select on table SYSCAT.PACKAGEAUTH from PUBLIC
revoke select on table SYSCAT.ROUTINEAUTH from PUBLIC
revoke select on table SYSCAT.SCHEMAAUTH from PUBLIC
revoke select on table SYSCAT.SEQUENCEAUTH from PUBLIC
revoke select on table SYSCAT.TABAUTH from PUBLIC
revoke select on table SYSCAT.TBSPACEAUTH from PUBLIC
去掉一些敏感的表的public的權限
然後寫一個shell
分別遍歷所有的schema,tablespace,table,然後取消他們的public權限。
取消createin對於schema的public權限
取消use對於tablespaces的public權限
取消all對於所有user table的public權限。
如果還需要進一步去除的話,還需要取消sysproc下面的系統自帶函數,以及nullid等一些程序的execute權限。
安全和易用性是相對的,如果是絕對的安全的話那麽系統可能就沒法用了,自己找一個平衡點就好了。
我覺得全部把public取消的話可能將來會有一些麻煩。比如你想運行一個substr()都沒權限。
我可能説的還不夠全面,等其他大神來補充。
收起