您好,登錄后才能下訂單哦!
這篇文章給大家介紹SQL Server中怎么防止開發人員獲取敏感數據,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
***步,創建數據庫主密鑰
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='SysKey' GO
這里創建了數據庫主密鑰,比如密碼是'SysKey'。主密鑰只需要創建一次。
第二步,創建證書
CREATE CERTIFICATE MYCERT with SUBJECT = 'My Cert' GO
這里創建了證書MYCERT,證書的元數據中的字段為'My Cert'。證書創建一次,以后解密時需要先Open。
第三步,創建對稱密鑰
CREATE SYMMETRIC KEY MYKEY WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE MYCERT; GO
這里基于證書MYCERT創建了密鑰MYKEY,加密算法為AES_256。加密算法有好幾種。
前三步做完之后,我們可以在資源管理器中看到我們的證書和密鑰信息,如下圖所示:
第四步:加密解密有效性測試
我們先通過變量測試加密解密的有效性:
OPEN SYMMETRIC KEY MYKEY DECRYPTION BY CERTIFICATE MYCERT; declare @key varbinary(MAX); set @key=EncryptByKey(key_guid('MYKEY'),'20000.00'); select @key; select convert(varchar(100), DecryptByKey(@key));
在解密之前,要先打開我們定義的密鑰,通過:
OPEN SYMMETRIC KEY NCSK DECRYPTION BY CERTIFICATE NCSC;
這句打開密鑰,如果不先打開密鑰,返回的將會是NULL。
運行參考結果參考下圖:
第五步,準備使用的數據
為了描述方便,我們創建一個工資表變量:
declare @Salary table( FName nvarchar(50), FSalary varbinary(MAX));
這里要注意,存放加密數據的字段要設置成varbinary類型。
第六步,插入加密數據
插入時,要使用函數EncryptByKey對文本進行加密,通過函數key_guid獲取密鑰,加密后的數據類型為varbinary。
insert into @Salary(FName,FSalary) values ('張三',EncryptByKey(key_guid('MYKEY'),'20000.00')), ('李四',EncryptByKey(key_guid('MYKEY'),'25000.00')), ('王二',EncryptByKey(key_guid('MYKEY'),'30000.00'));
第七步:數據讀取
讀取數據時需要調用函數DecryptByKey解密,通過Convert將解密后的Varbinary轉換成varchar類型。
select *,convert(varchar, DecryptByKey(FSalary)) from @Salary;
完整的處理請參考下圖:
關于SQL Server中怎么防止開發人員獲取敏感數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。