將 Azure Key Vault 移至另一個訂用帳戶
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
概觀
重要
將金鑰保存庫移至另一個訂用帳戶將會對環境造成重大變更。 請確定您了解這項變更的影響,並先仔細遵循本文中的指導,再決定是否要將金鑰保存庫移至新的訂用帳戶。 如果您使用受控服務識別 (MSI),請閱讀文件結尾處的移動後指示。
Azure Key Vault 會自動繫結至其建立所在訂用帳戶的預設 Microsoft Entra ID 租用戶識別碼。 您可以遵循這個指南,來尋找與訂用帳戶相關聯的租用戶識別碼。 所有存取原則項目和角色指派也都會繫結至這個租用戶識別碼。 如果您將 Azure 訂用帳戶從租用戶 A 移到租用戶 B,租用戶 B 中的服務主體 (使用者和應用程式) 就無法存取現有的金鑰保存庫。若要修正這個問題,您需要:
注意
如果透過 Azure Lighthouse 來建立 Key Vault,則 Key Vault 會改為繫結至管理端租用戶識別碼。 只有保存庫存取原則權限模型會支援 Azure Lighthouse。 如需 Azure Lighthouse 中的租用戶詳細資訊,請參閱 Azure Lighthouse 中的租用戶、使用者和角色。
- 將訂用帳戶中與所有現有金鑰保存庫相關聯的租用戶識別碼變更為租用戶 B。
- 移除所有現有的存取原則項目。
- 新增與租用戶 B 相關聯的存取原則項目。
如需 Azure Key Vault 與 Microsoft Entra ID 的詳細資訊,請參閱
限制
重要
用於磁碟加密的金鑰保存庫無法移動 若使用的金鑰保存庫已有 VM 磁碟加密,當您啟用磁碟加密時,金鑰保存庫無法移至不同的資源群組或訂用帳戶。 將金鑰保存庫移至新的資源群組或訂用帳戶前,必須先停用磁碟加密。
某些服務主體 (使用者和應用程式) 會繫結至特定租用戶。 如果您將金鑰保存庫移至另一個租用戶中的訂用帳戶,則有可能無法恢復特定服務主體的存取權。 請進行檢查,以確定要移動金鑰保存庫的租用戶中有所有必要的服務主體。
必要條件
- 金鑰保存庫目前所在訂用帳戶的參與者層級存取權或更高權限。 您可以使用 Azure 入口網站、Azure CLI 或 PowerShell 來指派角色。
- 您想要將金鑰保存庫移至其中的訂用帳戶的參與者層級存取權或更高權限。 您可以使用 Azure 入口網站、Azure CLI 或 PowerShell 來指派角色。
- 新訂用帳戶中的資源群組。 您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來加以建立。
您可以使用 Azure 入口網站、PowerShell、Azure CLI 或 REST API 來檢查現有角色。
將金鑰保存庫移至新的訂用帳戶
- 登入 Azure 入口網站。
- 瀏覽至您的金鑰保存庫
- 選取 [概觀] 索引標籤
- 選取 [移動] 按鈕
- 從下拉式選項中選取 [移至另一個訂用帳戶]
- 選取要移動金鑰保存庫的資源群組
- 確認移動資源相關的警告
- 選取 [確定]
訂用帳戶位於新的租用戶時的其他步驟
如果您將包含金鑰保存庫的訂用帳戶移至新租用戶中,則需要手動更新租用戶識別碼,並移除舊的存取原則和角色指派。 以下是在 PowerShell 和 Azure CLI 中執行這些步驟的教學課程。 如果您使用 PowerShell,則可能需要執行 Clear-AzContext 命令,才能看到目前所選範圍以外的資源。
更新金鑰保存庫中的租用戶識別碼
Select-AzSubscription -SubscriptionId <your-subscriptionId> # Select your Azure Subscription
$vaultResourceId = (Get-AzKeyVault -VaultName myvault).ResourceId # Get your key vault's Resource ID
$vault = Get-AzResource -ResourceId $vaultResourceId -ExpandProperties # Get the properties for your key vault
$vault.Properties.TenantId = (Get-AzContext).Tenant.TenantId # Change the Tenant that your key vault resides in
$vault.Properties.AccessPolicies = @() # Access policies can be updated with real
# applications/users/rights so that it does not need to be # done after this whole activity. Here we are not setting
# any access policies.
Set-AzResource -ResourceId $vaultResourceId -Properties $vault.Properties # Modifies the key vault's properties.
Clear-AzContext #Clear the context from PowerShell
Connect-AzAccount #Log in again to confirm you have the correct tenant id
az account set -s <your-subscriptionId> # Select your Azure Subscription
$tenantId=$(az account show --query tenantId) # Get your tenantId
az keyvault update -n myvault --remove Properties.accessPolicies # Remove the access policies
az keyvault update -n myvault --set Properties.tenantId=$tenantId # Update the key vault tenantId
更新存取原則和角色指派
注意
如果 Key Vault 使用 Azure RBAC 權限模型。 您還需要移除金鑰保存庫的角色指派。 您可以使用 Azure 入口網站、Azure CLI 或 PowerShell 來移除角色指派。
現在,您的保存庫已與正確的租用戶識別碼相關聯,而且移除了舊的存取原則項目或角色指派,請設定新的存取原則項目或角色指派。
若要指派原則,請參閱:
若要新增角色指派,請參閱:
更新受控識別
如果您要傳送整個訂用帳戶,並針對 Azure 資源使用受控識別,則也必須將其更新為新的 Microsoft Entra 租用戶。 如需受控識別的詳細資訊,請參閱受控識別概觀。
如果您要使用受控識別,則也必須更新身分識別,因為舊的身分識別不會再位於正確的 Microsoft Entra 租用戶中。 請參閱下列文件,以協助解決此問題。
下一步
- 深入了解金鑰、祕密與憑證
- 如需概念性資訊 (包括如何解譯 Key Vault 記錄),請參閱 Key Vault 記錄
- Key Vault 開發人員指南
- Azure Key Vault 安全性功能
- 設定 Azure Key Vault 防火牆和虛擬網路