execute as login = ’alice’; sp_createPrincipal ’bob’, ’Apufe@))%’; revert; |
— 使用证书对存储过程进行签名
– 首先我们要创建一个数据库主密钥(database master key)
create master key encryption by password = ’Apufe@))%’; create certificate certSigncreatePrincipal with subject = ’for signing procedure sp_createPrincipal’; |
– 签名存储过程sp_createPrincipal
add signature to sp_createPrincipal by certificate certSigncreatePrincipal; |
— 现在签名完成了,可以将证书的私钥移除了
alter certificate certSigncreatePrincipal remove private key; |
– 对证书进行备份,随后在master数据库中将要使用该备份
backup certificate certSigncreatePrincipal to file = ’certSigncreatePrincipal.cer’; |
– 创建一个用户并将用户映射到证书
create user u_certSigncreatePrincipal from certificate certSigncreatePrincipal; |
–通过授权映射映射的方式将alter ANY USER权限赋给证书 (因为用户和证书是映射的,所以权限也就赋给了证书,SQLSERVER本身没有直接将权限赋给证书的方法。译者注)
grant alter any user to u_certSigncreatePrincipal; |
– 在master数据库中创建该证书
use master; create certificate certSigncreatePrincipal from file = ’certSigncreatePrincipal.cer’; |
— 创建登录并映射到证书
create login l_certSigncreatePrincipal from certificate certSigncreatePrincipal; |
– 通过授权映射登录的方式将alter ANY LOGIN权限赋给证书
grant alter any login to l_certSigncreatePrincipal; |
– 完成!
use demo; |
— 验证一下,master数据库中的证书和demo数据库中的证书是一样的。
select c.name from sys.certificates c, master.sys.certificates mc where c.thumbprint = mc.thumbprint; |
– 现在alice可以创建主体了
execute as login = ’alice’; sp_createPrincipal ’bob’, ’Apufe@))%’; revert; – cleanup drop user u_certSigncreatePrincipal; drop login l_certSigncreatePrincipal; drop procedure sp_createPrincipal; drop certificate certSigncreatePrincipal; drop user alice; drop login alice; drop user bob; drop login bob; use master; drop certificate certSigncreatePrincipal; drop database demo; – EOD |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
TT百科:存储过程
存储的过程可以访问或修改数据库中的数据,但并不绑定到特定的数据库或对象,这提供了许多优点。
-
在Oracle数据库的自定义函数中调用存储过程
在Oracle数据库的自定义函数中调用存储过程是否可行,Oracle专家Brian Peasland给出了具体的解答。
-
数据库工程师2012年3月刊:数据库2012
数据库的2012,不是末日而是新生。传统厂商纷纷发布大版本更新的数据库产品,开源技术更加强势,2012的精彩始于《数据库工程师》……
-
解读SQL Server数据库存储过程发展历史
SQL Server存储过程可以是Transact-SQL(T-SQL)语句,或者是.NET框架的公共语言运行时(CLR),它是专为方便数据库查询而设计的。