探索透明資料加密

已完成

Microsoft SQL Server 的透明資料加密 (TDE) 會加密在頁面層級的目標資料庫中的所有資料。 資料會在寫入磁碟時的資料頁面時經過加密,並在資料頁面讀入記憶體時進行解密。 最後的結果就是,磁碟上的所有資料頁面都會經過加密。

TDE 不會加密資料表或資料行層級的資料。 具有適當許可權的任何人都可以讀取資料、複製資料,甚至共用資料。 待用加密可防止有人將備份還原到不安全的伺服器,或複製所有的資料庫和交易記錄檔,然後附加至另一個不安全的伺服器。 備份作業期間不會進行解密。

TDE 會保護待用資料,並遵循各產業建立的數種法律、法規和指導方針。 透過這項功能,軟體開發人員可以使用 AES 和 3DES 加密演算法來加密資料,但不必變更現有的應用程式。

下圖顯示 TDE 加密的運作方式。

Transparent Data Encryption architecture.

使用 Azure SQL Database 時,啟用 TDE 非常簡單。 在 2017 年 5 月以後在 Azure SQL Database 中建立的資料庫會自動啟用 TDE。 在 2017 年 5 月之前建立的資料庫預設會停用 TDE,而且必須在這些資料庫上手動啟用 TDE。 2019 年 2 月以後建立,且具有 Azure SQL 受控執行個體的資料庫都會啟用 TDE。 在 2019 年 2 月之前建立的資料庫將會停用 TDE。

在 Azure SQL Database 資料庫中啟用 TDE 只須編輯 Azure 入口網站內的資料庫即可。 在 [透明資料加密] 窗格中,選取以啟用資料加密。

Transparent Data Encryption Settings for an Azure SQL Database.

根據預設,Azure SQL Database 內的資料庫會使用 Microsoft 提供的憑證進行加密。 Microsoft Azure 的確提供 [攜帶您自己的金鑰] 選項,可讓您使用公司所建立並上傳至 Azure 的憑證。 如果您的公司從 Azure 中移除憑證,則資料庫連線將會關閉,而且不會存取資料庫。

在 Microsoft SQL Server 資料庫內啟用 TDE 是簡單的程序,只需要一些 T-SQL 命令。 此流程涉及下列步驟:

  1. 在 master 資料庫內使用 CREATE MASTER KEY ENCRYPTION 命令設定主要金鑰。
  2. 在 master 資料庫中建立憑證,這是使用 CREATE CERTIFICATE 命令加密所用的憑證。
  3. 在資料庫中建立資料庫加密金鑰,這可讓您使用 CREATE DATABASE ENCRYPTION KEY 命令啟用 TDE。
  4. 加密金鑰建立後,即必須使用 ALTER DATABASE 命令啟用。

完整的命令集如下所示。

USE master;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa55.w.rd';
GO

CREATE CERTIFICATE MyServerCert
    WITH SUBJECT = 'TDEDemo_Certificate';
GO

USE [TDE_Demo];
GO

CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO

ALTER DATABASE TDE_Demo SET ENCRYPTION ON;
GO

TDE 啟用之後,需要一些時間才能加密資料庫,因為每個資料庫頁面都必須讀取、加密並寫回磁碟。 資料庫愈大,此作業將花費的時間越長。 此程序是背景程序,而且會以低優先順序執行,以便不多載系統的 IO 或 CPU。

建立 TDE 要使用的憑證後,就必須以手動方式備份並儲存在安全的地方。 SQL Server 與企業金鑰管理員 (EKMs) 整合,以便管理加密金鑰。 EKM 的範例之一便是 Azure Key Vault。

管理憑證非常重要,因為如果憑證遺失,又需要從備份還原資料庫,還原將因無法讀取資料庫而失敗。

注意

若要使用 TDE 搭配 Always On 可用性群組中的資料庫,您必須將用來加密資料庫的憑證備份並還原至將裝載該資料庫複本的可用性群組中的其他伺服器。

Azure 磁碟加密

除了這些 SQL Server 安全性功能以外,Azure VM 還包含額外的安全性層級:Azure 磁碟加密,這項功能可協助保護資料,並符合組織和合規性承諾。 如果使用 TDE,您的資料將會受到 Azure 磁碟加密的多層加密保護。