笔记266 SQLSERVER2005中的应用程序角色 2013-5-5
笔记266 SQLSERVER2005中的应用程序角色 2013-5-5
1 --SQLSERVER2005中的应用程序角色 2013-5-5 2 --应用程序角色 跟固定数据库角色跟数据库用户是并排的 3 --应用程序角色是一个数据库主体,他使应用程序能够用其自身的、类似用户 4 --的特权来运行。使用应用程序角色可以只允许通过特定应用程序连接的用户 5 --访问特定数据 6 7 --与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。 8 --应用程序角色使用两种身份验证模式,可以使用sp_setapprole来激活,并且需要密码 9 --因为应用程序角色是数据库级别的主体,所以他们只能通过其他数据库中授予guest用户 10 --帐户的权限来访问这些数据库。因此,任何已禁用guest用户账户的数据库对其他数据库 11 --中的应用程序角色都是不可访问的 12 13 --应用程序角色切换安全上下文的过程包括以下步骤 14 --(1)用户执行客户端应用程序 15 --(2)客户端应用程序作为用户连接到SQLSERVER 16 --(3)应用程序用一个只有他才知道的密码执行sp_setapprole存储过程 17 --(4)如果应用程序角色名称和密码都有效,将激活应用程序角色 18 --(5)此时,连接将失去用户权限,而获得应用程序角色权限 19 EXEC [sys].[sp_setapprole] @rolename = NULL, -- sysname 20 @password = NULL, -- sysname 21 @encrypt = '', -- varchar(10) 22 @fCreateCookie = NULL, -- bit 23 @cookie = NULL -- varbinary(50) 24 25 --例如,创建一个名为AppRole的角色,并且在查询中激活该角色,操作步骤如下 26 EXEC [sys].[sp_setapprole] @rolename = 'Approle', -- sysname 27 @password = '123@ABC' -- sysname 28 29 --在SQL的早期版本中,用户若要在激活应用程序角色后重新获取其原始安全上下文,唯一的方法就是 30 --断开SQLSERVER连接,然后重新连接。在SQL2005中,sp_setapprole提供了Cookie选项,他可以在 31 --激活应用程序之前创建一个包含上下文信息的Cookie。sp_unsetapprole可以使用此Cookie将会话 32 --恢复到其原始上下文 33 --EXEC [sys].[sp_unsetapprole] @cookie = NULL -- varbinary(50) 34 35 DECLARE @cookie VARBINARY(8000) 36 EXEC [sys].[sp_setapprole] @rolename = 'Approle', -- sysname 37 @password = '123@ABC', -- sysname 38 @encrypt = '', -- varchar(10) 39 @fCreateCookie = true, -- bit 40 @cookie = @cookie OUTPUT -- varbinary(50)