** 更安全的 SQL Server 连接方式
**
** 摘要 ** :今天用 C# 编写一个 Windows 服务程序,其中要连接一个 Windows 2003 Server 上的 SQL Server 2000 数据库,用 SQL Server 身份验证。发现普通程序都能联上,但是 Windows 服务程序就是联不上。 后来查了资料,找到了解决方法。共享给大家。
三步解决:
1、 在服务器上创建一个用户,配置好 SQL Server 数据库访问权限。
2、 在客户端创建一个一样的用户。
3、 服务程序以刚创建的那个客户端用户登录。
搞定!
** 关键字 ** : SSPI, Integrated Security, SQL Server 和 Windows ,身份验证, SQL Server 不存在,或者拒绝访问。
参考文档: ** Windows 身份验证和 SQL Server **
_ Visual Studio _ _ 示例: _ _ Fitch and Mather 7.0
_
|
_
_
---|---
** Windows ** ** 身份验证和 ** ** SQL Server
**
Fitch and Mather 7.0 通过 SQL Server 身份验证访问 SQL Server 。虽然它非常简单并提供了易于理解的示例,但它并不是最安全的方法。 Fitch and Mather 7.0 将连接字符串(包含数据库凭据)存储在两个位置: Web.config 文件和 COM+ Admin 目录(在 FMStocks7.GAM.7 组件的构造函数字符串中)。默认情况下,任何用户都可以读取这两个位置,因此很容易无意中泄露保密信息(凭据)。
一种更好的解决方案是使用 Windows 集成安全性。首先,需要 Internet 信息服务 (IIS) 服务器和 SQL Server 数据库都能识别的 Windows 标识。有两种方法可供选择:
· ** 域帐户 **
如果服务器是域的一部分,并且管理员可以创建应用程序的域帐户,那么这是最佳方法。
· ** 具有同步密码的本地帐户 **
如果网络的实现不支持域帐户,则通过在两台计算机上创建相同的本地帐户 ( 使用相同的密码 ) ,可以安全地访问 IIS 和 SQL Server 数据库。
选择上述方法中的一种,然后创建一个名为 FMStocks_7 Application 的帐户(在域中或在两台计算机上),并使它仅属于 “Guest” 组。这样,应用程序只需要最低程度的特权即可运行。
然后,更改连接字符串(在 Web.config 和 COM+ admin 目录中),移除显式凭据以便能够使用集成安全性。例如,如果连接字符串如下:
Data Source=MYDBSERVER; User Id=Fitch and Mather 7.0 _login; Password=*********;
Initial Catalog=Fitch and Mather 7.0 ;
然后将其更改为:
Data Source=MYDBSERVER;Integrated Security=SSPI;
Initial Catalog=Fitch and Mather 7.0 ;
这一更改意味着,可以使用线程运行所用的标识来访问 SQL Server 数据库。默认情况下, ASP.NET ( aspnet_wp.exe 进程)在本地 ASPNET 帐户下运行,但是,应用程序代码应在 Fitch and Mather 7.0 应用程序帐户下运行。在 Fitch and Mather 7.0 Application 帐户下运行应用程序代码的优点是,这是一个 Windows 帐户,并且您可以授予它适当的 SQL Server 权限。
下一步,需要将帐户与 Fitch and Mather 7.0 应用程序关联。
** 将帐户与 ** ** Fitch and Mather 7.0 ** ** 关联 **
1. 配置 IIS 。
a. 在 “ 开始 ” 菜单上指向 “ 程序 ” ,然后指向 “ 管理工具 ” 并单击 “Internet 服务管理器 ” 。
“Internet 信息服务 ” 窗口随即打开。
b. 在 “ 树 ” 选项卡上,浏览目录树以搜索 FMStocks7 虚拟目录。(此虚拟目录的位置因具体的安装而异。)找到之后,右击 “FMStocks7” 并选择 “ 属性 ” 。
“FMStocks7 属性 ” 对话框随即出现。
c. 在 “FMStocks7 属性 ” 对话框中,选择 “ 目录安全性 ” 选项卡。在 “ 匿名访问和验证控制 ” 下,单击 “ 编辑 ” 按钮。
随即出现 “ 验证方法 ” 对话框。
d. 在 “ 匿名访问 ” 下,单击 “ 编辑 ” 按钮。
“ 匿名用户帐号 ” 对话框随即出现。
e. 清除 “ 允许 IIS 控制密码 ” 。这是必需的,因为 IIS 会存储凭据并在针对 SQL Server 进行身份验证时提供这些凭据。
f. 在 “ 用户名 ” 和 “ 密码 ” 下,将匿名用户帐户替换为 FMStocks7_Application ,并且输入它的密码。
g. 最后,单击三次 “ 确定 ” 以完成。
2. 通过添加以下行启用 Web.config 中的模拟:
3.
1<system.web>
2
34\. <identity impersonate="true"></identity>
4
5....
6
7最后一步是在 FMStocks7 和 FMStocks7_GAM 数据库中配置 SQL Server ,以授予 Fitch and Mather 7.0 Application 帐户适当的权限(如果这两个数据库在不同的计算机上运行,则需要在每台计算机上重复此过程):
8
9** 在 ** ** FMStocks7 ** ** 和 ** ** FMStocks7_GAM ** ** 数据库中配置 ** ** SQL Server ** ** 权限 **
10
111\. 打开 SQL Server 。
12
13· 在 “ 开始 <span lang="EN-US" style="COLOR: black; FONT-FAMILY: Verdana; mso-bidi-font-size: 10.5pt; mso-font-ke</system.web>