【问题标题】:Impersonation denied from trustworthy database来自可信数据库的模拟被拒绝
【发布时间】:2014-08-25 20:17:22
【问题描述】:

我正在使用 EXECUTE AS 来允许最低权限用户以系统管理员身份运行一些 SQL 存储过程。我知道我需要在源数据库(运行存储过程的数据库)上使用 TRUSTWORTHY=ON 才能在我的服务器上的其他数据库上模拟系统管理员。但是,即使授予了模拟并且 TRUSTWORTHY=ON,在尝试以模拟用户身份访问其他数据库时,我仍然会收到以下错误:

The server principal [least_privileged user] is not able to access the database XXX under the     current security context.

(是的,我知道模块签名是更安全的选择。我不想走那条路。)

谁能帮帮我?

【问题讨论】:

  • 存储过程 EXECUTE AS 子句允许您模拟数据库用户,而不是登录。您可以将用户添加到其他数据库以防止错误。您到底在做什么需要系统管理员角色成员身份?

标签: sql sql-server database tsql


【解决方案1】:
  • 使用execute as owner
  • 确保该过程位于dbo 架构中。
  • 确保数据库所有者拥有实例的系统管理员权限。我 已经注意到 SQL 登录在此目的上比其他登录效果更好 来自 Windows。
  • 检查trustworthy=on 获取数据库。

这样,您不需要额外的模拟授权,但它是一种方式不太安全的解决方案。不过,它会起作用。

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 2011-02-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多