Пройти через пользователя Windows для источников данных Datazen SQL Server?

Можно ли передавать входы пользователей Windows из Datazen в SQL Server?

Сценарий:

Я создал панель инструментов, которая использует SQL-запрос в качестве источника данных.

Источник данных имеет тип «SQL Server», а флаг Integrated Security установлен на YES.

Я также настроил источник данных на «Реальное время», чтобы избежать проблем с кэшированием.

Я ожидаю, что представление данных будет выполняться на SQL Server с учетными данными пользователя, который просматривает окончательную панель мониторинга, к сожалению, это не так.

Проблема:

В этом сценарии аутентификация в отношении SQL Server теперь выполняется с учетной записью пользователя Windows, под которой работает служба «Служба сбора данных сервера Datazen». Я ожидаю, что «Служба приобретения» делегирует эффективного пользователя. Это возможно? Или аутентификация всегда будет выполняться с учетной записью службы?

Я знаю о настройке «персонализация для каждого члена», которая передает имя пользователя в запрос представления данных, но это не то же самое, что и мое требование (использовать существующую MSSQL-DB-Security для эффективных пользователей Windows).


person JJDE    schedule 09.09.2015    source источник


Ответы (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

Это, конечно, также требует, чтобы параметр «Персонализация для каждого участника» был включен, чтобы имя пользователя передавалось.

То, что здесь происходит, довольно очевидно, но в основном вы должны явно олицетворять запрос через свою учетную запись службы, поскольку SQL Server будет подключен к базе данных с использованием этой учетной записи. Как только вы запустите этот оператор EXECUTE AS, он будет использовать эту учетную запись пользователя до конца сеанса.

Обратите внимание, что вашей учетной записи службы потребуется набор разрешений IMPERSONATE, иначе это не удастся. Конечно, это также не удастся сделать для любых пользователей, существующих на вашем сервере Datazen, но не имеющих разрешений на ваш SQL Server, и наоборот. Это определенно желательное поведение, но стоит помнить, что если вы когда-нибудь добавите пользователей в один, вам также придется добавить их в другой.

Отказ от ответственности. Я работаю в службе поддержки Майкрософт и получаю деньги за поддержку Datazen.

person Matthew Haugen    schedule 15.09.2015
comment
да, это поможет использовать существующие роли безопасности БД. вместо этого используйте учетную запись службы сбора данных с высоким уровнем привилегий. Надеемся, что datazen будет поддерживать реальную сквозную безопасность в будущем выпуске. - person JJDE; 17.09.2015