|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我们分析上面的两个操作,都有一个“删除数据”的过程。server|加密|系统SQLServer2005加密系统(一)
SQLServer2005中引进了一套完全的加密办法,详细的术语呢就偷个懒不写了,人人能够看BOL么。
大抵的布局呢就是在安装sQLServer2005的时分使用SQLServer服务账号天生一个服务主密钥ServiceMasterKey,然后数据库的办理员能够在数据库上创立DatabaseMasterKey,固然也能够不创立,同时数据库办理员能够为DatabaseUser创立证书、对称密钥大概非对称密钥。这三种工具都能够用于加密用户数据,但一样平常保举使用证书签订代码,使用证书大概非对称密钥加密对称密钥,使用对称密钥加密用户数据。
以下仍是给一段代码,由于思索到我跟王辉兄弟事先在成都宾馆里研讨这个器材就是苦于找不到完全的典范代码,厥后仍是GTEC的徐壮大拿给了个Link,然后我们又东拼西凑才出了一段代码,不敢独享,拿来与人人分享。
先给使用证书签订代码的典范,这段代码的优点是不必给DatabaseUser年夜的权限,就能够让用户修正部分数据,这也是SQLServer2005中权限粒度化的一种体现:
--------------------------------------------------------------------------------
--创立实行用数据库
USEmaster
IFEXISTS(SELECT[name]FROMsys.databasesWHERE[name]=Sales)
DROPDATABASESales
CREATEDATABASESales
IFEXISTS(SELECTprincipal_idFROMsys.server_principalsWHERE[name]=ryanAND[type]=S)
DROPLOGINryan
CREATElOGINryanWITHPASSWORD=P@ssw0rd
IFEXISTS(SELECTprincipal_idFROMsys.server_principalsWHERE[name]=teddyAND[type]=S)
DROPLOGINteddy
CREATElOGINteddyWITHPASSWORD=P@ssw0rd
--创立用户ryan,并创立数据库主密钥
USESales
IFEXISTS(SELECT*FROMsys.database_principalsWHERE[name]=ryanAND[type]=S)
DROPUserryan
CREATEUSERryanFORLOGINryanWITHDEFAULT_SCHEMA=dbo
GO
CREATEMASTERKEYENCRYPTIONBYPASSWORD=P@ssw0rd
GO
--创立证书
IFEXISTS(SELECT[name]FROMsys.certificatesWHERE[name]=CERT_MAINTAIN)
DROPCERTIFICATECERT_MAINTAIN
CREATECERTIFICATECERT_MAINTAIN
WITHSUBJECT=CertificateForDatabaseMaintainance,
START_DATE=01/01/2006,
EXPIRY_DATE=12/31/2015
GO
SELECT*FROMsys.certificates
--使用证书创立数据库用户,并授与该用户办理数据库用户的权限
CREATEUSERUSER_MAINTAINFORCERTIFICATECERT_MAINTAIN
GRANTALTERANYUSERTOUSER_MAINTAIN
--创立存储历程
IFEXISTS(SELECT[name]FROMsys.proceduresWHERE[name]=usp_AddUser)
DROPPROCEDUREdbo.usp_AddUser
GO
CREATEPROCEDUREdbo.usp_AddUser
@UserNamevarchar(50)
AS
IFEXISTS(SELECT*FROMsys.database_principalsWHERE[name]=@UserNameAND[type]=S)
EXEC(DROPUSER+@UserName)
EXEC(CREATEUSER+@UserName)
GO
--完成筹办事情,入手下手测试加密
GRANTEXECONdbo.usp_AddUserTOryan
EXECUTEASLOGIN=ryan
BEGINTRY
EXECdbo.usp_AddUserteddy
ENDTRY
BEGINCATCH
SELECTERROR_MESSAGE()ASErrorMsg
ENDCATCH
REVERT
--使用证书签订存储历程代码
ADDSIGNATURETOdbo.usp_AddUserBYCERTIFICATECERT_MAINTAIN
ALTERCERTIFICATECERT_MAINTAINREMOVEPRIVATEKEY
--在此实验实行剧本
EXECUTEASLOGIN=ryan
EXECdbo.usp_AddUserteddy
REVERT
优化的SQL查询算法,有效地提高查询速度 |
|