值得信赖 - 这是一种不好的做法吗?如有其他替代方案?

时间:2014-10-17 11:46:53

标签: sql-server sql-server-2008 sql-server-2005 sql-server-2008-r2 sql-server-2012

我有一组用户“读者”在“mydatabase”上只有dbreader。 我有一个存储过程“sp”:


1 - 更新“mydatabase”中的数据,

2 - 截断数据库“mydatabase”中的表 - 这是使用动态sql完成的,因为我们不知道需要截断的表的名称

3 - 更新“mydatabse2”

中表格内的记录

4 - 在“mydatabse3”

中的表格中插入记录

我解决这个问题的方法是:

1 - 我将所有这3个数据库的数据库所有者设置为sa

2 - 我将存储过程“sp”更改为EXECUTE AS OWNER

3 - 我将所有这3个数据库设置为TRUSTWORTHY ON


一切正常。

我关心的问题是这个问题:

使用TRUSTWORHY ON是否存在严重的安全漏洞?

我找不到任何严肃的东西,所以我要把它留下来。

除非有人在这里提醒我一些我可能错过的东西。

1 个答案:

答案 0 :(得分:1)

为特定数据库设置时,TRUSTWORTHY选项允许来自该数据库的代码访问其外部的外部对象(例如,其他数据库)。

由于您唯一需要外部访问权限的代码是mydatabase,因此您可以安全地关闭其余两个代码。

选项本身并不特别危险;毕竟,在它第一次出现在SQL Server 2005之前,只要你有足够的权限,一切都可以立即访问。而且我记不起那个时代对这个话题的任何特别抱怨。只需确保db_owner成员的数量相当小,这通常就足够了。