Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL auth仅适用于多角色应用程序,这是真的吗?_Sql Server_Authentication - Fatal编程技术网

Sql server SQL auth仅适用于多角色应用程序,这是真的吗?

Sql server SQL auth仅适用于多角色应用程序,这是真的吗?,sql-server,authentication,Sql Server,Authentication,我相信Windows auth是连接SQL DB的最佳实践。我听说正在谈论应用程序用户帐户 SQL auth仅适用于多角色应用程序,而Windows auth仅适用于单角色应用程序,这是真的吗?我从来没有听说windows auth和多角色操作系统只适用于Smail内部应用程序? 多个Windows登录=多个连接=无池=伸缩性差?对web应用程序使用Windows auth的问题是,许多web应用程序将其应用程序用户的凭据存储在用于其他应用程序数据的同一SQL数据库中 所以你有鸡和蛋的问题。在连

我相信Windows auth是连接SQL DB的最佳实践。我听说正在谈论应用程序用户帐户

SQL auth仅适用于多角色应用程序,而Windows auth仅适用于单角色应用程序,这是真的吗?我从来没有听说windows auth和多角色操作系统只适用于Smail内部应用程序?
多个Windows登录=多个连接=无池=伸缩性差?

对web应用程序使用Windows auth的问题是,许多web应用程序将其应用程序用户的凭据存储在用于其他应用程序数据的同一SQL数据库中

所以你有鸡和蛋的问题。在连接到数据库之前不能对用户进行身份验证,并且在未对用户进行身份验证的情况下也不能连接到数据库

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

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


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

我不确定您所说的单角色和多角色应用程序是什么意思。我以前构建过应用程序,其中有多个SQL Server数据库角色,每个角色都有一个Windows域组,该组用户允许在该角色中使用。因此,用户管理完全在Active Directory中,域组和数据库角色之间有1-1对应关系

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

同样的技术也可以用于SQL Server登录,但是当然,必须将单个SQL Server登录添加到数据库角色中,并且您没有丰富的AD,必须在数据库中构建某种目录服务


对于许多应用程序,甚至不能使用AD,因此在这种情况下,安全体系结构显然必须满足该模型。

使用SQL JDBC的integratedSecurity=true选项,包括JDBC auth.dll,应该可以在不进行身份验证的情况下实现数据库连接