【发布时间】:2021-07-29 22:50:00
【问题描述】:
我们有一个 EXE 和一个 DLL,可以读取/写入 SQL Server 数据库。 EXE 和 DLL 在用户的计算机上运行。
我们想使用 Integrated Security 连接到 SQL Server 数据库,但不是使用用户的 windows id,而是使用 windows 服务帐户。这样,我们就不需要授予用户对数据库的写入权限。
由于用户在用户计算机上运行EXE和DLL,是否可以将SQL Server连接字符串设置为集成安全,但使用windows服务帐户(不是用户帐户)?
谢谢。
【问题讨论】:
-
在您的 exe/dll 代码中,您可能正在寻找Impersonation。如果无法修改 exe/dll 可能是“运行方式”技巧?
-
我无法要求用户执行“运行方式”。使用模拟,我是否需要在代码中以服务帐户身份登录? bool returnvalue = logonUser(用户名,domainname,console.readline(),logon32_logon_interactive,logon32_provider_default,sudeTokenhandle)? span>
-
通常你有某种后端连接到数据库而不是前端。后端使用类似
Integrated Security=true; Initial Catalog=AdventureWorks;Server=MSSQL1的东西。用户 exe 使用不同帐户(“服务帐户”)的问题在于,此其他帐户的凭据需要在应用程序中,用户可以提取并直接连接到数据库。因此,如果您的意图是某种形式的安全性,那么使用其他帐户将无济于事。最好使用后端,这样用户就完全不知道数据库了 -
你没有提到你为什么要这样做。您的要求实际上会损害网络安全性,但听起来您是基于希望使其更安全的前提
-
同意。不幸的是,在这种情况下,没有后端,一切都在前端。
标签: c# .net sql-server connection-string integrated-security