2008-11-14 43 views
2

我建議一位管理SQL 2k5盒子的朋友,該盒子有幾個用戶可以通過dbo訪問多個數據庫。問題是:DBO權利風險

  1. 這些用戶還沒有自己的密碼改了幾個月,
  2. 這些用戶把自己的ID添加到應用程序和應用程序運行的DBO。

所以 - 除了顯而易見的dbo權限添加/更新/刪除表和procs,我可以引用一個惡意用戶有dbo SQL 2005數據庫的危險嗎?

我想提供對數據庫和其他用戶造成危害的特定場景。 dbo可以在服務器上更改文件分配嗎? DBO能否影響不直接連接到該數據庫的其他資源?


作爲澄清,這是SQL Server 2005,默認情況下,xp_cmdShell未授權給DBO用戶。我仍然想知道是否有明顯CRUD之外的風險。有人可以用DBO做什麼?

回答

0

是的。 dbo有權在數據庫上做任何想做的事情。甚至運行xp_cmdshell。一旦你可以運行xp_cmdshell,你可以在系統上做很多事情。 這是所有可能提供的dbo具有默認情況下具有的系統管理員權限。

+0

我意識到這是一箇舊帖子,但是,抱歉...這是絕對不正確的!只有具有「SA」或「Control Server」權限的用戶纔可以運行xp_CmdShell。這是你看到的第二個這樣的帖子,我已經看到了這個錯誤信息。你從哪裏得到這些信息?我問,因爲提供它的人需要糾正。 – 2013-04-06 18:59:54

1

我意識到這是一個5歲的帖子,但它從來沒有被正確回答,還有一些非常糟糕的信息已經發布。

首先,讓我們看看Books Online對「DBO」角色(priv)的評論。重點是我的。 db_owner固定數據庫角色的

成員可以在數據庫上執行所有 配置和維護活動。

總而言之,這意味着具有「DBO」權限的人可以對任何他們想要的任何數據庫執行任何他們具有該權限的權限。到2005年,這也意味着他們可以放棄數據庫。

另請注意,它沒有說能夠控制服務器的血腥事情。據我所知,您需要「SA」或(最近)的「Control Server」權限來執行xp_CmdShell。 DBO不帶有priv,因此無法運行xp_CmdShell或許多以「xp_」或甚至「sp_」開頭的其他內容。

換擋並且因爲看起來OP已經有點意識到了,所以DBO privs被認爲是「提升的privs」。我建議你從來沒有將DBO權限授予應用程序(或其他前端),我只會將其授予應該負責數據庫管理員的人員。這些人需要像那些你會選擇成爲DBA的人一樣明智地選擇。

要回答有關CRUD的其他問題......在大多數情況下,由ORM執行CRUD時,需要的最高級特權是db_DataReader和db_DataWriter。說實話,我寧願不允許登錄擁有這些權限。我知道世界上每個前端開發人員都會尖叫我,但事實是,即使CRUD也應該通過存儲過程來完成,以防止攻擊者使用db_DataWriter讓攻擊者從表中刪除。就我而言,應用程序(和其他前端)應該只有未修改的PUBLIC權限和執行某些存儲過程的權限......期間。