0

我刚刚开始研究一个实现与标准略有不同的安全性的系统。

他们为系统的每个用户创建一个新的 SQL 用户(现在大约有 32K)。每个查询都是通过最初使用 SA 帐户的连接发送的(不要陷入困境),然后在我们知道用户是谁之后,每个查询都使用 EXECUTE AS USER。

现在有这么多用户,创建新用户和切换对性能有明显影响,公司正在考虑改善这种情况。

几点: - SQL 代码是动态 sql(不是存储过程) - 最初的想法是为了减轻公司的开发人员担心写 SQL 担心权限的需要 - 让另一层担心它。

如何尝试改进查询执行时间并避免 EXECUTE AS USER 代码并仍然获得相同的安全审查?

SQL Server 是否支持会话变量来存储用户帐户?

4

1 回答 1

0

如果没有更多关于应用程序安全模型以及它如何控制和/或池化数据库连接的详细信息,很难知道这是否有用。它是胖客户端、n 层还是其他?

SQL 连接可以使用一个用户可配置的二进制(128)字段来支持单个“会话变量” CONTEXT_INFO,该字段在连接期间持续存在。这可能满足您的要求,但您需要注意,如果您使用它来存储安全信息,最终用户将可以访问它 - 因此您应该加密或加盐并散列其中的任何安全信息,CONTEXT_INFO以防止用户篡改他们的权限; 这可能会对性能产生影响。

根据您的应用程序架构,它可能不适用,但您是否考虑过切换到 Windows 授权并通过 Active Directory 用户和组来组织权限?

于 2011-07-07T07:56:58.907 回答