2010-11-18 43 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或其他任何东西。