C# 正确的数据库访问身份验证

C# 正确的数据库访问身份验证,c#,asp.net,.net,sql-server,authentication,C#,Asp.net,.net,Sql Server,Authentication,我们正在开发一个简单的webapp,它将在我们的内部网上提供。对应用程序的访问将由“用户”表控制:如果表中有您的网络登录名,则您可以使用该应用程序 该应用程序本身将使用SQL数据库。在我们当前的dev设置中,我们都是dev数据库的管理员,因此我们拥有完全的访问权限。但是,当它部署到生产环境中时,我们有两个选项可以对数据库进行身份验证 授予每个适当的用户他或她自己在数据上的凭据有意义吗?还是所有用户都应该在数据库上共享一个应用程序级别的用户帐户?为每个应用程序用户创建单独的用户帐户会使我的经验复杂

我们正在开发一个简单的webapp,它将在我们的内部网上提供。对应用程序的访问将由“用户”表控制:如果表中有您的网络登录名,则您可以使用该应用程序

该应用程序本身将使用SQL数据库。在我们当前的dev设置中,我们都是dev数据库的管理员,因此我们拥有完全的访问权限。但是,当它部署到生产环境中时,我们有两个选项可以对数据库进行身份验证


授予每个适当的用户他或她自己在数据上的凭据有意义吗?还是所有用户都应该在数据库上共享一个应用程序级别的用户帐户?

为每个应用程序用户创建单独的用户帐户会使我的经验复杂化。如果没有您必须设计的安全规范,我将为应用程序创建一个登录,创建一个数据库角色,授予该角色权限,并将登录添加到该角色


如果使用此方法,您仍然可以通过在存储过程中传递用户名作为输入参数来审核用户操作。

每用户访问凭据将导致除最小用户之外的所有用户的后勤噩梦。在web环境中,它也会使事情变得非常复杂

我见过(并使用过)的最常见的方法是为每个应用程序使用专用用户。所有访问都通过该用户名/密码进行


您的应用程序在任何情况下都将执行授权,因此,如果需要,您可以审核执行各种操作的用户名。

您是否可以将用户添加到不同的角色,并根据角色授予访问权限?您是否需要跟踪每个用户在数据库上执行的操作,还是不关心?