Share via


為現有的儲存體帳戶設定跨租用戶的客戶自控金鑰

Azure 儲存體會加密待用儲存體帳戶中的所有資料。 根據預設,資料是以使用 Microsoft 管理的金鑰加密。 若要進一步控制加密金鑰,您可以管理自己的金鑰。 客戶自控金鑰必須儲存在 Azure Key Vault 或 Azure Key Vault 受控硬體安全模組 (HSM) 中。

本文說明如何運用現有儲存體帳戶的客戶自控金鑰來設定加密。 在跨租用戶案例中,儲存體帳戶位於 ISV 所管理的租用戶中,而用於加密該儲存體帳戶的金鑰則位於客戶所管理租用戶的金鑰保存庫中。

若要了解如何為新的儲存體帳戶設定客戶自控金鑰,請參閱為新的儲存體帳戶設定跨租用戶客戶自控金鑰

注意

Azure Key Vault 和 Azure Key Vault 受控 HSM 支援使用相同的 API 和管理介面,以進行客戶自控金鑰的設定。 Azure Key Vault 支援的任何動作也受 Azure Key Vault 受控 HSM 所支援。

關於跨租用戶的客戶自控金鑰

許多在 Azure 上建置軟體即服務 (SaaS ) 供應項目的服務提供者都想要為客戶提供用以管理自有加密金鑰的選項。 客戶自控金鑰可讓服務提供者使用服務提供者的客戶所管理的加密金鑰來加密客戶的資料,而且服務提供者無法存取。 在 Azure 中,服務提供者的客戶可以使用 Azure Key Vault,在自己的 Microsoft Entra 租用戶和訂用帳戶中管理其加密金鑰。

服務提供者所擁有的 Azure 平台服務和資源,以及位於服務提供者租用戶的 Azure 平台服務和資源,都需要從客戶的租用戶存取金鑰,才能執行加密/解密作業。

下圖顯示在跨租用戶 CMK 工作流程中,範圍涵蓋服務提供者與客戶的待用資料加密與同盟身分識別。

Screenshot showing a cross-tenant CMK with a federated identity.

在上述範例中,有兩個 Microsoft Entra 租用戶:獨立服務提供者的租用戶 (Tenant1),以及客戶的租用戶 (Tenant2)。 Tenant1 裝載 Azure 平台服務,而 Tenant2 裝載客戶的金鑰保存庫。

多租用戶應用程式註冊是由 Tenant1 中的服務提供者建立。 在此應用程式上建立同盟身分識別認證時,所使用的是使用者指派的受控識別。 然後,應用程式的名稱和應用程式識別碼會與客戶共用。

具有適當權限的使用者會在客戶租用戶 Tenant2 中安裝服務提供者的應用程式。 接著,使用者會將與已安裝應用程式存取權相關聯的服務主體授與客戶的金鑰保存庫。 客戶也會將加密金鑰或客戶自控金鑰儲存在金鑰保存庫中。 客戶會與服務提供者共用金鑰位置 (金鑰的 URL)。

服務提供者現在具有:

  • 安裝在客戶租用戶中的多租用戶應用程式的應用程式識別碼,其已獲得客戶自控金鑰的存取權。
  • 在多租用戶應用程式上設定為認證的受控識別。
  • 客戶金鑰保存庫中的金鑰位置。

使用這三個參數,服務提供者會在 Tenant1 中佈建 Azure 資源,其可使用 Tenant2 中的客戶自控金鑰進行加密。

請將上述端對端解決方案分成三個階段:

  1. 服務提供者設定身分識別。
  2. 客戶將服務提供者的多租用戶應用程式存取權授與 Azure Key Vault 中的加密金鑰。
  3. 服務提供者使用 CMK 來加密 Azure 資源中的資料。

階段 1 中的作業是大部分服務提供者應用程式的一次性設定。 階段 2 和 3 中的作業會針對每個客戶重複。

階段 1 - 服務提供者設定 Microsoft Entra 應用程式

步驟 描述 Azure RBAC 中的最低角色 Microsoft Entra RBAC 中的最小角色
1. 建立新的多租用戶 Microsoft Entra 應用程式註冊,或從現有的應用程式註冊開始。 請記下使用 Azure 入口網站Microsoft Graph APIAzure PowerShellAzure CLI 註冊的應用程式識別碼 (用戶端識別碼) 應用程式開發人員
2. 建立使用者指派的受控識別 (以作為同盟身分識別認證)。
Azure 入口網站 / Azure CLI / Azure PowerShell/ Azure Resource Manager 範本
受控身分識別參與者
3. 在應用程式上將使用者指派的受控識別設定為「同盟身分識別認證」,以便模擬應用程式的身分識別。
圖形 API參考/ Azure 入口網站/ Azure CLI/ Azure PowerShell
應用程式的擁有者
4. 與客戶共用應用程式名稱和應用程式識別碼,讓他們可以安裝和授權應用程式。

服務提供者的考量

  • 不建議使用 Azure Resource Manager (ARM) 範本來建立 Microsoft Entra 應用程式。
  • 相同的多租用戶應用程式可以用來存取任意數目之租用戶中的金鑰,例如 Tenant2Tenant3Tenant4 等等。 在每個租用戶中,會建立應用程式的獨立執行個體,該執行個體具有相同的應用程式識別碼,但不同的物件識別碼。 因此,此應用程式的每個執行個體都會獨立獲得授權。 請考慮如何使用此功能的應用程式物件將應用程式分割給所有客戶。
  • 在罕見的情況下,服務提供者可能會根據其客戶使用單一 Application 物件,但這需要大量維護成本,才能跨所有客戶大規模管理應用程式。
  • 在服務提供者租用戶中,無法自動進行發行者驗證

階段 2 - 客戶授權存取金鑰保存庫

步驟 描述 最低特殊權限的 Azure RBAC 角色 具有最低權限的 Microsoft Entra 角色
1.
  • 建議:將使用者送去登入您的應用程式。 如果使用者可以登入,則應用程式的服務主體存在於其租用戶中。
  • 使用 Microsoft GraphMicrosoft Graph PowerShellAzure PowerShellAzure CLI 來建立服務主體。
  • 建構管理員同意的 URL並授與全租用戶同意,以使用應用程式識別碼建立服務主體。
  • 具有安裝應用程式權限的使用者
    2. 建立 Azure Key Vault,以及作為客戶自控金鑰的金鑰。 使用者必須獲指派金鑰保存庫參與者角色,才能建立金鑰保存庫

    使用者必須獲指派金鑰保存庫密碼編譯人員角色,才能將金鑰新增至金鑰保存庫
    3. 指派金鑰保存庫密碼編譯服務加密使用者角色,以將同意的應用程式身分識別存取權授與 Azure 金鑰保存庫。 若要將 [金鑰保存庫密碼編譯服務加密使用者]角色指派給應用程式,您必須已獲指派使用者存取管理員角色。
    4. 將金鑰保存庫 URL 和金鑰名稱複製至 SaaS 供應項目的客戶自控金鑰設定中。

    注意

    若要使用 CMK 授權存取受控 HSM 以進行加密,請參閱此處的儲存體帳戶範例。 如需使用受控 HSM 管理金鑰的詳細資訊,請參閱使用 Azure CLI 管理受控 HSM

    服務提供者的客戶考量

    • 在客戶租用戶 Tenant2 中,管理員可以設定原則來封鎖非管理使用者安裝應用程式。 這些原則可防止非管理使用者建立服務主體。 如果已設定這類原則,則必須涉及具有建立服務主體權限的使用者。
    • 使用 Azure RBAC 或存取原則可以授權存取 Azure Key Vault。 授與金鑰保存庫的存取權時,請務必使用金鑰保存庫的作用中機制。
    • Microsoft Entra 應用程式註冊具有應用程式識別碼 (用戶端識別碼)。 在您的租用戶中安裝應用程式時,會建立服務主體。 服務主體會共用與應用程式註冊相同的應用程式識別碼,但會產生自己的物件識別碼。 當您授權應用程式能夠存取資源時,可能需要使用服務主體 NameObjectID 屬性。

    階段 3 - 服務提供者使用客戶自控金鑰來加密 Azure 資源中的資料

    在階段 1 和 2 完成之後,服務提供者可以使用客戶租用戶中的金鑰和金鑰保存庫,以及 ISV 租用戶中的 Azure 資源,在 Azure 資源上設定加密。 服務提供者可以使用該 Azure 資源支援的用戶端工具、ARM 範本或 REST API,設定跨租用戶客戶自控金鑰。

    設定跨租用戶的客戶自控金鑰

    本節說明如何設定跨租用戶的客戶自控金鑰 (CMK) 以及加密客戶資料。 您將了解如何使用 Tenant2 的金鑰保存庫中所儲存的 CMK,來加密 Tenant1 的資源中的客戶資料。 您可以使用 Azure 入口網站、Azure PowerShell 或 Azure CLI。

    登入 Azure 入口網站並遵循下列步驟。

    服務提供者設定身分識別

    下列步驟是由服務提供者在其租用戶 Tenant1 中執行。

    服務提供者建立新的多租用戶應用程式註冊

    您可以建立新的多租用戶 Microsoft Entra 應用程式註冊,或從現有的多租用戶應用程式註冊開始。 如果從現有的應用程式註冊開始,請記下應用程式的應用程式識別碼 (用戶端識別碼)。

    若要建立新的註冊:

    1. 在搜尋方塊中,搜尋 Microsoft Entra ID。 找出並選取 Microsoft Entra ID 延伸模組。

    2. 從左窗格中,選取 [管理] > [應用程式註冊]

    3. 選取 + 新增註冊

    4. 提供應用程式註冊的名稱,然後選取 [任何組織目錄中的帳戶 (任何 Microsoft Entra 目錄 – 多租用戶)]

    5. 選取註冊

    6. 請記下應用程式的 ApplicationId/ClientId

      Screen shot showing how to create a new multi-tenant application registration.

    服務提供者建立使用者指派的受控識別

    建立使用者指派的受控識別,以作為同盟身分識別認證。

    1. 在搜尋方塊中,搜尋「受控識別」。 找出並選取 [受控識別] 延伸模組。

    2. 選取 + 建立

    3. 提供受控識別的資源群組、區域和名稱。

    4. 選取 [檢閱 + 建立]。

    5. 成功部署時,請記下使用者指派受控識別的 Azure ResourceId,其可在 [屬性] 下取得。 例如:

      /subscriptions/tttttttt-0000-tttt-0000-tttt0000tttt/resourcegroups/XTCMKDemo/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ConsotoCMKDemoUA

      Screen shot showing how to create a resource group and a user-assigned managed identity.

    服務提供者將使用者指派的受控識別設定為應用程式上的同盟認證

    將使用者指派的受控識別設定為應用程式的同盟身分識別認證,以模擬應用程式的身分識別。

    1. 瀏覽至 [Microsoft Entra ID] > [應用程式註冊] > [您的應用程式]

    2. 選取 [憑證和秘密]

    3. 選取 [同盟認證]

      Screen shot showing how to navigate to Certificate and secrets.

    4. 選取 [+ 新增認證]

    5. 在 [同盟認證案例] 下,選取 [客戶自控金鑰]

    6. 按一下 [選取受控識別]。 從窗格中,選取訂用帳戶。 在 [受控識別] 下,選取 [使用者指派的受控識別]。 在 [選取] 方塊中,搜尋您稍早建立的受控識別,然後按一下窗格底部的 [選取]

      Screen shot showing how to select a managed identity.

    7. 在 [認證詳細資料] 下,提供認證的名稱和選用描述,然後選取 [新增]

      Screen shot showing how to add a credential.

    服務提供者與客戶共用應用程式識別碼

    尋找多租用戶應用程式的應用程式識別碼 (用戶端識別碼),並與客戶共用。

    客戶將服務提供者的應用程式存取權授與金鑰保存庫中金鑰

    下列步驟是由客戶在其租用戶 Tenant2 中執行。 客戶可以使用 Azure 入口網站、Azure PowerShell 或 Azure CLI。

    執行這些步驟的使用者必須是具有特殊權限角色的管理員,例如應用程式管理員雲端應用程式管理員全域管理員

    登入 Azure 入口網站並遵循下列步驟。

    客戶在客戶租用戶中安裝服務提供者應用程式

    若要在客戶的租用戶中安裝服務提供者的已註冊應用程式,您可以從已註冊的應用程式建立具有應用程式識別碼的服務主體。 您可以使用下列任一種方式來建立服務主體:

    客戶建立金鑰保存庫

    若要建立金鑰保存庫,必須將「金鑰保存庫參與者」角色或另一個允許建立金鑰保存庫的角色指派給使用者的帳戶。

    1. 從 Azure 入口網站功能表或從首頁,選取 [+ 建立資源]。 在 [搜尋] 方塊中,輸入「金鑰保存庫」。 從結果清單中,選取 [金鑰保存庫]。 在 [金鑰保存庫] 頁面上,選取 [建立]

    2. 在 [基本] 索引標籤上,選擇訂用帳戶。 在 [資源群組] 下,選取 [新建],然後輸入資源群組名稱。

    3. 輸入金鑰保存庫的唯一名稱。

    4. 選取區域和定價層。

    5. 啟用新金鑰保存庫的清除保護。

    6. 在 [存取原則] 索引標籤上,針對 [權限模型] 選取 [Azure 角色型存取控制]

    7. 選取 [檢閱 + 建立],然後選取 [建立]

      Screen shot showing how to create a key vault.

    記下可存取金鑰保存庫的金鑰保存庫名稱和 URI 應用程式必須使用此 URI。

    如需詳細資訊,請參閱快速入門 - 使用 Azure 入口網站建立 Azure Key Vault

    客戶將「金鑰保存庫密碼編譯人員」角色指派給使用者帳戶

    此步驟可確保您可以建立加密金鑰。

    1. 瀏覽至您的金鑰保存庫,然後從左窗格中選取 [存取控制 (IAM)]
    2. 授與此資源的存取權下方,選取新增角色指派
    3. 搜尋並選取 [金鑰保存庫密碼編譯人員]
    4. 在 [成員] 下,選取 [使用者、群組或服務主體]
    5. 選取 [成員],然後搜尋您的使用者帳戶。
    6. 選取 [檢閱 + 指派]

    客戶建立加密金鑰

    若要建立加密金鑰,必須將「金鑰保存庫密碼編譯人員」角色或另一個允許建立金鑰的角色,指派給使用者的帳戶。

    1. 在 [金鑰保存庫屬性] 頁面上,選取 [金鑰]
    2. 選取產生/匯入
    3. 在 [建立金鑰] 畫面上,指定金鑰的名稱。 將其他值保留為其預設值。
    4. 選取 建立
    5. 複製金鑰 URI。

    客戶將金鑰保存庫的存取權授與服務提供者應用程式

    將 Azure RBAC 角色「金鑰保存庫密碼編譯服務加密使用者」指派給服務提供者的已註冊應用程式,以便存取金鑰保存庫。

    1. 瀏覽至您的金鑰保存庫,然後從左窗格中選取 [存取控制 (IAM)]
    2. 授與此資源的存取權下方,選取新增角色指派
    3. 搜尋並選取 [金鑰保存庫密碼編譯服務加密使用者]
    4. 在 [成員] 下,選取 [使用者、群組或服務主體]
    5. 選取 [成員],然後搜尋您從服務提供者安裝之應用程式的應用程式名稱。
    6. 選取 [檢閱 + 指派]

    您現在可以使用金鑰保存庫 URI 和金鑰來設定客戶自控金鑰。

    為現有帳戶設定客戶自控金鑰

    到目前為止,您已在 ISV 租用戶上設定多租用戶應用程式、在客戶租用戶上安裝應用程式,以及在客戶租用戶上設定金鑰保存庫和金鑰。 接下來,您可以在具有客戶租用戶金鑰的現有儲存體帳戶上設定客戶自控金鑰。

    本文中的範例示範如何使用使用者指派的受控識別來授權存取金鑰保存庫,以在現有的儲存體帳戶上設定客戶自控金鑰。 您也可以使用系統指派的受控識別,在現有的儲存體帳戶上設定客戶自控金鑰。 在任一情況下,受控識別都必須有適當的權限可存取金鑰保存庫。 如需詳細資訊,請參閱向 Azure Key Vault 進行驗證

    使用客戶自控金鑰為現有的儲存體帳戶設定加密時,您可以選擇在相關聯的金鑰保存庫中有新版本可用時,自動更新用於 Azure 儲存體加密的金鑰版本。 若要這麼做,請省略金鑰 URI 中的金鑰版本。 或者,您可以明確指定在手動更新金鑰版本前要用於加密的金鑰版本。 在金鑰 URI 上包含金鑰版本可設定客戶自控金鑰,以手動更新金鑰版本。

    重要

    若要輪替金鑰,請在 Azure Key Vault 中建立新版的金鑰。 Azure 儲存體不會處理金鑰輪替,因此您必須對金鑰保存庫中的金鑰進行輪替管理。 您可以在 Azure Key Vault 中設定金鑰自動輪替,或手動輪替金鑰。

    Azure 儲存體每天只會檢查金鑰保存庫是否有新的金鑰版本一次。 當您在 Azure Key Vault 中輪替金鑰時,請務必先等候 24 小時,再停用舊版金鑰。

    若要在 Azure 入口網站中為現有的儲存體帳戶設定跨租用戶的客戶自控金鑰,請遵循下列步驟:

    1. 瀏覽至您的儲存體帳戶。

    2. 在 [安全性 + 網路] 底下,選取 [加密]。 根據預設,金鑰管理會設定為 [Microsoft 管理的金鑰],如下圖所示。

      Screenshot showing encryption options in Azure portal.

    3. 選取 [客戶自控金鑰] 選項。

    4. 選擇 [從 Key Vault 選取] 選項。

    5. 選取 [輸入金鑰 URI],然後指定金鑰 URI。 如果您希望 Azure 儲存體自動檢查新的金鑰版本並加以更新,請省略 URI 中的金鑰版本。

    6. 選取包含金鑰保存庫和金鑰的訂用帳戶。

    7. 在 [身分識別類型] 欄位中,選取 [ 使用者指派],然後使用您先前建立的同盟身分識別認證來指定受控識別。

    8. 展開 [進階] 區段,然後選取您先前在 ISV 租用戶中建立的多租用戶註冊應用程式。

      Screenshot showing how to configure cross-tenant customer-managed keys for an existing storage account in Azure portal.

    9. 儲存您的變更。

    在您從客戶租用戶中的金鑰保存庫指定金鑰之後,Azure 入口網站指出客戶自控金鑰已使用該金鑰進行設定。 其也會指出已啟用金鑰版本的自動更新,並顯示目前用於加密的金鑰版本。 應用程式入口網站也會顯示用來授與金鑰保存庫存取權的受控識別類型、受控識別的主體識別碼,以及多租用戶應用程式的應用程式識別碼。

    Screenshot showing cross-tenant customer-managed key configuration.

    變更金鑰

    您可以隨時變更 Azure 儲存體加密所使用的金鑰。

    注意

    當您變更金鑰或金鑰版本時,根加密金鑰的保護會變更,但 Azure 儲存體帳戶中的資料會一直保持加密。 您不需要在電腦上執行其他動作,就可以確保您的資料受到保護。 變更金鑰或輪替金鑰版本不會影響效能。 變更金鑰或輪替金鑰版本時,不會有任何停機時間。

    若要使用 Azure 入口網站來變更金鑰,請遵循下列步驟:

    1. 瀏覽至您的儲存體帳戶,並顯示 [加密] 設定。
    2. 選取金鑰保存庫,然後選擇新的金鑰。
    3. 儲存您的變更。

    撤銷使用客戶自控金鑰的儲存體帳戶存取權

    若要暫時撤銷使用客戶自控金鑰的儲存體帳戶存取權,請停用金鑰保存庫中目前所使用的金鑰。 沒有與停用和重新啟用金鑰相關聯的效能影響或停機時間。

    停用金鑰之後,客戶端即無法呼叫從 Blob 或其中繼資料讀取或寫入其中的作業。 如需哪些作業會失敗的資訊,請參閱撤銷使用客戶自控金鑰的儲存體帳戶存取權

    警告

    當您停用金鑰保存庫中的金鑰時,Azure 儲存體帳戶中的資料會保持加密狀態,但在您重新啟用金鑰之前,該金鑰會變成無法存取。

    若要使用 Azure 入口網站停用客戶自控金鑰,請遵循下列步驟:

    1. 瀏覽至包含該金鑰的金鑰保存庫。

    2. 在 [物件] 下選取 [金鑰]

    3. 以滑鼠右鍵按一下該金鑰,然後選取 [停用]

      Screenshot showing how to disable a customer-managed key in the key vault.

    切換回 Microsoft 管理的金鑰

    您可以隨時使用 Azure 入口網站、PowerShell 或 Azure CLI,從客戶自控金鑰切換回 Microsoft 管理的金鑰。

    若要在 Azure 入口網站中從客戶自控金鑰切換回 Microsoft 管理的金鑰,請遵循下列步驟:

    1. 瀏覽至您的儲存體帳戶。

    2. 在 [安全性 + 網路] 下方,選取 [加密]

    3. 將 [加密類型] 變更為 [Microsoft 管理的金鑰]

      Screenshot showing how to switch to Microsoft-managed keys for a storage account.

    另請參閱