SQL Server应用程序角色与常规登录和用户

时间:2016-04-07 13:26:54

标签: sql-server security application-role

使用SQL Server应用程序角色管理权限与使用标准登录/用户以及向所述用户授予必要权限有什么好处?

我们一直在使用需要以下场景的应用程序角色:

  1. 使用SQL Server登录名和密码连接到SQL Server。
  2. 通过将角色名称和另一个密码传递给sp_setapprole来激活应用程序角色。
  3. 除了授予应用程序角色对登录/用户的权限之外,我不知道它是如何更好或更安全的。这两个密码必须可供应用程序使用,并且任何有权访问登录密码的人都可以访问应用程序角色密码并从他们自己的程序或SSMS中调用sp_setapprole。正确?

    编辑:正如Ed Harper推测的那样,应用程序的所有实例都在我的场景中使用相同的登录。

3 个答案:

答案 0 :(得分:4)

我从未使用过应用程序角色(CREATE APPLICATION ROLE)。我真的看不出他们的意思

我使用了数据库角色并添加了用户作为成员

CREATE ROLE WebUsers AUTHORIZATION dbo;
ALTER ROLE WebUsers ADD MEMBER Tom;
ALTER ROLE WebUsers ADD MEMBER Dick;
ALTER ROLE WebUsers ADD MEMBER Harry;

CREATE ROLE WebAdmins AUTHORIZATION dbo;
ALTER ROLE WebAdmins ADD MEMBER Tom;

角色拥有权限,而不是用户

GRANT EXEC TO WebAdmins;

GRANT EXEC On SCHEMA::WebCode TO WebAdmins;

答案 1 :(得分:4)

从您的描述中并不完全清楚,但听起来您可能正在使用在应用程序级别分配的SQL登录 - 即应用程序的所有实例(假设有多个实例)使用相同的登录名/密码。在这种情况下,使用应用程序角色几乎没有增加价值。

据我了解,应用程序角色旨在用于每个用户在SQL Server中都有自己的登录名(可能在AD身份验证授予访问数据库的情况下),但您不想授予用户与他们使用的应用程序具有相同的权这假设应用程序使用AD用户的标识连接到数据库,然后使用sp_setapprole提升其权限。我从未见过在生产系统中使用过这种方法。

答案 2 :(得分:0)

使用常规登录名,您的凭据和密码可能会在网络上传递。如果密码也保存在数据库中,则可以在数据库中完成应用程序角色切换。