将用户的标识附加到SQL Server连接

时间:2013-06-21 17:16:23

标签: c# sql-server

我们有一个应用程序使用SQL Server登录(而不是AD)对数据库进行身份验证。这是一个通用帐户,因此,如果我们有100个用户登录,则他们创建的所有连接都具有与之关联的相同用户名。

这对我们想要用来监控服务器上不适当或错误行为的一些审计工具提出了挑战(他们无法解析用户)。

有没有更好的方法来管理此连接? 以下是我们的目标:

我们要授权应用程序访问SQL服务器,而不是用户(因此我们不希望用户能够启动Access,或者Crystal Reports并开始搞乱db,访问​​应该通过我们的代码)。出于这个原因,我们避免使用集成安全性。

我们希望能够将SQL Server上的活动进程与启动它的用户关联起来

我们需要能够使用ORM(非常喜欢参数化的SQL而不是存储过程,所以我们不能只指定AD帐户的执行权限)

我所知道的唯一选择是:

  • 将某种特定于用户的元数据附加到连接
  • 每个用户使用SQL Server登录
  • 在我们的连接上放弃任何用户身份信息

我不知道第四种选择吗?

1 个答案:

答案 0 :(得分:1)

一般方法是将用户名附加到所有写入的记录中......通过FK审计/历史记录表或作为表中的列。您的应用程序与数据库进行对话 - 您的用户没有任何我知道的“传递”。

另一种选择是在用户使用您的应用程序时获取用户名,并在用户的会话中放置一个connectionString /使用集成凭据并传入用户的用户名的任何内容...然后让用户在其期间使用其唯一存储的connectionString他们使用该应用程序。这应该可行,但你必须在代码中处理权限等的SQLExceptions ...我认为你必须处理它。