自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

數(shù)據(jù)庫 SQL Server
我們在使用SQLServer數(shù)據(jù)庫的時候,數(shù)據(jù)庫表的字段值都是公開的。如果您是項目負(fù)責(zé)人,知道所有實際數(shù)據(jù)無可厚非,但如果這些數(shù)據(jù)比較敏感,您并不希望開發(fā)團隊的其他人員知道該怎么辦呢?

朋友們,我們在使用SQLServer數(shù)據(jù)庫的時候,數(shù)據(jù)庫表的字段值都是公開的。如果您是項目負(fù)責(zé)人,知道所有實際數(shù)據(jù)無可厚非,但如果這些數(shù)據(jù)比較敏感,您并不希望開發(fā)團隊的其他人員知道該怎么辦呢?

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

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

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

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

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

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

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

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

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

第三步,創(chuàng)建對稱密鑰 

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

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

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

第四步:加密解密有效性測試

我們先通過變量測試加密解密的有效性: 

  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)); 

在解密之前,要先打開我們定義的密鑰,通過:

  1. OPEN SYMMETRIC KEY NCSK DECRYPTION BY CERTIFICATE NCSC; 

這句打開密鑰,如果不先打開密鑰,返回的將會是NULL。

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

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

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

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

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

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

插入時,要使用函數(shù)EncryptByKey對文本進行加密,通過函數(shù)key_guid獲取密鑰,加密后的數(shù)據(jù)類型為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ù)時需要調(diào)用函數(shù)DecryptByKey解密,通過Convert將解密后的Varbinary轉(zhuǎn)換成varchar類型。

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

完整的處理請參考下圖:

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

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

2022-02-17 16:05:58

SQL開發(fā)招聘

2023-03-15 07:12:53

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

2021-02-19 09:33:01

kubernetesJAVA服務(wù)

2023-08-14 15:23:37

2013-04-15 10:00:09

程序員

2019-11-27 18:54:07

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

2021-12-10 23:48:19

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

2012-05-30 15:15:42

ibmdw

2009-12-11 14:50:14

Visual Basi

2009-11-23 20:07:51

ibmdw開發(fā)

2011-03-11 09:54:01

Windows Ser

2019-06-03 14:20:30

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

2009-12-25 10:11:22

.NET Framew

2009-12-09 10:04:20

ibmdwJavaTwitter

2012-11-23 09:42:26

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

2022-01-04 19:26:42

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

2020-10-27 08:46:06

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

2009-05-31 08:31:07

GoogleWaveTechCrunch

2011-09-05 14:21:29

webOS

2022-12-19 07:33:49

開發(fā)人員谷歌制度
點贊
收藏

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