數(shù)據(jù)庫管理:SQL Server 2008安全性探討
Ruby 發(fā)表于:12年09月06日 11:18 [轉(zhuǎn)載] DOIT.com.cn
非對(duì)稱密鑰
- CREATE ASYMMETRIC KEY name [AUTHORIZATION owner] [FROM key_source] WITH ALGORITHM=algrithm [ENCRYPTION BY PASSWORD='password']
在創(chuàng)建非對(duì)稱密鑰時(shí),可以指定密鑰對(duì)的所有者和密鑰源(可以是一個(gè)強(qiáng)名稱文件、一個(gè)程序集或一個(gè)可執(zhí)行的程序集文件)另外,也可以使用一個(gè)決定私鑰使用的位數(shù)的算法,選擇密鑰成俗是512,1024還是2048位,還可以使用ENCRYPTION BY PASSWORD選項(xiàng)來加密私鑰。如果沒有指定密碼,數(shù)據(jù)庫主密鑰將加密私鑰
- USE AdventureWorks2008 CREATE ASYMMETRIC KEY HumanResources WITH ALGORITHM=RSA_2048; GO
可以使用ALTER ASYMMETRIC KEY語句更改密鑰對(duì)的屬性,可以使用REMOVE PRIVATE KEY選項(xiàng)將私鑰從數(shù)據(jù)庫中刪除(確保已經(jīng)先備份過私鑰),或者可以更改保護(hù)私鑰的方式。例如,可以更改用來加密私鑰的密碼,然后把保護(hù)方式從密碼改為數(shù)據(jù)庫主密鑰,反之亦然。下面的代碼,通過密碼加密在前面的例子中創(chuàng)建的HumanResouces密鑰對(duì)中的私鑰:
- USE AdventureWorks2008 ALTER ASYMMETRIC KEY HumanResources WITH PRIVATE KEY (ENCRYPTION BY PASSWORD='P@ssw0rd')
下面的例子中,通過先解密,然后用一個(gè)新的密碼重新加密的方式更改用于加密私鑰的密碼
- USE AdventureWorks2008 ALTER ASYMMETRIC KEY HumanResources
- WITH PRIVATE KEY(DECRYPTION BY PASSWORD='P@ssw0rd',ENCRYPTION BY PASSWORD='48UFDSJehf@*hda'); GO
證書
在加密方面,公鑰證書和非對(duì)稱密鑰的操作方式一樣,不過,密鑰對(duì)被綁定到證書。公鑰包含在省屬詳細(xì)信息中,而私鑰必須被安全地歸檔。與證書關(guān)聯(lián)的私鑰必須用密碼、數(shù)據(jù)庫主密鑰或另外一個(gè)加密密鑰保護(hù)。在加密數(shù)據(jù)時(shí),最好的做法是使用一個(gè)對(duì)稱密鑰加密數(shù)據(jù),然后使用公鑰加密該對(duì)稱密鑰。
當(dāng)創(chuàng)建一個(gè)自簽名證書時(shí),可以使用CREATE CERTIFICATE語句?梢赃x擇一個(gè)強(qiáng)密碼或者數(shù)據(jù)庫主密鑰加密私鑰;蛘咭部梢允褂肅REATE CERTIFICATE語句從一個(gè)文件導(dǎo)入證書或私鑰。另外,可以基于已簽名的程序集創(chuàng)建證書。
在證書創(chuàng)建完成之后,可以使用ALTER CERTIFICATE語句修改證書?梢詧(zhí)行的更改包括改變保護(hù)四方的方式或從SQL Server中刪除私鑰。只有證書被用于驗(yàn)證數(shù)字簽名時(shí)才需要杉樹私鑰。如果公鑰被用來加密數(shù)據(jù)或?qū)ΨQ密鑰,那私鑰應(yīng)當(dāng)可以解密。在創(chuàng)建證書時(shí)最好使用 BACKUP CERTIFICATE語句備份證書和關(guān)聯(lián)的私鑰。您可以只備份證書而不歸檔私鑰,使用公鑰來驗(yàn)證或加密只能用私鑰解密的信息。
一旦證書不需要,可以使用DROP CERTIFICATE語句刪除。如果證書仍然和其他對(duì)象關(guān)聯(lián),則無法刪除。
- --Create the Personnel Data Certificate
- USE AdventureWorks2008; CREATE CERTIFICATE PersonnelDataCert ENCRYPTION BY PASSWORD='HRcertific@te'
- WITH SUBJECT='Personnel Data Encryption Certificate' EXPIRY_DATE='12/31/2011'; GO
- --Backup the certificate and private key to the file system
- Use AdventureWorks2008 BACKUP CERTIFICATE PersonnelDataCert TO FILE='c:\certs\Personnel.cert'
- WITH PRIVATE KEY (DECRYPTION BY PASSWORD='HRcertific@te', FILE='c:\certs\Personnelkey.pvk', ENCRYPTION BY PASSWORD='@notherPassword'); GO
- --Import the certificate and private key into the TempDB database
- USE tempdb CREATE CERTIFICATE PersonnelDataCert FROM FILE='c"\certs\Personnel.cer'
- WITH PRIVATE KEY (FILE='c:\certs\Personnelkey.pvk', DECRYPTION BY PASSWORD='@notherPassword', ENCRYPTION BY PASSWORD='TempDBKey1'); GO
- --更改用于加密私鑰的密碼
- USE tempdb ALTER CERTIFICATE PersonnelDataCert
- WITH PRIVATE KEY (ENCRYPTION BY PASSWORD='P@ssw0rd789', DECRYPTION BY PASSWORD='TempDBKey1')
- USE AdventureWorks2008 ALTER CERTIFICATE PersonnelDataCert REMOVE PRIVATE KEY
- GO
- USE tempdb DROP CERTIFICATE PersonnelDataCert; GO
公司簡(jiǎn)介 | 媒體優(yōu)勢(shì) | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會(huì)員注冊(cè) | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.