笔记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)

 

posted @ 2013-08-04 20:29 桦仔 阅读(...) 评论(...)  编辑 收藏