2012-05-04 41 views
3

我是管理層的新手,並試圖提高Oracle數據庫的安全性。Oracle:限制「其他用戶」可見

目前,非特權用戶可以通過展開「其他用戶」圖標,在數據庫導航樹中看到所有其他用戶在SQL Developer中的列表。

一個人如何限制特權,因此用戶將只能看到授予了他們的一些對象上的特權者(其他)用戶(而不是所有的用戶,權限是否已授予與否)。

謝謝。

回答

3

你可能無法(至少不能合理)。 SQL Developer等工具將查詢ALL_USERS以獲取用戶列表,並將數據庫中的所有用戶顯示給任何有權登錄的用戶。A知道用戶B真的具有安全風險如果A不能看到關於B的其他內容,是否存在?

儘管我強烈建議不要這樣做,但您可以通過在非特權用戶的架構中創建ALL_USERS視圖(或爲不同架構中的視圖創建私用同義詞)來解決該問題,該視圖具有相同的結構爲ALL_USERS,但數據較少。由於大多數工具不符合數據字典表SYS.ALL_USERS的名稱,而不僅限於ALL_USERS,所以此技巧通常有效。但是,有很大的風險。不可避免的是,也有意想不到的缺點時,一些安裝腳本預期該數據字典是「正常的」,最後總會有人使用一種工具,它完全符合數據字典表的名稱等

+0

謝謝賈斯汀。我們的目標是「如果一個用戶受到攻擊,至少它不會泄露所有其他用戶的用戶名,這可能會讓別人嘗試前進」。 – learningOracle

+1

是的,這是泄露用戶名的安全風險。存在更糟的風險,您必須考慮系統中用戶數量和數據的敏感性。這可能是好的。 –

1

大概SQL Developer的查詢表(或查看我不記得)all_users。因此,您需要撤銷此授權(如sysdba):

revoke select on ALL_USERS from PUBLIC; 

並且還將此授予允許您選擇的用戶。

編輯:

我同意@Justin Cave的答案。這個有風險,而且,他帶來了一個很好的問題:

是否真的安全風險對於A知道,如果A 看不到任何關於B中的用戶B的存在?

+0

謝謝Sergio – learningOracle

0

根據你的問題: 是否真的安全風險對於A知道,如果A不能看到任何關於B中的用戶B的存在?

我認爲是的,如果用戶A(授權)知道B的所有腦幹,它可能會嘗試連接(強力)和: 選項:A成功,B是一個特權用戶 選項B:失敗因爲B有一個很強的密碼,並且用戶B有一些配置文件重新分配,在A從A連接到B之後,用戶B被鎖定,這可能是拒絕服務的問題。

相關問題