SQL Server數(shù)據(jù)庫(kù)如何正確加密?
此文章主要向大家介紹的是在SQL Server數(shù)據(jù)庫(kù)上正確進(jìn)行加密的實(shí)際操作步驟,我們大家都知道SQL Server數(shù)據(jù)庫(kù)上內(nèi)置了加密用的母的,主要是用來保護(hù)各種類型的敏感數(shù)據(jù)。在很多時(shí)候,這個(gè)加密對(duì)于你來說是完全透明的;
當(dāng)數(shù)據(jù)被存儲(chǔ)時(shí)候被加密,它們被使用的時(shí)候就會(huì)自動(dòng)加密。在其他的情況下,你可以選擇數(shù)據(jù)是否要被加密。SQL Server數(shù)據(jù)庫(kù)可以加密下列這些組件:
密碼
存儲(chǔ)過程,視圖,觸發(fā)器,用戶自定義函數(shù),默認(rèn)值,和規(guī)則。
在服務(wù)器和用戶之間傳輸?shù)臄?shù)據(jù)
密碼加密
SQL Server自動(dòng)將你分配給登陸和應(yīng)用角色的密碼加密。盡管當(dāng)你可以從主數(shù)據(jù)庫(kù)中直接察看系統(tǒng)表格而不需要密碼。你不能給對(duì)這種情況作出任何修改,事實(shí)上,你根本不能破壞它。
定義加密
在有些時(shí)候,如果對(duì)對(duì)象進(jìn)行加密是防止將一些信息分享給他人。例如,一個(gè)存儲(chǔ)進(jìn)程可能包含所有者的商業(yè)信息,但是這個(gè)信息不能和讓其他的人看到,即使他們公開的系統(tǒng)表格并可以看到對(duì)象的定義。這就是為什么SQL Server數(shù)據(jù)庫(kù)允許你在創(chuàng)建一個(gè)對(duì)象的時(shí)候進(jìn)行加密。為了加密一個(gè)存儲(chǔ)進(jìn)程,使用下面形式的CREAT PROCEDURE 語(yǔ)句:
- CREATE PROCEDURE procedurename [;number]
- [@parameter datatype
- [VARYING][ = defaultvalue][OUTPUT]]
- [, …]
- [WITH RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION]
我們關(guān)心的僅僅是可選的WITH參數(shù)。你可以詳細(xì)說明ARECOMPILE或者ENCRYPTION,或者你可以同時(shí)說明它們。ENCRYPTION關(guān)鍵字保護(hù)SQL Server數(shù)據(jù)庫(kù)它不被公開在進(jìn)程中。結(jié)果,如果ENCRYPTION在激活的時(shí)候系統(tǒng)存儲(chǔ)進(jìn)程sp_helptext就會(huì)被忽視,這個(gè)存儲(chǔ)進(jìn)程將被存儲(chǔ)在用戶創(chuàng)建進(jìn)程的文本中。
如果你不想要加密,你可以使用ALTER PROCEDURE,忽略WITH ENCRYPTION子句來重新創(chuàng)建一個(gè)進(jìn)程。
為了能夠使用加密。用戶和服務(wù)器都應(yīng)該使用TCP/IP NetworkLibraries用來連接。運(yùn)行適當(dāng)?shù)腘etwork Utility和檢查Force protocol encryption,看下表,用戶和服務(wù)器之間的連接將不會(huì)被加密。
加密也不能完全自由。當(dāng)連接確定后,要繼續(xù)其他的構(gòu)造,并且用戶和服務(wù)器必須運(yùn)行代碼來解釋加密和解釋的包裹。這里將需要一些開銷并且當(dāng)在編譯碼的時(shí)候會(huì)使進(jìn)程慢下來。如果網(wǎng)絡(luò)包裹在你控制范圍之外,使用這種做法是非常好的。
【編輯推薦】