【问题标题】:SQL Server Integrated SecuritySQL Server 集成安全性
【发布时间】:2012-05-31 21:33:56
【问题描述】:

我一直在努力寻找 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 在工作组中工作呢?或者这被认为是不可能的?

【问题讨论】:

    标签: sql-server filestream integrated-security


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

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

    试试这个:

    NET USE \\DBSERVER /USER:DOMAIN\USERNAME 
    

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多