有什么理由不应该将数据库所有者设置为[sa]?


15

昨天我问这个问题,关于更改我拥有的多个数据库的dbo。更改是有道理的,但我想明确。

有什么正当的理由或情况为什么我不应该将数据库的dbo设置为[sa]?


1
仅供参考:在更改数据库所有者时,或者特别是在一次将其应用于一堆数据库时,请确保脚本中包含将数据库用户与其登录名重新关联的规定。如果可能,在非高峰期进行此更改。
乔恩·塞格尔

Answers:


18

使SA成为数据库的所有者实际上可以简化和/或解决许多事情,但是可能会带来一些安全隐患。

特别要记住,如果SA是数据库的所有者,则dbo = 'SA'。这意味着,除其他外,[dbo]模式中的任何过程(默认设置)中实际上带有“ EXECUTE As Owner”(作为所有者执行)。这听起来并不那么糟糕,因为除非您将数据库标记为TRUSTWORTHY,否则SQL Server不会使用这样的模拟服务器级主体让会话或任务退出数据库。

这带来了下一个问题:永远纪念这样的数据库是值得信赖的,除非你真的真的相信它是安全的。因为任何有能力在[dbo]模式中创建过程的人都可以在整个服务器上以SA身份执行(如果愿意)。

可能会出现另一个问题,因为许多具有自己的SQL Server数据库的产品和应用程序通常会指定其应用程序登录名必须是数据库的DBO。显然,您可以通过使他们的应用程序登录为“ SA”来解决此问题。希望也很明显,您永远不要这样做,除非SQL Server实例不用于其他任何事情(即使那样,我还是建议不要这样做)。


好的,谢谢您提供的其他信息。那很有用。
RLH 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.