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