【问题标题】:How to view impersonation requests or queries executed while impersonated如何查看模拟时执行的模拟请求或查询
【发布时间】:2022-01-09 04:12:34
【问题描述】:

我正在尝试调试一个问题,即让 Tableau 服务器使用 Impersonate via server Run As account 向 SQL Server 数据库发出请求。

我现在正在尝试跟踪请求以查看故障点。

有没有办法查看对 SQL 服务器发出的所有模拟请求和/或在请求用户模拟另一个用户时执行的查询?

【问题讨论】:

  • 如果 Tableau 对运行身份帐户使用 Windows 模拟,那么 SQL Server 将不会对此一无所知。
  • 我创建了一个带有 sql server 的临时 VM,并将我的请求定向到它。在其事件查看器中,我可以看到 Tableau 服务器帐户用户使用Impersonation Level: Impersonation 发出的请求。我假设某处存在类似于REVERT; EXECUTE AS User = @user; 的查询,其中@user 等于向Tableau 服务器发出请求的用户。我很好奇在哪里可以看到这个查询,如果它存在的话。使用事件查看器可以看到登录用户正在模拟的用户吗?
  • 不,这不是查询。 Windows 身份验证通过使用 Kerberos/NTLM 从 DC(或来自非 AD 服务器的哈希)获取票证,然后可以将其传递给其他服务进行身份验证。如果使用模拟,那么我认为您无法从 SQL Server 端分辨出来。那Impersonation Level被定义为“服务器可以在本地系统上模拟客户端的安全上下文”,见docs.microsoft.com/en-us/windows/win32/secauthz/…,这只是意味着服务器可以模拟客户端,而不是客户端本身在冒充
  • @Charlieface 我找到了查询和问题。要模拟用户必须首先连接到数据库,说明他们正在模拟另一个用户,这样数据库可以识别用户是否有权模拟用户并继续请求。我已将找到的查询发布在它执行此操作的位置。
  • 是的,一旦客户端连接,您就可以跟踪EXECUTE AS。您无法跟踪的是最初在 Windows 用户模拟上下文下连接的客户端。我想这是我试图完全回答的另一个问题

标签: sql-server impersonation


【解决方案1】:

使用 SSMS > 对象资源管理器 > 服务器 > 管理 > 扩展事件 > [右键单击] 会话 > 新会话

here 所述,让我找到查询

似乎 tableau server 试图用他们的电子邮件而不是他们的 Windows 登录来模拟用户。

【讨论】:

  • 我原以为会有一个单独的 XEvent,但找不到它
猜你喜欢
  • 2020-12-01
  • 2022-08-22
  • 2018-12-01
  • 2021-11-26
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多