共用方式為


使用資料庫層級客戶自控金鑰的 TDE 身分識別和金鑰管理

適用於:Azure SQL Database

注意

  • 資料庫層級 TDE CMK 適用於 Azure SQL 資料庫 (所有 SQL Database 版本)。 不適用於 Azure SQL 受控執行個體、SQL Server 內部部署、Azure VM 和 Azure Synapse Analytics (專用 SQL 集區 (先前稱為 SQL DW))。
  • 您可以套用相同的指南,排除同盟用戶端識別碼參數,在相同的租用戶中設定資料庫層級客戶自控金鑰。 如需資料庫層級客戶自控金鑰的詳細資訊,請參閱資料庫層級中使用客戶自控金鑰的透明資料加密 (TDE)

在本指南中,我們在資料庫層級會逐步建立、更新和擷取具有透明資料加密 (TDE) 的 Azure SQL Database 和客戶自控 (CMK) 金鑰,利用使用者指派的受控識別來存取 Azure Key Vault。 Azure Key Vault 位於與 Azure SQL 資料庫不同的 Microsoft Entra 租用戶中。 如需詳細資訊,請參閱使用透明資料加密的跨租用戶客戶自控金鑰

注意

Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。

必要條件

  • 本指南假設您有兩個 Microsoft Entra 租用戶。
    • 第一個包含 Azure SQL 資料庫資源、多租用戶 Microsoft Entra 應用程式和使用者指派的受控識別。
    • 第二個租用戶會裝載 Azure Key Vault。
  • 如需設定 Microsoft Entra 應用程式和 Azure Key Vault 所需的跨租用戶 CMK 和 RBAC 權限的完整指示,請參閱下列其中一個指南:
  • Azure CLI 2.52.0 版或更高版本。
  • Az PowerShell 模組 10.3.0 版或更高版本。
  • 資料庫層級 CMK 所需的 RBAC 權限與伺服器層級 CMK 所需的權限相同。 具體來說,在伺服器層級使用 Azure Key Vault受控識別和適用於 TDE 的跨租用戶 CMK 時適用的相同 RBAC 權限也適用於資料庫層級。 如需金鑰管理和存取原則的詳細資訊,請參閱金鑰管理

第一個租用戶上的必要資源

為因應本教學課程的目的,我們假設第一個租用戶屬於獨立軟體廠商 (ISV),而第二個租用戶來自其用戶端。 如需此案例的詳細資訊,請參閱使用透明資料加密的跨租用戶客戶自控金鑰

在可以使用跨租用戶 CMK 針對 Azure SQL 資料庫設定 TDE 之前,我們需要具有多租用戶 Microsoft Entra 應用程式,此應用程式會以指派為應用程式的同盟身分識別認證來設定使用者指派的受控識別。 遵循必要條件中的其中一份指南。

  1. 在您想要建立 Azure SQL 資料庫的第一個租用戶上,建立並設定多租用戶 Microsoft Entra 應用程式

  2. 建立使用者指派的受控識別

  3. 將使用者指派的受控識別設定為多租用戶應用程式上的同盟身分識別認證

  4. 記錄應用程式名稱和應用程式識別碼。 這可在 Azure 入口網站>Microsoft Entra ID>企業應用程式中找到,並搜尋已建立的應用程式。

第二個租用戶上的必要資源

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被淘汰。 若要深入了解,請閱讀淘汰更新。 在此日期之後,對這些模組的支援僅限於對 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 淘汰的模組將繼續運作至 2025 年 3 月 30 日。

我們建議移轉至 Microsoft Graph PowerShell 以與 Microsoft Entra ID (以前稱為 Azure AD) 互動。 如需了解常見的移轉問題,請參閱移轉常見問題注意:MSOnline 1.0.x 版可能會在 2024 年 6 月 30 日之後發生中斷。

  1. 在 Azure Key Vault 所在的第二個租用戶上,使用來自第一個租用戶已註冊應用程式的應用程式識別碼,建立服務主體 (應用程式)。 以下是如何註冊多租用戶應用程式的一些範例。 分別以 Microsoft Entra ID 的 [租用戶 ID] 和多租用戶應用程式的 [應用程式 ID] 取代 <TenantID><ApplicationID>

    • PowerShell:

      Connect-AzureAD -TenantID <TenantID>
      New-AzADServicePrincipal  -ApplicationId <ApplicationID>
      
    • Azure CLI

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. 前往 Azure 入口網站>Microsoft Entra ID>企業應用程式,並搜尋建立的應用程式。

  3. 建立 Azure Key Vault (如果您尚未建立),然後建立金鑰

  4. 建立或設定存取原則

    1. 在建立存取原則時,選取 [金鑰權限] 下的 [取得]、[包裝金鑰]、[解除包裝金鑰] 權限。
    2. 在建立存取原則時,選取 [主體] 選項第一個步驟中建立的多租用戶應用程式。

    Azure 入口網站中金鑰保存庫的存取原則功能表螢幕擷取畫面。

  5. 建立存取原則和金鑰之後,請從金鑰保存庫擷取金鑰,並記錄金鑰識別元

使用資料庫層級客戶自控金鑰建立新的 Azure SQL Database

以下是在具有使用者指派受控識別的 Azure SQL Database 上建立資料庫,以及如何在資料庫層級設定跨租用戶客戶自控金鑰的範例。 需要使用者指派的自控識別,於資料庫建立階段針對透明資料加密設定客戶自控金鑰。

  1. 瀏覽至 Azure 入口網站中的 [選取 SQL 部署] 選項頁面。

  2. 如果您尚未登入 Azure 入口網站,請在出現提示時登入。

  3. SQL Database下,將 [資源類型] 設定為 [單一資料庫],然後選取 [建立]。

  4. 在 [建立 SQL Database] 表單的 [基本資料] 索引標籤上,在 [專案詳細資料] 下,為資料庫選取想要的 Azure [訂用帳戶]、[資源群組] 和 [伺服器]。 然後,針對 [資料庫名稱],使用唯一的名稱。 如果您尚未為 Azure SQL 資料庫建立邏輯伺服器,請參閱建立伺服器並使用跨租用戶客戶自控金鑰 (CMK) 設定 TDE,以取得參考。

  5. 當您進入 [安全性] 索引標籤時,請選取 [設定透明資料加密]

    建立 Azure SQL 資料庫時,Azure 入口網站和 [安全性] 功能表的螢幕擷取畫面。

  6. 在 [透明資料加密] 功能表上,選取 [資料庫層級客戶自控金鑰 (CMK)]

    Azure 入口網站 [透明資料加密] 功能表的螢幕擷取畫面。

  7. 針對 [使用者指派的受控識別],選取 [設定] 以啟用資料庫身分識別,並在 [身分識別] 功能表中未列出所需的身分識別時,將使用者指派的受控識別 [新增] 至資源。 接著選取套用

    Azure 入口網站 [身分識別] 功能表的螢幕擷取畫面。

    注意

    如果您要設定適用於 TDE 的跨租用戶 CMK,您可以在這裡設定同盟用戶端身分識別

  8. 在 [透明資料加密] 功能表上,選取 [變更金鑰]。 針對要用於 TDE 的客戶自控金鑰,選取所需的訂閱金鑰保存庫金鑰版本。 選取 [選取] 按鈕。 在您選取金鑰之後,您也可以使用 [透明資料加密] 功能表中的 [Azure Key vault URI (物件識別碼)],視需要新增其他資料庫金鑰。

    您也可以使用 [透明資料加密] 功能表中的[自動輪替金鑰] 核取方塊,在資料庫層級啟用 [自動金鑰輪替]

    Azure 入口網站中參考其他金鑰的 [透明資料加密] 功能表的螢幕擷取畫面。

  9. 選取 [套用] 繼續建立資料庫。

  10. 選取頁面底部的 [檢閱 + 建立]

  11. 檢閱 [檢閱 + 建立] 頁面之後,選取 [建立]。

注意

如果使用者指派的受控識別未在金鑰保存庫上啟用正確的權限,則資料庫建立將會失敗。 使用者指派的受控識別需要具有金鑰保存庫的 Get、wrapKey 和 unwrapKey 權限。 如需詳細資訊,請參閱利用客戶自控金鑰支援透明資料加密的受控識別

使用資料庫層級客戶自控金鑰更新現有 Azure SQL Database

以下是在具有使用者指派受控識別的 Azure SQL Database 上更新現有的資料庫,以及如何在資料庫層級設定跨租用戶客戶自控金鑰的範例。 需要使用者指派的自控識別,於資料庫建立階段針對透明資料加密設定客戶自控金鑰。

  1. Azure 入口網站中,瀏覽至要使用資料庫層級客戶自控金鑰更新的 SQL Database 資源。

  2. 在 [安全性] 下,選取 [身分識別]。 為此資料庫新增使用者指派的受控識別,然後選取 [儲存]

  3. 現在,前往資料庫 [安全性] 下的 [資料加密] 功能表。 選取 [資料庫層級客戶自控金鑰] (CMK)。 資料庫的資料庫身分識別應該已 [啟用],因為您在上一個步驟中已設定身分識別。

  4. 選取 [變更金鑰]。 針對要用於 TDE 的客戶自控金鑰,選取所需的訂閱金鑰保存庫金鑰版本。 選取 [選取] 按鈕。 在您選取金鑰之後,您也可以使用 [資料加密] 功能表中的 [Azure Key vault URI (物件識別碼)],視需要新增其他資料庫金鑰。

    如果您想要在資料庫層級上啟用 [自動金鑰輪替],請選取 [自動輪替金鑰] 核取方塊。

    更新現有資料庫時,Azure 入口網站 [透明資料加密] 功能表的螢幕擷取畫面。

  5. 選取儲存

在 Azure SQL Database 上檢視資料庫層級客戶自控的金鑰設定

以下是擷取資料庫的資料庫層級客戶自控金鑰的範例。 ARM 資源 Microsoft.Sql/servers/databases 預設只會顯示資料庫上設定的 TDE 保護裝置和受控識別。 若要展開金鑰的完整清單,請使用參數 -ExpandKeyList。 此外,例如篩選準則和 -KeysFilter "current" 時間點的值 (例如 2023-01-01) 可用來擷取目前金鑰和過去在特定時間點使用的金鑰。 這些篩選準則僅支援個別資料庫查詢,而不支援伺服器層級查詢。

若要檢視 Azure 入口網站中的資料庫層級客戶自控金鑰,請前往 SQL Database 資源的 [資料加密] 功能表。

列出邏輯伺服器中的所有金鑰

若要擷取所有金鑰的清單 (而不只是伺服器下每個資料庫所使用的主要保護裝置),還必須使用金鑰篩選個別查詢。 以下是 PowerShell 查詢的範例,可列出邏輯伺服器下的每個金鑰。

使用 Get-AzSqlDatabase Cmdlet。

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

在 Azure SQL Database 上重新驗證資料庫層級客戶自控的金鑰

如果無法存取的 TDE 保護裝置,如使用 CMK 的透明資料加密 (TDE) 中所述,一旦校正金鑰存取,即可使用重新驗證金鑰作業來存取資料庫。 如需範例,請參閱下列指令或命令。

使用 [Azure 入口網站],尋找您的 SQL Database 資源。 選取 SQL Database 資源之後,請前往 [安全性設定] 下 [資料加密] 功能表的 [透明資料加密] 索引標籤。 如果資料庫無法存取 Azure Key Vault,則會出現 [重新驗證金鑰] 按鈕,而且您可以選擇選取 [重試現有金鑰]來重新驗證現有的金鑰,或選取 [選取備份金鑰] 來重新驗證另一個金鑰。

在 Azure SQL Database 上還原資料庫層級客戶自控的金鑰

如果伺服器是使用下列命令設定服務管理的金鑰,則使用資料庫層級 CMK 設定的資料庫可以還原為伺服器層級加密。

若要將資料庫層級客戶自控金鑰設定還原為 Azure 入口網站中的伺服器層級加密金鑰,請前往 SSQL Database 資源的 [資料加密] 功能表的 [透明資料加密] 索引標籤。 選取 [伺服器層級加密金鑰],然後選取 [儲存] 以儲存設定。

注意

若要使用個別資料庫的伺服器層級加密金鑰設定,Azure SQL 資料庫的邏輯伺服器必須設定為使用適用於 TDE 的服務管理金鑰

下一步

請查看下列有關各種資料庫層級 CMK 作業的文件: