僅適用於:Azure Synapse Analytics 專用 SQL 集區 (原為 SQL DW)
Tip
Microsoft Fabric Data Warehouse 是一個企業規模的關聯式倉庫,建立在資料湖基礎上,具備未來準備架構、內建 AI 及新功能。 如果你是資料倉儲新手,建議先從Fabric Data Warehouse開始。 現有的 專用 SQL 工作負載可升級至 Fabric,以取得資料科學、即時分析與報告等多項新功能。
具有客戶自控金鑰 (CMK) 的 透明資料加密 (CMK) 會啟用攜帶自己的金鑰 (BYOK) 情境以進行靜態資料保護,並讓組織可以實作金鑰和資料管理的職責區分。 使用客戶管理的 TDE,您可以負責並完全掌控金鑰生命週期管理(金鑰建立、上傳、輪替、刪除)、金鑰使用權限,以及金鑰操作的稽核。
在此情境中,透明資料加密(TDE)保護器是客戶管理的金鑰,用來保護資料庫加密金鑰(DEK)。 你可以將 TDE 保護器存放在 Azure Key Vault 或 Azure Key Vault Managed HSM 中,這兩者是設計為高可用性與可擴展性的雲端金鑰管理服務。 這兩項服務都支援由 FIPS 140-2 驗證硬體保護的加密金鑰:Azure Key Vault 支援 FIPS 140-2 第二級,而 Azure Key Vault Managed HSM 則支援 FIPS 140-2 第三級。 這兩個服務也都支援非對稱與對稱金鑰類型,且所支援的演算法與使用方式取決於 TDE 部署模型。 你可以在服務中產生金鑰、匯入,或 安全地從本地的 HSM 轉移金鑰。 直接存取金鑰受到限制,因此授權服務執行密碼學操作時不會暴露金鑰資料。
註
本文介紹獨立專用 SQL 池(前稱 SQL DW)。
- 對於 Azure Synapse Analytics 專用的 SQL 池(前稱 SQL DW),請在伺服器層設定 TDE 保護器。 所有與該伺服器相關的加密資料庫都會繼承 TDE 保護器。
- 在 Synapse 工作區中,使用客戶管理的金鑰在工作區層級設定,將專用 SQL 池和無伺服器 SQL 池的資料加密。 如需 Synapse 工作區內專用 SQL 集區透明資料加密的詳細資訊,請參閱 Azure Synapse Analytics 加密。
客戶管理金鑰 (CMK) 和自備金鑰 (BYOK)
在本文中,客戶管理密鑰(CMK)和「攜帶您自己的密鑰」一詞會交替使用,但代表一些差異。
客戶管理金鑰(CMK) -您管理金鑰生命週期,包括金鑰的建立、輪替與刪除。 將金鑰儲存在 Azure Key Vault 或 Azure Managed HSM,並用它來加密資料庫加密金鑰(DEK)。
自帶金鑰(BYOK)-您可以安全地將自己的金鑰從本地硬體安全模組(HSM)導入至 Azure Key Vault。 這類匯入的金鑰可做為 Azure Key Vault 中的任何其他金鑰使用,包括作為客戶管理的金鑰來加密 DEK。 如需詳細資訊,請參閱 將受 HSM 保護的金鑰匯入受控 HSM (BYOK)。
由客戶管理的 TDE 的優點
客戶管理的TDE提供以下好處:
對 TDE 保護器的使用和管理進行完整和細緻的控制。
TDE 保護器使用方式的透明度。
在組織內金鑰和數據管理中實作職責分離的能力。
Azure Key Vault 系統管理員可以撤銷密鑰訪問許可權,讓加密的資料庫無法存取。
在 Azure Key Vault 中集中管理金鑰。
更信任您的終端客戶,因為 Azure Key Vault 的設計目的是讓Microsoft看不到或擷取加密密鑰。
Important
對於正在使用服務管理 TDE,且想要開始使用客戶管理 TDE 的人員,資料會在切換的過程中保持加密,不會有停機時間,或資料庫檔案重新加密的狀況發生。 從服務管理金鑰切換至客戶管理金鑰金鑰時,只需要重新加密 DEK 即可,而這是快速的線上作業。
在 Azure Key Vault 中設定客戶管理之 TDE 的權限
選取您想要使用的 Azure Key Vault 類型。
若要讓 Azure 中的 SQL 邏輯伺服器使用儲存在 Azure Key Vault 中的 TDE 保護器來進行 DEK 加密,金鑰保存庫系統管理員必須使用其唯一Microsoft Entra 身分識別,授予伺服器下列存取權: 伺服器身分識別可以是系統指派的受控識別,或指派給伺服器的使用者指派受控識別。 有兩種存取模型可授與伺服器金鑰保存庫的存取權:
Azure 角色型存取控制 (RBAC) - 使用 Azure RBAC 授予使用者、群組或應用程式金鑰保存庫的存取權。 建議使用此方法,因為它兼具彈性和細微性。 伺服器身分需要 金鑰保存庫 Crypto Service Encryption User 角色,才能使用該金鑰進行加密與解密操作。
保存庫存取原則 - 使用金鑰保存庫存取原則,將金鑰保存庫的存取權授與伺服器。 此方法較簡單直接,但較不具彈性。 伺服器身分識別需要在金鑰保存庫上具備以下權限:
- get - 用於擷取 Azure Key Vault 中金鑰的公用部分和屬性
- wrapKey - 能夠保護 (加密) DEK
- unwrapKey - 能夠解除包裝並解密 DEK
在金鑰保存庫 [存取設定] Azure 入口網站 功能表,您可以選取 [Azure 角色型存取控制] 或 [保存庫存取原則]。 關於如何為 TDE 設定 Azure Key Vault 存取配置的逐步說明,請參見「使用 Azure Key Vault 設定 SQL Server TDE 可擴展密鑰管理」。 如需存取模型詳細資訊,請參閱 Azure Key Vault 安全性。
金鑰保存庫系統管理員也可以啟用金鑰保存庫稽核事件的記錄,以便稍後進行稽核。
當你設定伺服器使用 Azure Key Vault 的 TDE 保護器時,伺服器會將每個啟用 TDE 的資料庫的 DEK 傳送到金鑰庫進行加密。 金鑰庫會回傳加密的 DEK,伺服器會將其儲存在使用者資料庫中。
在有需要時,伺服器會將受保護的 DEK 傳送至金鑰保存庫以進行解密。
如果啟用日誌,稽核人員可以使用 Azure 監視器 來檢視金鑰保存庫的 AuditEvent 日誌。
註
任何權限變更對金鑰保存庫生效,可能要等大約 10 分鐘。 這次包括撤銷 AKV 中對 TDE 保護器的存取權限,且使用者可能仍具有存取權限。
在 Azure Key Vault 中設定客戶管理的 TDE 的需求
啟用 Azure Key Vault 上的軟刪除與清除保護功能。 此配置有助於防止意外或惡意的金鑰庫或金鑰刪除,避免資料庫進入 不可存取 狀態。 當你在現有伺服器上設定 TDE 保護器或建立伺服器時,Azure SQL 會驗證你使用的金鑰庫是否開啟了軟刪除和清除保護。 如果未在金鑰保存庫上啟用虛刪除和清除保護,TDE 保護裝置安裝作業會失敗並發生錯誤。 此時,於金鑰保存庫啟用軟刪除與清除保護,然後執行 TDE 保護器的設定。
搭配 Azure Key Vault 使用防火牆時,除非您使用 Azure Key Vault 的私人端點,否則您必須啟用 [允許受信任的Microsoft服務略過防火牆] 選項。 如需詳細資訊,請參閱設定 Azure Key Vault 防火牆和虛擬網路。
配置 TDE 保護器的關鍵要求
使用客戶管理金鑰的 透明資料加密 會使用外部金鑰,稱為 TDE 保護器,儲存在 Azure Key Vault 中以保護資料庫加密金鑰(DEK)。
適用以下要求。
支援的金鑰類型與大小
TDE 保護器可以由儲存在 Azure Key Vault 中的非對稱金鑰支援。 支援的金鑰大小為 2,048 位元與 3,072 位元。
關鍵狀態與有效性要求
- 如果你指定了金鑰啟用日期,請設定為過去的日期和時間。
- 如果你指定了金鑰的到期日,請設定為未來的日期和時間。
- 金鑰必須處於「已啟用」狀態。
主要進口需求
如果您將現有金鑰匯入 Azure Key Vault,請以以下支援格式之一提供該金鑰:
.pfx.byok.backup
在 Azure Key Vault 中設定客戶管理的 TDE 的建議
若要維持高可用性並避免節流問題,請遵循每個訂用帳戶的下列指導方針:
為確保最佳效能與可靠性,建議使用專用的 Azure Key Vault 來管理 Azure SQL。 不要把這個金鑰庫分享給其他服務。 若金鑰庫因共用使用或過度金鑰操作而負載過重,可能會對資料庫效能產生負面影響,尤其是在加密金鑰存取時。 Azure 金鑰保存庫會強制執行 節流限制。 當超過這些限制時,作業可能會延遲或失敗。 此風險在伺服器故障轉移期間最高,該故障觸發伺服器上每個資料庫的金鑰操作。
欲了解更多關於限速行為的資訊,請參閱 Azure Key Vault 限速指引。
你可以與單一 Azure Key Vault 關聯的超大規模資料庫數量,取決於頁面伺服器的數量。 每一個頁面伺服器都會連結至邏輯資料檔。 要查詢頁面伺服器數量,請執行以下查詢。
-- # of page servers (primary copies) for this database SELECT COUNT(*) AS page_server_count FROM sys.database_files WHERE type_desc = 'ROWS';不要將超過 500 台頁面伺服器與單一 Azure Key Vault 關聯。 隨著資料庫的成長,頁面伺服器的數目會自動增加,因此定期監視資料庫大小非常重要。 如果頁面伺服器數量超過 500 台,請為每個超大規模資料庫使用專用的 Azure Key Vault,且不要與其他 Azure SQL 資源共用該 Key Vault。
監視 和設定 Azure 金鑰保存庫 警示。 欲了解更多監控與警示資訊,請參閱「監控 Azure Key Vault」及「設定 Azure Key Vault 警示」。
在金鑰保存庫上設定資源鎖定,藉此控制可刪除這項重要資源的人員,並防止意外或未經授權的刪除發生。 想了解更多關於 資源鎖的資訊。
啟用所有加密金鑰的稽核和報告:Azure Key Vault 提供可輕鬆插入其他安全性資訊和事件管理工具的記錄。 例如,Operations Management Suite Log Analytics 即是已整合的服務之一。
使用 Azure 區域中的金鑰保存庫,可將內容復寫至配對區域,以取得最大可用性。 如需詳細資訊,請參閱 使用 Azure Key Vault 和 Azure Key Vault 可用性和備援的最佳作法。
關於設定 TDE 保護器的建議
將 TDE 保護器的金鑰副本置於安全位置,或將其委任給第三方託管服務。
如果你在金鑰庫中產生金鑰,請在第一次在 Azure Key Vault 使用金鑰前先建立金鑰備份。 你只能將備份還原到 Azure Key Vault。 欲了解更多,請參閱 Backup-AzKeyVaultKey 指令。 Azure Managed HSM 支援建立 HSM 完整內容的完整備份,包括所有金鑰、版本、屬性、標籤及角色指派。 如需詳細資訊,請參閱 完整備份和還原和選擇性密鑰還原。
每當你對金鑰做任何變更(例如金鑰屬性、標籤、ACL)時,就建立新的備份。
在輪換金鑰時,將舊版本的金鑰保留在金鑰庫或受管理的 HSM 中,這樣你才能還原較舊的資料庫備份。 當資料庫的 TDE 保護器更換時,舊的資料庫 備份不會更新 以使用最新的 TDE 保護器。 在還原時,每個備份都必須使用在建立時加密的 TDE 保護裝置。 要旋轉金鑰,請依照文章《 旋轉透明資料加密(TDE)保護器》中的指示操作。
即使切換到服務管理金鑰,也要保留所有先前使用的金鑰在 Azure Key Vault 裡。 這可確保能夠使用儲存在 Azure Key Vault 中的 TDE 保護器來還原資料庫備份。 使用 Azure Key Vault 建立的 TDE 保護器必須持續保留,直到所有其餘已儲存的備份皆已使用服務管理的金鑰建立。 使用 Backup-AzKeyVaultKey 製作可恢復的這些金鑰備份副本。
若要在安全性事件期間移除可能遭到入侵的金鑰,而不會有資料遺失的風險,請遵循使用 PowerShell 移除透明資料加密 (TDE) 保護程式一文中的步驟。 刪除或停用被入侵的金鑰前,務必更換新的 TDE 保護器,並確認所有資料庫都在使用新金鑰。 刪除或停用金鑰且未先輪換,會使所有加密資料庫無法存取,且不會使先前備份並還原到其他保險庫的金鑰副本失效。
TDE 保護裝置旋轉
當您輪替 TDE 保護器時,就是在替換保護資料庫加密金鑰 (DEK) 的金鑰。 金鑰輪替是線上操作,只需幾秒鐘。 此操作僅解密並重新加密資料庫的加密金鑰,而非整個資料庫。
你可以透過切換配置,使用存放在 Azure Key Vault 中的新金鑰來輪換 TDE 保護器。 根據所提供的內容及支援的設定,此金鑰可能為:
- 切換至同一金鑰的新版本
- 切換到不同按鍵
TDE 保護器的輪替可以手動執行,或使用自動輪替功能執行。
設定伺服器的 TDE 保護器時,您可以啟用 TDE 保護器的自動輪替。 自動旋轉預設為停用。 啟用後,伺服器會持續檢查金鑰庫中用於 TDE 保護器的金鑰新版本。 如果伺服器偵測到金鑰有新版本,會在 24 小時內自動將伺服器或資料庫的 TDE 保護器切換到最新的金鑰版本。
註
當你用 CMK 手動或自動旋轉鍵來設定 TDE 時,你總是使用系統支援的最新版本鍵。 此設定不允許使用舊版或較低版本的金鑰。 一律使用最新版本金鑰符合 Azure SQL 安全性原則,該原則不允許可能遭入侵的舊版金鑰。
無法存取的 TDE 保護裝置
當你設定 TDE 使用客戶管理的金鑰時,資料庫需要持續存取 TDE 保護器才能保持在線。 如果伺服器失去對 Azure Key Vault 中客戶管理的 TDE 保護器的存取權,資料庫會在 10 分鐘內開始拒絕所有連線,顯示錯誤訊息,並將狀態改為無法存取。 在處於無法存取狀態的資料庫上,唯一允許的動作是將其刪除。
無法存取的狀態
如果資料庫因間歇性網路中斷 (例如 5XX 錯誤) 而無法存取,則不需要採取任何動作,因為資料庫會自動重新上線。 為了減少存取 Azure Key Vault 中 TDE 保護器時網路錯誤或中斷的影響,服務會在嘗試將資料庫移至無法存取狀態前,先設置 24 小時緩衝區。 如果在達到無法存取的狀態之前發生故障轉移,資料庫就會因為遺失加密快取而變成無法使用。
如果伺服器因任何 Azure Key Vault 錯誤(例如 4XX 錯誤)而失去對客戶管理的 Azure Key Vault TDE 保護器的存取權,資料庫會在 30 分鐘後轉為無法存取狀態。
Azure Key Vault 錯誤後還原資料庫存取權限
還原金鑰的存取權之後,讓資料庫重新上線需要額外的時間和步驟,這可能會根據金鑰無法使用的持續時間和資料庫內資料的大小而有所不同。
如果金鑰存取在 30 分鐘內還原,則資料庫會在後續一小時內自動修復。 不過,如果金鑰存取在超過 30 分鐘後還原,則無法自動修復資料庫。 在這種情況下,還原資料庫牽涉到透過 Azure 入口網站進行額外的程式,視資料庫的大小而定,可能很耗時。
資料庫重新上線之後,先前設定的伺服器層級設定,包括容錯移轉群組設定、標籤,以及資料庫層級設定,例如彈性集區設定、讀取調整、自動暫停、時間點還原歷程記錄、長期保留原則等,都會遺失。 因此,建議客戶建立通知系統,以在發生加密密鑰存取權限遺失後30分鐘內進行偵測。 在 30 分鐘的時間範圍過期之後,建議您驗證已復原資料庫上的所有伺服器和資料庫層級設定。
以下視圖說明在入口網站上將無法存取的資料庫重新上線,所需的額外步驟。
意外 TDE 保護裝置存取權撤銷
這可能會因具有足夠權限可存取金鑰保存庫或受控 HSM 的人員,透過以下方式,意外停用伺服器對金鑰的存取權而發生:
從伺服器撤銷金鑰保存庫或的受控 HSM 的 get、wrapKey、unwrapKey 權限
刪除金鑰
刪除金鑰保存庫或受控 HSM
變更金鑰保存庫或受管理 HSM 防火牆規則
刪除 Microsoft Entra ID 中伺服器的受控身分識別
深入了解導致資料庫變得無法存取的常見原因。
SQL 受管理執行個體 與 Azure Key Vault 之間的連線已遭封鎖
SQL 受控實例與密鑰保存庫或受控 HSM 之間的網路連線區塊大多發生在金鑰保存庫或受控 HSM 資源存在,但無法從受控實例聯機到其端點時發生。 所有可以連線到金鑰保存庫或受控 HSM 端點,但連線遭到拒絕、遺失許可權等的案例,都會導致資料庫將其狀態變更為 [無法存取]。
與 Azure Key Vault 缺乏網路連線的最常見原因包括:
Azure Key Vault 是透過私人端點公開,且 Azure Key Vault 服務的私人 IP 位址不受與受控執行個體子網路相關聯的網路安全性群組 (NSG) 輸出規則允許 。
不正確的 DNS 解析,例如金鑰保存庫或受控 HSM FQDN 未解析或解析為不正確的 IP 位址時。
從 SQL 受控執行個體到裝載 TDE 保護器的 Azure Key Vault測試連線。
- 端點是您的保管庫 FQDN,例如 <vault_name>.vault.azure.net (沒有 https://)。
- 要測試的連接埠為 443。
- RemoteAddress 的結果應該存在,而且是正確的 IP 位址
- TCP 測試的結果應該是 TcpTestSucceeded: True。
如果測試傳回 TcpTestSucceeded: False,請檢閱網路設定:
檢查已解析的 IP 位址,確認是有效位址。 遺漏值表示發生 DNS 解析問題。
確認受控實例上的網路安全組具有涵蓋埠 443 上已解析 IP 位址的 輸出 規則,特別是當解析的位址屬於密鑰保存庫或受控 HSM 私人端點時。
檢查路由表、虛擬裝置及其設定等其他網路設定。
監控客戶管理的 TDE
若要監視資料庫狀態及啟用 TDE 保護裝置存取的遺失警示,請設定 Azure 的下列功能:
Azure 資源健康狀態。 無法存取且已失去 TDE 保護器存取權的資料庫,會在首次連線至該資料庫遭拒後顯示為「無法存取」。
活動記錄當無法存取客戶管理金鑰保存庫中的 TDE 保護裝置時,系統會將這些項目新增至活動記錄中。 透過為這些事件建立警示,您可以盡快恢復存取權。
動作群組可以根據你的偏好發送通知和警示,例如電子郵件、簡訊、推播、語音、邏輯應用程式、Webhook、ITSM 或自動化執行手冊。
使用客戶管理的 TDE 進行資料庫備份與還原
一旦資料庫用 Azure Key Vault 的金鑰以 TDE 加密,任何新產生的備份也會用相同的 TDE 保護器加密。 TDE 保護裝置有所變更時,資料庫的舊備份不會更新為使用最新 TDE 保護裝置。
若要從 Azure Key Vault 還原以 TDE 保護器加密的備份,請確定目標伺服器可使用金鑰內容。 因此,將所有舊版 TDE 保護器保存在金鑰保存庫或受控 HSM 中,以便還原資料庫備份。
Important
伺服器隨時不能設定一個以上的 TDE 保護裝置。 在 Azure 入口網站窗格中,標示為將金鑰設定為預設 TDE 保護器 的金鑰便是 TDE 保護器。 不過,多個密鑰可以連結至伺服器,而不將它們標示為 TDE 保護裝置。 這些金鑰不用於保護 DEK,但如果備份檔案用帶有對應指紋的金鑰加密,則可在還原時使用。
如果還原備份時可能需要的金鑰不再可供目標伺服器使用,則會傳回下列錯誤訊息:「目標伺服器 <Servername> 無法存取在 <Timestamp #1> 與 <Timestamp #2> 之間建立的所有 AKV URI。 請先還原所有的 AKV URI,再重試作業。」
若要避免此情形,請針對目標伺服器執行 Get-AzSqlServerKeyVaultKey Cmdlet,或針對目標受控執行個體執行 Get-AzSqlInstanceKeyVaultKey,以傳回可用的金鑰清單,並找出遺失的金鑰。 為確保所有備份均可還原,請確定還原的目標伺服器有權存取所有所需金鑰。 這些金鑰不必標記為 TDE 保護裝置。
若要深入了解 Azure Synapse Analytics 中專用 SQL 集區的備份復原,請參閱復原專用的 SQL 集區。
記錄檔的另一項考量:備份的記錄檔仍會以原始 TDE 保護裝置加密,即使其已輪替且資料庫目前使用新的 TDE 保護裝置,仍是如此。 還原時,必須要有這兩個金鑰才能還原資料庫。 如果日誌檔案使用的是儲存在 Azure Key Vault 中的 TDE 保護器,即使資料庫在此期間已改為使用服務管理的 TDE,還原時仍需使用此金鑰。
客戶管理 TDE 的高可用性
透過使用 Azure Key Vault 多層冗餘,使用客戶管理金鑰的 TDE 能受益於 Azure Key Vault 的可用性與韌性。 他們完全可以依賴 Azure Key Vault 的備援機制。
Azure Key Vault 的多重冗餘層可確保即使個別服務元件故障,或 Azure 區域或可用性區域停擺時,仍可存取金鑰。 如需詳細資訊,請參閱 Azure Key Vault 可用性與備援。
Azure Key Vault 自動提供以下可用性與韌性元件,無需使用者介入: