Пожалуйста, помогите мне с Azure Sql Windows вопросом олицетворения
Существует трехуровневое приложение, которое использует олицетворение на уровне обслуживания для подключения к MS SQL в качестве пользователя, запустившего клиентское приложение.
Билет Kerberos используется для олицетворения пользователя клиента в службе, как показано ниже:
SECURITY_HANDLE serverContext;
AcceptSecurityContext(ref inbound, ref serverContext, ref ClientToken, APIReference.ContextAttr, APIReference.SECURITY_NATIVE_DREP, out serverContext, out ServerToken, out uNewContextAttr, out NewLifeTime); // final handshake leg
ImpersonateSecurityContext(ref serverContext); //secur32.Dll
SqlConnection conn = new SqlConnection("Integrated Security=True") // works on MS SQL on premises
SqlConnection conn = new SqlConnection("Authentication=Active Directory Integrated"); // fails with Azure SQL (no impersonation is actually made)
RevertSecurityContext(ref _context); //secur32.Dll
Однако не выполняется олицетворение пользователя, когда билет Kerberos используется для олицетворения в Azure * 1034. * (и работает с MS SQL в помещениях). Проблема в том, что SQL запросы выполняются на AzureSQL под учетной записью пользователя службы вместо учетной записи пользователя клиента.
Можно ли заставить олицетворение билетов Kerberos работать с Azure SQL?
Я знаю, что есть функция EXECUTE AS LOGIN, которую можно использовать для олицетворения пользователя на Sql сервере. Но я хотел бы, чтобы олицетворение Kerberos работало, если это возможно.
UPD: я использовал adal.dll в службе для подключения AzureSQL
Я написал c# код, который олицетворяет собой AzureSQL с комбинацией LogonUser
token и WindowsIdentity.Impersonate()
. Однако я хотел бы использовать делегирование Kerberos, если это возможно
Upd
Я не нашел способа выдать себя за пользователя с помощью Kerberos и подключиться к Azure SQL при обслуживании выдавал себя за пользователя.
Однако у меня есть пользовательские команды T- SQL execute as user=
и revert
для выполнения "олицетворения" базы данных