用户管理 - 内置SQL Server与自定义用户列表

时间:2013-02-05 11:37:29

标签: sql-server asp.net-mvc-3 sql-server-2008

我刚刚开始指出一个项目,它将是一个相当高级的数据库,具有相当简单的MVC前端,可通过互联网访问,我不确定如何处理用户,我可以看到两个选项:< / p>

选项1 - 使用SQL Server内置登录/用户来处理用户身份验证并使用内置用户访问来控制谁可以访问哪些内容(几乎所有内容都将选择或存储过程)

选项2 - 使用我自己的用户列表(带有哈希盐渍密码)和我自己的访问控制列表(可能使用proc名称和OBJECT_NAME(@@PROCID)传递给另一个proc)并执行所有操作通过可访问所有过程/视图的应用程序配置文件写入/读取数据库。

我已经搜索但找不到任何理由我应该选择其中一个,任何人都可以共享一个链接或提供为什么一个比另一个好(或者如果两者都有明显的问题)?

如果您需要更多详情,请告诉我们。

1 个答案:

答案 0 :(得分:0)

如果通过连接池使用SQL身份验证(每个用户的选项1),则性能会相对较差。您将为每个用户汇集,但这仍然意味着100或1000的连接。有很多方法,但解决方案开始使选项1像选项2一样工作,所以你不妨使用选项2.

我见过一些创建SQL帐户的解决方案,可以为每个用户(通过一个基于应用程序的SQL帐户)进行初始身份验证,然后其余的工作就像选项2一样(再次通过一个基于应用程序的SQL帐户)。这些案例使用了大量的SQL帐户,因此每个用户都可以拥有一组视图,并模仿模式。作为Schemas&amp;自SQL Server 2005以来,别名已经可用,因此选择选项2是不值得的。

最后,不要使用SQL Server应用程序角色 - 它们是不好的安全实践。 Brian Kelly在一篇关于他们的文章(http://www.sqlservercentral.com/articles/Security/sqlserversecurityprosandconsofapplicationroles/1116/)中介绍了一些问题(pos&amp; cons)。