如何将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
而同时:
您不能将应用程序角色置于数据库角色中
那么,问题来了:如何授予我的应用程序角色所有权限(即执行所有操作)?
因此,现在是向角色授予权限的时候了。按照此页面的建议:
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
使用 SQL Server 应用程序角色管理权限与使用标准登录名/用户并向所述用户授予必要权限相比有什么优势?
我们一直在使用需要以下场景的应用程序角色:
我不认为这比仅将应用程序角色的权限授予登录名/用户更好或更安全。应用程序必须可以使用这两个密码,并且任何获得登录密码访问权限的人都可以访问应用程序角色密码并从他们自己的程序或在 SSMS 中调用 sp_setapprole。对?
编辑:正如 Ed Harper 推测的那样,应用程序的所有实例在我的场景中都使用相同的登录名。