SQL Server 2005存储过程签名(一)

日期: 2008-07-31 作者:stswordman 来源:TechTarget中国 英文

  SQL SERVER 2005提供的对存储过程签名(signature)功能是我最喜欢的。


  如果我们要编写一个存储过程,执行该存储过程里的代码需要权限P,并且我们想要用户Alice可以执行这个存储过程,但是我们不想将权限P直接赋予给用户Alice, 我们可以用证书(certificate)对这个存储过程进行签名来完成这一需求:


  a) 如果P是一个数据库级别的权限,那我们可以在相应的数据库中创建一个证书,使用证书创建一个用户(user),然后将权限p授权给这个用户


  b) 如果P是一个服务器级别的权限,那我们能要在master数据库中创建一个证书,使用证书创建一个登录(login),然后将权限P授权给这个登录


  签名之后,存储过程就会在执行期间获得权限P,而我们仅仅授予了Alice执行这个存储过程的权限。


  如果我们既需要服务器级别的权限,又需要数据库级别的权限,那么我们既要创建用户,又要创建登录。下面列出步骤:


  1) 在数据库中创建证书


  2) 创建一个用户(user)并映射到这个证书


  3) 将数据库级别的权限授予这个用户


  4) 备份这个证书


  5) 在master数据库中还原这个证书


  6) 创建一个登录(login),并将登录映射到证书


  7) 将服务器级别的权限授予给这个登录


  我们也可以先在master数据库中创建证书,然后再将其还原到用户alice工作的数据库。也就是证书的创建顺序并不重要,重要的是master数据库中的证书一定要和用户数据库中的相同。


  下面是演示:


  – 目的


  – 展示如何用证书签名一个存储过程,


  –并授予证书相应的权限 







create database demo; 
   
use demo;  

  com/Images/OutliningIndicators/None.gif” width=11 align=top>– 创建一个存储过程,该过程会创建一个主体(包含登录和用户)

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐