标签: application-role

如何向应用程序角色授予 db_owner 权限?

如何将db_owner固定数据库角色的所有权限和特权授予应用程序角色?

精简版

命令:

GRANT CONTROL ON [DatabaseName] TO [ApplicationRoleName];
Run Code Online (Sandbox Code Playgroud)

将是我想要的,但它失败了:

消息 15151,级别 16,状态 1,第 23 行
找不到对象“DatabaseName”,因为它不存在或您没有权限。

研究工作

我正在研究使用 SQL Server Application Roles

  • 它就像一个用户(因为它有一个用户名和密码)
  • 这就像一个角色

连接到服务器后,您的应用程序将运行一个存储过程以作为应用程序“登录”自己:

EXECUTE sp_SetAppRole @rolename = 'Contoso.exe', @password =
'Tm8gaSBkaWRuJ3QganVzdCBiYXNlNjQgZW5jb2RlIGEgcGFzc3dvcmQuIEl0J3Mgb25seSBhbiBleGFtcGxlIQ==';
Run Code Online (Sandbox Code Playgroud)

db_owner 的权限

通常,应用程序以作为db_owner固定角色成员的用户身份登录。该角色具有以下权限:db_owner

  • 对一切
  • 每张桌子上
  • 每一个观点
  • 每个存储过程、函数
  • 对于所有现有对象
  • 以及未来将存在的所有对象

而同时:

  • 您可以将用户置于数据库角色中
  • 您可以将用户置于应用程序角色中

您不能将应用程序角色置于数据库角色中

那么,问题来了:如何授予我的应用程序角色所有权限(即执行所有操作)?

角色权限

因此,现在是向角色授予权限的时候了。按照此页面的建议

GRANT SELECT, INSERT, UPDATE, DELETE ON Users TO [Contoso.exe]; …
Run Code Online (Sandbox Code Playgroud)

sql-server security permissions sql-server-2005 application-role

5
推荐指数
1
解决办法
5386
查看次数

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

使用 SQL Server 应用程序角色管理权限与使用标准登录名/用户并向所述用户授予必要权限相比有什么优势?

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

  1. 使用 SQL Server 登录名和密码连接到 SQL Server。
  2. 通过将角色名称和另一个密码传递给 sp_setapprole 来激活应用程序角色。

我不认为这比仅将应用程序角色的权限授予登录名/用户更好或更安全。应用程序必须可以使用这两个密码,并且任何获得登录密码访问权限的人都可以访问应用程序角色密码并从他们自己的程序或在 SSMS 中调用 sp_setapprole。对?

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

sql-server security application-role

3
推荐指数
1
解决办法
2894
查看次数