2010-11-18 115 views
1

我正在開發一個數據庫,最終生活在主機(託管提供商)上的共享SQL Server 2008數據庫上。我注意到所有的表和查詢都由dbo所有。我想知道這是否是共享主機上的安全問題。以及分配數據庫對象所有權的最佳實踐是什麼。我應該在共享主機環境中將數據庫對象的所有權轉移給數據庫的管理員用戶嗎?使用dbo作爲共享SQL Server上的所有者創建表和查詢?

謝謝

回答

0

dbo架構是管理員或數據庫所有者架構。這也是創建表時的默認模式,除非採取步驟來改變它。

您可以在數據庫中控制的安全性,即使在託管環境中。您必須專注於您的安全策略,根據該策略授予,撤銷或拒絕數據庫中對象的權利。單獨避免使用dbo架構不會提高安全性。

+0

瞭解這一點,我應該有額外的用戶限制權限等,但我沒有問這個問題。我需要知道,如果讓店主認爲dbo被認爲是一個破碎環境中的安全問題,並且最好將所有權轉移給另一個用戶。 – Sivakanesh 2010-11-19 07:50:54

+0

不可能將dbo作爲數據庫的所有者。換句話說,您不能從db_owner角色成員中刪除dbo。因此,最好的做法是將dbo作爲所有者離開。 – bobs 2010-11-19 17:20:46

0

採用DBO

當在創建對象最佳實踐/擁有dbo表這就是說,別名這些對象的登錄名必須具有db_owner角色,並反過來意味着數據庫中它可以「呼風喚雨」 。訪問該數據庫的用戶通常主要需要CRUD。即表格中的數據和執行SP的數據應該是該賬戶應該能夠完成的。雖然db_owner可以做任何事情,但我認爲這是安全漏洞。

應該有一個應用程序訪問(svcact_app1)的登錄名,它是一個服務帳戶(不是交互式),而Windows登錄名是db_owner的DDL等 - 因此默認爲dbo。每個對象都可以由dbo所有,但授予應該授予關聯用戶svcact_app1登錄名。

這使分離從而使應用程序的連接只能修改數據,並執行SP的被授予的,沒有別的。如果你不這樣做,並且攻擊者可以成功地啓動一個SQL注入,攻擊可能會放棄故事,修改SP或其他任何東西。

相關問題