1

我正在开发一个数据库,该数据库最终将存在于主机(在托管提供商处)上的共享 SQL Server 2008 数据库上。我注意到所有的表和查询都归 dbo 所有。我想知道在共享主机上这是否是一个安全问题。以及分配数据库对象所有权的最佳实践是什么。我应该在共享托管环境中将 db 对象的所有权转移给 db 的管理员用户吗?

谢谢

4

2 回答 2

0

dbo 架构是管理员或数据库所有者架构。除非采取措施更改它,否则它也是创建表时的默认模式。

即使在托管环境中,您也可以控制数据库内的安全性。您必须专注于您的安全策略,并根据该策略授予、撤销或拒绝对数据库中对象的权限。单独避免 dbo 模式不会提高安全性。

于 2010-11-18T17:22:53.370 回答
0

使用 dbo 时的最佳实践

当使用 dbo 创建对象/表时,这意味着这些对象的别名登录必须具有 db_owner 角色,进而意味着它可以在该数据库中“做任何事情”。访问该数据库的用户通常主要需要 CRUD。即,表中的数据和执行 SP 应该是该帐户应该能够做的所有事情。虽然当 db_owner 它可以做任何我认为是安全漏洞的事情。

应用程序访问 (svcact_app1) 应该有一个登录名,它是一个服务帐户(非交互式),DDL 等的 Windows 登录名是 db_owner 的 - 因此默认为 dbo。每个对象都可以由 dbo 拥有,尽管授予应授予关联用户以进行 svcact_app1 登录。

这提供了分离,因此应用程序连接只能修改数据并执行授予它的 SP,而不能执行其他任何操作。如果您不这样做,并且攻击者可以成功启动 SQL 注入,则该攻击可能会丢弃故事、修改 SP 或任何事情。

于 2016-11-03T03:56:03.327 回答