Tip
Microsoft Fabric Data Warehouse 是一個企業規模的關聯式倉庫,建立在資料湖基礎上,具備未來準備架構、內建 AI 及新功能。 如果你是資料倉儲新手,建議先從Fabric Data Warehouse開始。 現有的 專用 SQL 工作負載可升級至 Fabric,以取得資料科學、即時分析與報告等多項新功能。
僅適用於:Azure Synapse Analytics 專用 SQL 集區 (原為 SQL DW)
透明資料加密 (TDE)透過加密資料庫檔案、交易記錄檔案及靜態備份來保護專用 SQL 集區免受惡意離線活動的侵害。 加密與解密是即時發生,不需要變更應用程式。
您必須手動啟用 Azure Synapse Analytics 獨立專用 SQL 池的 TDE。
TDE 會在分頁層次上執行資料的即時 I/O 加密和解密。 系統會在將每個頁面讀取至記憶體時對它進行解密,然後在將頁面寫入至磁碟之前對它進行加密。 TDE 會使用一種名為資料庫加密金鑰 (DEK) 的對稱金鑰,將整個資料庫的儲存體加密。 在資料庫啟動時,即會將加密的 DEK 解密,然後用於解密和重新加密 SQL Server 資料庫引擎處理序中的資料庫檔案。 TDE 保護器則保護 DEK。 TDE 保護器是服務管理的憑證 (服務管理的透明資料加密)。
對於 Azure Synapse,你可以在伺服器層級設定 TDE 保護器,所有與該伺服器相關的資料庫都會繼承它。
註
本文介紹了託管在 邏輯伺服器上的獨立專用 SQL 池(前稱 SQL DW)。 關於 Synapse 工作空間中的專用 SQL 池,請參見 Azure Synapse Analytics 工作空間的加密。
TDE 的運作方式
TDE 透過使用對稱的資料庫加密金鑰(DEK)來加密資料庫頁面。 DEK 儲存在資料庫開機記錄中,TDE 保護器負責保護 DEK。 保護器是一個服務管理的憑證。
你在邏輯伺服器上設定 TDE 保護器,該伺服器上的專用 SQL 池會繼承它。 每頁在讀入記憶體時會解密,並在寫入儲存前加密。
服務管理 TDE
在 Azure 中,TDE 的預設設定為 DEK 會受到內建伺服器憑證保護。 每個伺服器的內建伺服器憑證都是唯一的,使用的加密演算法是密碼區塊鏈結 (CBC) 模式下的 AES 256。 如果資料庫具有異地複寫關聯性,則主要和異地次要資料庫都會受到主要資料庫的父伺服器金鑰保護。 如果兩個資料庫連線到相同的伺服器,則也會共用同一個內建憑證。 Microsoft每年自動輪替這些憑證一次,以符合內部安全策略,且根密鑰受到內部秘密存放區Microsoft保護。 客戶可以在 Microsoft 信任中心提供的獨立第三方稽核報告中,確認 SQL Database 和 SQL 受控執行個體是否符合內部安全性原則規範。 Microsoft 也會視異地複寫和還原的需要順暢地移動和管理金鑰。
客戶自控 TDE
在客戶管理的 TDE 中,保護器是你在 Azure Key Vault 或 Azure Key Vault Managed HSM 中控制的非對稱金鑰。 你可以控制金鑰建立、存取權限、輪換、備份和刪除。 鑰匙不會離開鑰匙庫。
撤銷邏輯伺服器對金鑰的存取權會使加密的專用 SQL 池無法存取。 透過軟刪除、清除保護、監控及最低權限存取來保護金鑰儲存。
Azure Synapse 需要獲得客戶擁有的金鑰庫權限,才能解密並加密 DEK。 如果撤銷了伺服器對金鑰保存庫的權限,將無法存取資料庫,且所有資料都會加密。
如需需求與建議,請參閱 Azure Synapse Analytics 的 Customer-managed TDE。
移動一個受 透明資料加密 保護的資料庫
在 Azure 中執行作業時,您無須解密資料庫。 目標資料庫會透明地自動繼承來源資料庫或主要資料庫的 TDE 設定。 其中包含的作業涉及:
- 異地還原
- 自助式時間點還原
- 還原已刪除的資料庫
- 主動異地複寫
- 建立資料庫複本
當您將受 TDE 保護的資料庫匯出至 BACPAC 檔案時,資料庫的匯出內容不會加密。 如果您匯入至現有的空白資料庫,則加密取決於該資料庫是否啟用 TDE。
管理透明資料加密
Azure 入口網站
要啟用或停用 TDE,請在 Azure 入口網站開啟專用的 SQL 池,選擇透明資料加密,並儲存所需的狀態。 要設定客戶管理的保護器,請在邏輯伺服器上開啟透明資料加密,並從 Azure Key Vault 選擇金鑰。 在您的使用者資料庫下方,找到 TDE 設定。 依預設,會使用伺服器層級加密金鑰。 系統會自動為包含資料庫的伺服器產生 TDE 憑證。
PowerShell
使用 PowerShell 管理 TDE。
Important
Az 模組會取代 AzureRM。 所有未來的開發都是針對 Az.Sql 模組。
若要透過 PowerShell 設定 TDE,您必須以 Azure 擁有者、參與者或 SQL 安全性管理員的身分連線。
請使用以下 Az.Sql Cmdlet:
| 指令程式 | Purpose |
|---|---|
| Set-AzSqlDatabaseTransparentDataEncryption | 啟用或停用專用 SQL 池的 TDE。 |
| Get-AzSqlDatabaseTransparentDataEncryption | 取得目前的TDE狀態。 |
| Add-AzSqlServerKeyVaultKey | 新增金鑰到邏輯伺服器。 |
| Get-AzSqlServerKeyVaultKey | 列出邏輯伺服器可用的金鑰。 |
| Set-AzSqlServerTransparentDataEncryptionProtector | 設定伺服器的 TDE 保護器。 |
| Get-AzSqlServerTransparentDataEncryptionProtector | 取得目前的 TDE 保護器。 |
| Remove-AzSqlServerKeyVaultKey | 從邏輯伺服器移除金鑰。 |
Transact-SQL
使用 Transact-SQL 管理 TDE。
使用系統管理員或 dbmanager 角色成員的登入,連線至 master 資料庫。
| 命令 | Description |
|---|---|
| ALTER 資料庫 (Azure SQL Database) |
SET ENCRYPTION ON/OFF 加密或解密資料庫 |
| sys.dm_database_encryption_keys | 傳回資料庫及其相關資料庫加密金鑰的加密狀態相關資訊 |
| sys.dm_pdw_nodes_database_encryption_keys | 傳回每個 Azure Synapse 節點及其相關聯資料庫加密金鑰的加密狀態相關資訊 |
你無法使用 Transact-SQL 將 TDE 保護器切換為 Azure Key Vault 的金鑰。 請使用 PowerShell 或 Azure 入口網站。
REST API
以下 SQL 管理資源適用於邏輯伺服器及專用 SQL 池。
若要透過 REST API 設定 TDE,您必須以 Azure 擁有者、參與者或 SQL 安全性管理員的身分連線。
請使用以下一組適用於 Azure Synapse Analytics 獨立專用 SQL 集區的指令:
| 命令 | Description |
|---|---|
| 建立或更新伺服器 | 將 Microsoft Entra ID (先前稱為 Azure Active Directory) 的身分識別新增至伺服器。 (用來授與 Azure Key Vault 的存取權) |
| 建立或更新伺服器金鑰 | 將 Azure Key Vault 金鑰新增至伺服器。 |
| 刪除伺服器金鑰 | 從伺服器移除 Azure Key Vault 金鑰。 |
| 取得伺服器金鑰 | 從伺服器取得特定的 Azure Key Vault 金鑰。 |
| 依伺服器列出伺服器金鑰 | 取得伺服器的 Azure Key Vault 金鑰。 |
| 建立或更新加密保護裝置 | 設定伺服器的 TDE 保護措施。 |
| 取得加密保護裝置 | 取得伺服器的 TDE 保護裝置。 |
| 依伺服器列出加密保護裝置 | 取得伺服器的 TDE 保護裝置。 |
| 建立或更新透明資料加密組態 | 啟用或停用資料庫的 TDE。 |
| 取得透明資料加密組態 | 取得資料庫的 TDE 組態。 |
| 列出透明資料加密組態結果 | 取得資料庫的加密結果。 |