SQL Server 应用角色与普通登录和用户有何不同?

3
使用SQL Server应用程序角色来管理权限相对于使用标准登录/用户并授予所需权限给这些用户的优势是什么?
我们一直在使用应用程序角色,需要以下情况:
1. 使用SQL Server登录名和密码连接到SQL Server。 2. 通过传递角色名称和另一个密码给sp_setapprole来激活应用程序角色。
我不明白这比将应用程序角色的权限授予登录/用户更好或更安全。两个密码都必须对应用程序可用,任何获得登录密码的人可能会获得应用程序角色密码并从自己的程序或SSMS中调用sp_setapprole。 对吗?
编辑:正如Ed Harper所推测的那样,在我的场景中,所有应用程序实例都使用相同的登录名。
3个回答

5

我从未使用过应用程序角色(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;

4
从您的描述中并不完全清楚,但听起来您可能正在使用在应用程序级别分配的SQL登录名 - 即所有应用程序实例(假设有多个实例)都使用相同的登录名/密码。在这种情况下,使用应用程序角色几乎没有任何价值。
据我所知,应用程序角色旨在在每个用户在SQL Server中拥有自己的登录名的情况下使用(也许是在通过AD身份验证授予对数据库访问权限的情况下),但您不想将用户赋予与他们使用的应用程序相同的权限;这假定应用程序使用AD用户的身份连接到数据库,然后通过使用sp_setapprole提升其权限。我从未见过这种方法在生产系统中使用。

是的,应用程序的所有实例都使用相同的登录/密码。 - markltx

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接