2024年6月6日 星期四

[研究]Microsoft SQL Server 數據資料加密、遮罩技術比較

[研究]Microsoft SQL Server 數據資料加密、遮罩技術比較

2024-06-06

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

Microsoft SQL Server 提供數據加密技術有哪些 ? 哪一版開始支援 ? 用表格比較 ?

ChatGPT

以下是 Microsoft SQL Server 提供的主要數據加密技術及其支援版本的比較:

加密技術 描述 優點 缺點 適用場景 支援版本
Cell-level Encryption 或
Column-Level Encryption
(CLE)
(單元級加密)
(儲存格加密)
對單個數據列或數據單元進行加密。 細粒度控制,僅加密敏感數據,降低性能開銷。 需要修改應用程序代碼來處理加密和解密邏輯。 保護特定的敏感數據,如信用卡號、社會保障號。 SQL Server 2005 及以上版本
Transparent Data Encryption (TDE)
(透明資料加密)
整個數據庫進行加密,包括備份文件。加密和解密對用戶透明。 簡單易用,無需修改應用程序代碼。 性能開銷較大,僅對靜態數據進行加密,無法保護正在處理的數據。 保護數據庫文件和備份文件免受未經授權訪問。 SQL Server 2008 及以上版本
Always Encrypted
(始終加密)
保護數據庫中的敏感數據,使其對數據庫管理員和高權限用戶也不可見。 在應用程序層進行加密和解密,數據庫管理員無法看到明文數據,強安全性。 需要應用程序修改,僅支援某些數據類型和操作。

伺服器端操作無法運作。包括(但不限於):UPDATE、BULK INSERT(T-SQL)、SELECT INTO、INSERT..SELECT 
高安全性要求的應用場景,如醫療、金融數據。 SQL Server 2016 及以上版本
Dynamic Data Masking (DDM)
(動態資料遮罩)
掩蓋敏感數據以防止未經授權的數據讀取。 簡單易用,無需修改數據或應用程序代碼。 僅掩蓋數據展示,不進行數據加密,對有權訪問的用戶無效。 掩蓋敏感數據展示,防止未經授權的數據讀取。 SQL Server 2016 及以上版本
Backup Encryption
(備份加密)
對數據庫備份進行加密,以保護備份文件。 簡單易用,保護備份文件,減少數據洩露風險。 僅對備份文件進行保護,無法保護活動數據。 保護數據庫備份文件免受未經授權訪問。 SQL Server 2014 及以上版本
BitLocker
( BitLocker磁碟機加密)
使用 Windows 的 BitLocker 對整個磁盤加密,包括 SQL Server 數據文件。 操作系統級別的加密,保護整個磁盤上的數據。 需要操作系統支持,對 SQL Server 性能可能有影響。 保護整個磁盤數據,適用於高度敏感的數據存儲。 支援 Windows Server 版本


********************************************************************************
註:Always Encrypted (始終加密) 某些 SQL 指令無法用

Always Encrypted vs CLE
https://learn.microsoft.com/en-us/answers/questions/517753/always-encrypted-vs-cle
加密和解密透過客戶端驅動程式進行。這意味著使用始終加密時,某些僅在伺服器端發生的操作將無法運作。這些行動包括(但不限於):
透過UPDATE、BULK INSERT(T-SQL)、SELECT INTO、INSERT..SELECT 將資料從一列複製到另一列
• 觸發器、時態表、稀疏列、全文、記憶體中OLTP 和變更資料擷取(CDC)。

********************************************************************************
2024-11-12 補,DDM 要生效,權限要比 db_owner 低,例如僅 datareader 加上 datawriter


SQL Server 類帳號僅有 datareader 和 datawriter,可以執行伺服器端操作嗎?例如 UPDATE、BULK INSERT(T-SQL)、SELECT INTO、INSERT..SELECT 等

ChatGPT 說:

若 SQL Server 類帳號(SQL Server Login)僅被授予 db_datareader 和 db_datawriter 角色,則其對資料庫的操作權限會有以下限制:

  • UPDATE:db_datawriter 角色允許對表格進行 INSERT、UPDATE、DELETE 操作,因此這些帳號可以執行 UPDATE 操作。
  • SELECT INTO:SELECT INTO 會將查詢結果插入到一個新的表格,這需要 CREATE TABLE 權限。單純的 db_datareader 和 db_datawriter 角色不包括 CREATE TABLE 權限,因此無法直接使用 SELECT INTO。
  • BULK INSERT:BULK INSERT 操作需要 BULK ADMIN 伺服器級別權限,db_datareader 和 db_datawriter 角色無法滿足此需求。如果需要執行 BULK INSERT,必須顯式分配 BULK ADMIN 角色或相應權限。
  • INSERT..SELECT:INSERT..SELECT 允許從一個表格或查詢結果插入資料到另一個已存在的表格。由於 db_datawriter 角色允許執行 INSERT 操作,因此可以使用 INSERT..SELECT。

總結來說,僅有 db_datareader 和 db_datawriter 權限的帳號可以執行 UPDATE 和 INSERT..SELECT 操作,但無法執行 SELECT INTO 和 BULK INSERT。
********************************************************************************

(完)

相關

加密資料行 (Encrypt a Column of Data)
https://learn.microsoft.com/zh-tw/sql/relational-databases/security/encryption/encrypt-a-column-of-data?view=sql-server-ver16
Encrypt a Column of Data
https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/encrypt-a-column-of-data?view=sql-server-ver16

column level encryption (CLE,欄位層級加密)
https://learn.microsoft.com/en-us/answers/questions/1320534/column-level-encryption

使用 [Always Encrypted 精靈] 設定資料行加密
https://learn.microsoft.com/zh-tw/sql/relational-databases/security/encryption/always-encrypted-wizard?view=sql-server-ver16

[研究]SQL Server 動態資料遮罩 (Dynamic Data Masking, DDM) 試用
https://shaurong.blogspot.com/2024/11/sql-server-dynamic-data-masking-ddm.html

[研究]Microsoft SQL Server 數據加密技術比較
https://shaurong.blogspot.com/2024/06/microsoft-sql-server.html

[研究]SQL Server 角色權限、可執行 SQL 指令、可檢視動態資料遮罩 (Dynamic Data Masking, DDM)比較
https://www.blogger.com/blog/post/edit/3479310643037793626/5394507395545162744

沒有留言:

張貼留言