偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

SQL Server如何防止開(kāi)發(fā)人員獲取敏感數(shù)據(jù)

數(shù)據(jù)庫(kù) SQL Server
我們?cè)谑褂肧QLServer數(shù)據(jù)庫(kù)的時(shí)候,數(shù)據(jù)庫(kù)表的字段值都是公開(kāi)的。如果您是項(xiàng)目負(fù)責(zé)人,知道所有實(shí)際數(shù)據(jù)無(wú)可厚非,但如果這些數(shù)據(jù)比較敏感,您并不希望開(kāi)發(fā)團(tuán)隊(duì)的其他人員知道該怎么辦呢?

朋友們,我們?cè)谑褂肧QLServer數(shù)據(jù)庫(kù)的時(shí)候,數(shù)據(jù)庫(kù)表的字段值都是公開(kāi)的。如果您是項(xiàng)目負(fù)責(zé)人,知道所有實(shí)際數(shù)據(jù)無(wú)可厚非,但如果這些數(shù)據(jù)比較敏感,您并不希望開(kāi)發(fā)團(tuán)隊(duì)的其他人員知道該怎么辦呢?

在上一篇《SQL Server如何進(jìn)行元數(shù)據(jù)底層加密》中,我詳細(xì)說(shuō)明了SQL Server數(shù)據(jù)加密用到的各種SQL語(yǔ)法,這一講我們結(jié)合實(shí)例實(shí)戰(zhàn)一下對(duì)數(shù)據(jù)庫(kù)字段進(jìn)行加密的方法和過(guò)程。

比如您是項(xiàng)目負(fù)責(zé)人,要給客戶開(kāi)發(fā)一個(gè)工資系統(tǒng)。一般企業(yè)的工資都是保密的,如果您直接把工資信息都明文放在數(shù)據(jù)庫(kù)中,您的開(kāi)發(fā)團(tuán)隊(duì)的每個(gè)人都很容易知道客戶員工的工資。如果客戶是個(gè)大企業(yè),這其中的風(fēng)險(xiǎn)我不說(shuō)您應(yīng)該也很清楚。

我們就以最簡(jiǎn)化的工資表為例,說(shuō)明如何對(duì)敏感信息進(jìn)行加密。如果您對(duì)加密用到的SQL語(yǔ)法不是很了解,建議您可以先回頭看看我上一篇的相關(guān)描述。

***步,創(chuàng)建數(shù)據(jù)庫(kù)主密鑰 

  1. CREATE MASTER KEY ENCRYPTION BY PASSWORD ='SysKey'  
  2. GO 

這里創(chuàng)建了數(shù)據(jù)庫(kù)主密鑰,比如密碼是'SysKey'。主密鑰只需要?jiǎng)?chuàng)建一次。

第二步,創(chuàng)建證書(shū) 

  1. CREATE CERTIFICATE MYCERT  
  2. with SUBJECT = 'My Cert'  
  3. GO 

這里創(chuàng)建了證書(shū)MYCERT,證書(shū)的元數(shù)據(jù)中的字段為'My Cert'。證書(shū)創(chuàng)建一次,以后解密時(shí)需要先Open。

第三步,創(chuàng)建對(duì)稱(chēng)密鑰 

  1. CREATE SYMMETRIC KEY MYKEY  
  2.  WITH ALGORITHM = AES_256  
  3.  ENCRYPTION BY CERTIFICATE MYCERT;  
  4. GO 

這里基于證書(shū)MYCERT創(chuàng)建了密鑰MYKEY,加密算法為AES_256。加密算法有好幾種。

前三步做完之后,我們可以在資源管理器中看到我們的證書(shū)和密鑰信息,如下圖所示:

第四步:加密解密有效性測(cè)試

我們先通過(guò)變量測(cè)試加密解密的有效性: 

  1. OPEN SYMMETRIC KEY MYKEY DECRYPTION BY CERTIFICATE MYCERT;  
  2. declare @key varbinary(MAX);  
  3. set @key=EncryptByKey(key_guid('MYKEY'),'20000.00');  
  4. select @key;  
  5. select convert(varchar(100), DecryptByKey(@key)); 

在解密之前,要先打開(kāi)我們定義的密鑰,通過(guò):

  1. OPEN SYMMETRIC KEY NCSK DECRYPTION BY CERTIFICATE NCSC; 

這句打開(kāi)密鑰,如果不先打開(kāi)密鑰,返回的將會(huì)是NULL。

運(yùn)行參考結(jié)果參考下圖:

第五步,準(zhǔn)備使用的數(shù)據(jù)

為了描述方便,我們創(chuàng)建一個(gè)工資表變量: 

  1. declare @Salary table(  
  2.  FName nvarchar(50),  
  3.  FSalary varbinary(MAX)); 

這里要注意,存放加密數(shù)據(jù)的字段要設(shè)置成varbinary類(lèi)型。

第六步,插入加密數(shù)據(jù)

插入時(shí),要使用函數(shù)EncryptByKey對(duì)文本進(jìn)行加密,通過(guò)函數(shù)key_guid獲取密鑰,加密后的數(shù)據(jù)類(lèi)型為varbinary。 

  1. insert into @Salary(FName,FSalary)  
  2. values  
  3. ('張三',EncryptByKey(key_guid('MYKEY'),'20000.00')),  
  4. ('李四',EncryptByKey(key_guid('MYKEY'),'25000.00')),  
  5. ('王二',EncryptByKey(key_guid('MYKEY'),'30000.00')); 

第七步:數(shù)據(jù)讀取

讀取數(shù)據(jù)時(shí)需要調(diào)用函數(shù)DecryptByKey解密,通過(guò)Convert將解密后的Varbinary轉(zhuǎn)換成varchar類(lèi)型。

  1. select *,convert(varchar, DecryptByKey(FSalary)) from @Salary; 

完整的處理請(qǐng)參考下圖:

怎么樣,整個(gè)過(guò)程不復(fù)雜吧。希望對(duì)您有所幫助! 

責(zé)任編輯:龐桂玉 來(lái)源: 快資訊
相關(guān)推薦

2023-03-15 07:12:53

企業(yè)開(kāi)發(fā)人員提供商

2021-02-19 09:33:01

kubernetesJAVA服務(wù)

2022-02-17 16:05:58

SQL開(kāi)發(fā)招聘

2023-08-14 15:23:37

2013-04-15 10:00:09

程序員

2019-11-27 18:54:07

物聯(lián)網(wǎng)數(shù)字孿生機(jī)器學(xué)習(xí)

2021-12-10 23:48:19

Java開(kāi)發(fā)技術(shù)

2012-05-30 15:15:42

ibmdw

2009-11-23 20:07:51

ibmdw開(kāi)發(fā)

2009-12-11 14:50:14

Visual Basi

2009-12-09 10:04:20

ibmdwJavaTwitter

2022-01-04 19:26:42

開(kāi)發(fā)人員安全性網(wǎng)絡(luò)安全

2012-11-23 09:42:26

開(kāi)源軟件開(kāi)發(fā)人員

2020-10-27 08:46:06

降低開(kāi)發(fā)人員的生產(chǎn)力

2011-03-11 09:54:01

Windows Ser

2019-06-03 14:20:30

Java數(shù)據(jù)庫(kù)大數(shù)據(jù)工具

2009-12-25 10:11:22

.NET Framew

2009-05-31 08:31:07

GoogleWaveTechCrunch

2011-09-05 14:21:29

webOS

2022-12-19 07:33:49

開(kāi)發(fā)人員谷歌制度
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)