Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在共享SQL Server上以dbo作为所有者创建表和查询?_Sql Server 2008_Dbo - Fatal编程技术网

Sql server 2008 在共享SQL Server上以dbo作为所有者创建表和查询?

Sql server 2008 在共享SQL Server上以dbo作为所有者创建表和查询?,sql-server-2008,dbo,Sql Server 2008,Dbo,我正在开发一个数据库,它最终将驻留在主机上的共享SQLServer2008数据库上(位于托管提供商)。我注意到所有的表和查询都属于dbo。我想知道这是否是共享主机上的安全问题。分配数据库对象所有权的最佳实践是什么。我应该在共享托管环境中将db对象的所有权转移给db的管理员用户吗 谢谢dbo模式是管理员或DB所有者模式。它也是创建表时的默认模式,除非采取步骤对其进行更改 您可以控制数据库内的安全性,即使在托管环境中也是如此。您必须关注您的安全策略,并根据该策略授予、撤销或拒绝对数据库中对象的权限。

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


谢谢

dbo模式是管理员或DB所有者模式。它也是创建表时的默认模式,除非采取步骤对其进行更改


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

使用dbo时的最佳实践

当使用dbo创建对象/表时,这意味着作为这些对象别名的登录名必须具有db_所有者角色,这反过来意味着它可以在该数据库中“做任何事情”。访问该数据库的用户通常主要需要CRUD。也就是说,表中的数据和执行SP应该是帐户应该能够完成的全部工作。虽然当db_拥有者时,它可以做任何我认为是安全缺陷的事情

应用程序访问应该有一个登录名(svcapt_app1),它是一个服务帐户(非交互式),DDL等应该有一个Windows登录名,它是db_所有者的,因此默认为dbo。每个对象都可以归dbo所有,尽管授权应该授予相关用户svcact_app1登录


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

理解这一点,我应该有更多的限制性权限等用户,但我不是问这个。我需要知道,将所有者保留为dbo是否考虑了在分解环境中的安全问题,以及将所有权转移给另一个用户是否是更好的做法。换句话说,您不能从db_所有者角色成员资格中删除dbo。因此,最好将dbo保留为所有者。