SQL auth仅适用于多个角色应用程序吗?

时间:2009-10-31 00:32:27

标签: sql-server authentication

我认为Windows身份验证是用于连接SQL DB的最佳做法。我听说有关应用程序用户帐户的信息..

SQL auth是否适用于多个角色应用程序并且窗口身份验证仅适用于单个角色应用程序?我从来没有听说过具有多功能角色的Windows认证仅适用于内部应用程序?  多个Windows登录=多个连接=没有汇集=缩放不良?

3 个答案:

答案 0 :(得分:0)

将Web身份验证用于Web应用程序的问题在于,许多Web应用程序将其应用程序用户的凭据存储在用于其他应用程序数据的同一SQL数据库中。

所以你有鸡和蛋的问题。在连接到数据库之前,您无法对用户进行身份验证,如果不对用户进行身份验证,则无法连接到数据库。

应该可以使用Windows身份验证,然后具有存储在数据库中的用户的特定于应用程序的属性。但是大多数人发现管理起来很麻烦,并且还限制了应用程序的可移植性。

例如,如果应用程序的某个功能允许用户更改自己的密码,则运行Web应用程序的进程需要具有更改Windows密码的权限,这可能意味着应用程序需要以管理员权限运行。

如果让应用程序管理应用程序上下文的用户ID,那么更改用户密码只是一个SQL操作,而您的应用程序负责执行该操作的安全性。

答案 1 :(得分:0)

我不确定单角色和多角色应用的含义。在有多个SQL Server数据库角色之前,我已经构建了应用程序,每个角色都允许在该角色中使用Windows域用户组。因此,用户管理完全在Active Directory中,域组和数据库角色之间具有1-1对应关系。

我们通常不会在应用程序本身内管理安全性,除非在数据库创建期间明显声明性地根据设计授予每个对象特定角色的访问权限。通常,在一个简单的情况下,我们依赖于db_datareader角色被授予非特定用户组(如数据库和网络管理员)以用于故障排除或报表编写者或业务分析人员进行临时报告。应用程序的实际用户将被授予在相关SP上执行以便能够修改任何数据(因此所有数据创建或修改都是通过SP进行的,并且只有ThisAppsUsers AD组的显式成员才能执行此操作)。只有ThisAppsAdmins AD组才能访问任何高级SP(例如,合并或删除帐户)。这通常是中等规模应用所需要的。对于更复杂的功能,还可以直接查询AD以获取自定义属性(用户只是此客户帐户的管理员,但其他人只是用户)

这种技术可以与SQL Server登录一起使用,但当然必须将各个SQL Server登录添加到数据库角色,并且您没有丰富的AD并且必须构建某种目录服务进入你的数据库。

许多应用程序可能无法使用AD,因此在这种情况下,安全架构显然必须满足该模型的需要。

答案 2 :(得分:0)

使用针对SQL JDBC的integratedSecurity = true选项,通过包含JDBC auth .dll,应该为您提供数据库连接而无需进行身份验证...