0

我一直在努力寻找 SQL Server 中与安全相关的问题。我们正在开发一个面向 SQL Server 2008 的 .NET 应用程序,并且我们希望使用 FileStream。

现在我发现如果您使用集成安全性,SQL Server 仅允许通过 Win32 API 进行 FileStream。问题是我们已经完成了大约 80% 的应用程序,但它完全基于 SQL 身份验证。所以我们在我们的应用程序中直接执行 INSERT,并且没有为每个 CRUD 操作使用存储过程。

这是相对安全的,因为我可以以加密形式存储 SQL 用户名和密码。我知道密码是以明文形式传输的,但我愿意接受。

我们希望最终用户能够通过 Crystal Reports 等工具连接到数据库,为此我们有一个额外的 SQL 登录名,该登录名仅授予 SELECT 权限。

现在,如果我们更改为集成安全性,我们将不得不授予个人用户(通过 AD 组等)执行应用程序可以执行的操作的权限。否则应用程序将无法完成它的工作。但是,当最终用户直接连接到数据库时,他也将拥有这些权利。

我看到有人说你应该对每个 CRUD 操作使用存储过程,并且只将 EXEC 权限授予 AD 组,但我该怎么做呢?当用户直接或通过应用程序连接时,我看不到用户将如何获得不同的授权......有人可以启发我吗?

一个额外的加分问题:据我了解,集成安全性不适用于工作组。那么人们如何让 FileStream 在工作组中工作呢?或者这被认为是不可能的?

4

1 回答 1

4
  1. 集成安全将在工作组中工作,使用传统机制,您在两台机器上都有匹配的用户名和密码。此外,如果服务器具有匹配的用户帐户,则域用户可以使用旧机制登录到非域服务器。

  2. 集成的安全性甚至可以使用不匹配的用户名和密码。这可能会对您的情况有所帮助。

尝试这个:

NET USE \\DBSERVER /USER:DOMAIN\USERNAME 

系统将提示您输入密码。这将建立与数据库服务器的 NetBIOS 会话。完成后,您应该能够看到数据库服务器上的共享文件夹和共享打印机。

一旦在客户端计算机和数据库服务器之间建立了 netbios 会话,您就可以使用集成安全性,而不会提示您输入密码。

如果它不适用于 TCP(但我认为可以),您可能必须将“命名管道”指定为要使用的网络协议。Named Pipes 继承了您现有的 NetBIOS 会话,因此只要您可以列出您可能适合使用的共享。

您还可以使用包含密码NetUseAdd的(2 级)信息的 Windows API 函数建立登录会话。USE_INFO_2

我想简短的回答是,您可以为您的应用程序使用特殊的 Windows 登录,并让用户使用它登录。但是请注意,它们也不能使用自己的用户名和密码连接到同一台服务器。

于 2012-05-25T10:27:22.183 回答