例如
如果仅赋予Server用户帐户DataReader角色和执行以某种方式修改数据的存储过程的能力,那么该用户执行该存储过程是否会导致修改发生?
总体,我希望给一个用户只读取整个数据库的能力,包括使用SQL语法、视图和执行任何返回结果集的存储过程。但我不想让任何副作用导致数据库的变化。因此,在前面提到的存储过程示例中,这种尝试在理想情况下会出现错误,以满足我的需求,以及所有类似的情况,在这些场景中,副作用可能会导致更改。我想确保我的数据库不受这些攻击。
这在角色层面上是可行的吗?
产品: Server 2005及以上
发布于 2011-03-16 19:07:08
你当然能做到。只需在数据库级别创建一个数据库角色,并在表上读取该角色,并仅在所需存储过程(即读取的存储过程)上执行该角色。然后,将所需的用户添加到数据库角色中。
但是,如果您正在使用存储过程读取数据,则所有考虑因素都要完全这样做,并且不为任何级别的用户授予对表的读取。通过存储过程(和视图)驱动所有数据访问。
编辑:刚刚注意到您说SQL 2005“和向上”。如果您正在使用Server 2008,请查看应用程序角色,而不是传统的数据库角色。
https://stackoverflow.com/questions/5329982
复制相似问题