【问题标题】:Pass through Windows user for Datazen SQL Server data sources?通过 Windows 用户获取 Datazen SQL Server 数据源?
【发布时间】:2015-09-09 17:26:44
【问题描述】:

是否可以将 Windows 用户登录从 Datazen 传递到 SQL Server?

场景:

我创建了一个仪表板,它使用 SQL 查询作为数据源。

数据源的类型为“SQL Server”,标志Integrated Security 设置为YES

我还将数据源配置为“实时”,以避免任何缓存问题。

我希望数据视图能够使用正在浏览最终仪表板的用户的凭据在 SQL Server 上执行,但不幸的是,情况并非如此。

问题:

在这种情况下,针对 SQL Server 的身份验证现在使用 Windows 用户帐户完成,服务“Datazen Server Data Acquisition Service”在该用户帐户下运行。我希望“获取服务”将委派有效用户。这可能吗?还是将始终使用服务帐户进行身份验证?

我知道“为每个成员个性化”设置,它将用户名传递给数据视图查询,但这与我的要求不同(利用现有的 MSSQL-DB-Security 为有效的 Windows 用户) .

【问题讨论】:

    标签: sql-server permissions powerbi datazen-server


    【解决方案1】:

    您的观察是正确的,默认情况下,服务帐户将被识别为登录到 SQL Server。

    没有办法通过设置来解决这个问题,但您可以使用一些 T-SQL 魔法在运行时切换用户。您必须使用 EXECUTE AS 语句引导您的查询,如下所示:

    EXECUTE AS USER = 'DomainName\' + '{{ username }}'
    
    SELECT TOP 1 login_name   -- This is just a nice quick test to echo the username.
    FROM sys.dm_exec_sessions -- You can swap it out for your real query.
    WHERE session_id = @@SPID
    

    这当然也需要开启“Personalize for each Member”设置,这样用户名才能通过。

    这里发生的事情非常不言自明,但基本上您必须通过您的服务帐户显式模拟请求,因为 SQL Server 将使用该帐户通过数据库连接。运行此 EXECUTE AS 语句后,它将在会话的剩余部分中使用该用户帐户。

    请注意,您的服务帐户将需要IMPERSONATE 权限集的权限,否则这将失败。当然,对于 Datazen Server 中存在但对 SQL Server 没有权限的任何用户,它也会失败,反之亦然。这绝对是可取的行为,但值得牢记的是,如果您将用户添加到一个用户,您还必须将他们添加到另一个。

    免责声明:我是 Microsoft 支持专家,为支持 Datazen 付费。

    【讨论】:

    • 是的,这将起到利用现有 DB-Security-Roles 的作用。不幸的是,它不会强制执行“硬”安全性,每个有权访问数据源的人员(集线器所有者)都可以创建新的数据视图/查询不使用“以用户身份执行”语句,而是使用高权限“数据采集服务帐户”。希望 datazen 在未来的版本中支持“真正的”直通安全性。
    猜你喜欢
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    相关资源
    最近更新 更多