將 Azure 訂用帳戶移轉至不同的 Microsoft Entra 目錄

組織可能有數個 Azure 訂用帳戶。 每個訂用帳戶都與特定 Microsoft Entra 相關聯。 若要讓管理變得更容易,您可以將訂用帳戶轉移至不同的 Microsoft Entra 目錄。 當您將訂用帳戶移轉至不同的 Microsoft Entra 目錄時,部分資源並不會移轉至目標目錄。 例如,Azure 角色型存取控制 (Azure RBAC) 中的所有角色指派和自訂角色都會從來源目錄中永久刪除,而且不會轉移至目標目錄。

此文章將說明基本步驟,您可以遵循這些步驟來將訂用帳戶轉移至不同的 Microsoft Entra 目錄,以及在轉移之後重新建立某些資源。

如果想要改為封鎖組織中訂用帳戶至其他目錄的轉移,您可以設定訂用帳戶原則。 如需詳細資訊,請參閱管理 Azure 訂用帳戶原則

注意

對於 Azure 雲端解決方案提供者 (CSP) 訂用帳戶,不支援變更訂用帳戶的 Microsoft Entra 目錄。

概觀

將 Azure 訂用帳戶轉移至不同的 Microsoft Entra 目錄是必須謹慎規劃和執行的複雜程序。 許多 Azure 服務都需要安全性主體 (身分識別),才能正常運作或甚至管理其他 Azure 資源。 本文會嘗試說明大部分 (而非完整的) 對安全性主體具有高度相依性的 Azure 服務。

重要

在某些案例中,轉移訂用帳戶可能需要停機才能完成此程序。 您需要謹慎規劃,以評估您的轉移是否需要停機。

下圖顯示將訂用帳戶轉移至不同目錄時必須遵循的基本步驟。

  1. 準備轉移

  2. 將 Azure 訂用帳戶轉移至不同目錄

  3. 重新建立目標目錄中的資源,例如角色指派、自訂角色和受控識別

    轉移訂用帳戶圖表

決定是否要將訂用帳戶轉移至不同目錄

以下是您可能會想要轉移訂用帳戶的一些原因:

  • 由於公司合併或收購,您想要在主要 Microsoft Entra 目錄中管理收購的訂用帳戶。
  • 組織中有人已建立訂用帳戶,而您想要將其管理工作合併至特定的 Microsoft Entra 目錄。
  • 您有相依於特定訂用帳戶識別碼或 URL 的應用程式,而要修改應用程式設定或程式碼並不容易。
  • 貴公司將一部分業務分割為不同公司,而您需要將部分資源移至不同的 Microsoft Entra 目錄。
  • 為了形成安全性隔離,您想要在不同的 Microsoft Entra 目錄中管理一些資源。

替代方法

轉移訂用帳戶時需要停機才能完成程序。 根據您的案例,您可以考慮下列替代方法:

  • 重新建立資源,並將資料複製到目標目錄和訂用帳戶。
  • 採用多目錄架構,並讓訂用帳戶留在來源目錄中。 使用 Azure Lighthouse 委派資源,讓目標目錄中的使用者可以存取來源目錄中的訂用帳戶。 如需詳細資訊,請參閱 Azure Lighthouse 在企業案例中的運用

了解移轉訂用帳戶的影響

數個 Azure 資源相依於訂用帳戶或目錄。 根據您的情況,下表列出轉移訂用帳戶的已知影響。 藉由執行本文中的步驟,您可以重新建立一些在訂用帳戶轉移之前就已存在的資源。

重要

本節列出相依於您訂用帳戶的已知 Azure 服務或資源。 由於 Azure 中的資源類型不斷演進,因此可能會有此處未列出的其他相依性會對您的環境造成重大改變。

服務或資源 受影響 可復原 您會受到影響嗎? 您可以採取的方法
角色指派 Yes Yes 列出角色指派 所有角色指派都會永久刪除。 您必須將使用者、群組和服務主體對應至目標目錄中的對應物件。 您必須重新建立角色指派。
自訂角色 Yes Yes 列出自訂角色 所有自訂角色都會永久刪除。 您必須重新建立自訂角色和任何角色指派。
系統指派的受控識別 Yes Yes 列出受控識別 您必須先停用再重新啟用受控識別。 您必須重新建立角色指派。
使用者指派的受控識別 Yes Yes 列出受控識別 您必須刪除和重新建立受控識別,並將受控識別連結至適當資源。 您必須重新建立角色指派。
Azure Key Vault Yes Yes 列出 Key Vault 存取原則 您必須更新與金鑰保存庫相關聯的租用戶識別碼。 您必須先移除再新增存取原則。
已啟用 Microsoft Entra 驗證整合的 Azure SQL 資料庫 No 使用 Microsoft Entra 驗證檢查 Azure SQL 資料庫 您無法將已啟用 Microsoft Entra 驗證的 Azure SQL 資料庫轉移至不同目錄。 如需詳細資訊,請參閱 使用 Microsoft Entra 驗證
已啟用 Microsoft Entra 驗證整合的 適用於 MySQL 的 Azure 資料庫 No 您無法將已啟用 Microsoft Entra 驗證的適用於 MySQL 的 Azure 資料庫 (單一和彈性伺服器) 轉移至不同的目錄。
適用於 PostgreSQL 的 Azure 資料庫 已啟用 Microsoft Entra 驗證整合或已啟用客戶自控密鑰的彈性伺服器 No 您無法使用 Microsoft Entra 驗證或已啟用客戶管理的金鑰,將 適用於 PostgreSQL 的 Azure 資料庫 傳送至不同的目錄。 您必須先停用這些功能、傳輸伺服器,然後重新啟用這些功能。
Azure 儲存體和 Azure Data Lake Storage Gen2 Yes Yes 您必須重新建立任何 ACL。
Azure 檔案 Yes 在大部分情況下 您必須重新建立任何 ACL。 針對已啟用 Entra Kerberos 驗證的儲存體帳戶,您必須在轉移後停用和重新啟用 Entra Kerberos 驗證。 針對 Entra Domain Services,不支援轉移至其他未啟用 Entra Domain Services 的 Microsoft Entra 目錄。
Azure 檔案同步 Yes Yes 儲存體同步服務及/或儲存體帳戶可以移至不同目錄。 如需詳細資訊,請參閱 Azure 檔案儲存體的常見問題集 (FAQ)
Azure 受控磁碟 Yes Yes 如果您使用磁碟加密集以透過客戶自控金鑰加密受控磁碟,則必須先停用再重新啟用與磁碟加密集相關聯的系統指派身分識別。 而且,您必須重新建立角色指派,也就是再次向 Key Vault 中的磁碟加密集授與所需的權限。
Azure Kubernetes Service No 您無法將 AKS 叢集及其相關聯的資源轉移至不同目錄。 如需詳細資訊,請參閱 Azure Kubernetes Service (AKS) 的常見問題集
Azure 原則 No 所有 Azure 原則物件,包括自訂定義、指派、豁免和合規性資料。 您必須匯出、匯入和重新指派定義。 然後,建立新的原則指派和任何需要的原則豁免
Microsoft Entra 網域服務 No 您無法將 Microsoft Entra Domain Services 受控網域轉移至不同目錄。 如需詳細資訊,請參閱關於 Microsoft Entra Domain Services 的常見問題 (FAQ)
應用程式註冊 Yes Yes
Microsoft 開發箱 No 您無法將開發箱及其相關聯的資源轉移至不同目錄。 訂用帳戶移至另一個租用戶後,您將無法在開發箱上執行任何動作
Azure 部署環境 No 您無法將環境及其相關聯的資源轉移至不同目錄。 訂用帳戶移至另一個租用戶後,您將無法在您的環境上執行任何動作
Azure Service Fabric No 您必須重新建立叢集。 如需詳細資訊,請參閱 SF 叢集常見問題SF 受控叢集常見問題
Azure 服務匯流排 Yes Yes 您必須刪除和重新建立受控識別,並將受控識別連結至適當資源。 您必須重新建立角色指派。
Azure Synapse Analytics 工作區 Yes Yes 您必須更新與 Synapse Analytics 工作區相關聯的租用戶識別碼。 如果工作區與 Git 存放庫相關聯,您必須更新工作區的 Git 組態。 如需詳細資訊,請參閱將訂用帳戶轉移至不同 Microsoft Entra 目錄 (租用戶) 後復原 Synapse Analytics 工作區
Azure Databricks No 目前,Azure Databricks 不支援將工作區移至新的租用戶。 如需詳細資訊,請參閱管理 Azure Databricks 帳戶
Azure Compute Gallery Yes Yes 將資源庫中的映像版本複寫到其他區域,或複製另一個資源庫中的映像

警告

如果您針對儲存體帳戶或 SQL 資料庫等資源使用待用加密,而該資源相依的金鑰保存庫正在轉移,則可能導致無法復原的情況。 如果您有這種情況,請採取相關步驟來使用不同的金鑰保存庫,或暫時停用客戶自控金鑰,以避免這種無法復原的情況。

若要取得一些在轉移訂用帳戶時會受影響的 Azure 資源清單,您也可以在 Azure Resource Graph 中執行查詢。 如需範例查詢,請參閱列出轉移 Azure 訂用帳戶時會受影響的資源

必要條件

若要完成這些步驟,您需要:

  • Azure Cloud Shell 中的 BashAzure CLI
  • 您要在來源目錄中轉移的訂用帳戶的計費帳戶擁有者
  • 變更目錄的使用者的來源目錄和目標目錄中的使用者帳戶

步驟 1:準備轉移

登入來源目錄

  1. 以管理員身分登入 Azure。

  2. 使用 az account list 命令取得訂用帳戶的清單。

    az account list --output table
    
  3. 使用 az account set 來設定您想要轉移的使用中訂用帳戶。

    az account set --subscription "Marketing"
    

安裝 Azure Resource Graph 擴充功能

適用於 Azure Resource Graph 的 Azure CLI 擴充功能 (resource-graph) 可讓您使用 az graph 命令來查詢 Azure Resource Manager 所管理的資源。 您會在之後的步驟中使用此資訊。

  1. 使用 az extension list 來查看您是否已安裝 resource-graph 擴充功能。

    az extension list
    
  2. 如果您使用預覽版或舊版的 resource-graph 擴充功能,請使用 az extension update 來更新該擴充功能。

    az extension update --name resource-graph
    
  3. 如果未安裝 resource-graph 擴充功能,請使用 az extension add 來安裝該擴充功能。

    az extension add --name resource-graph
    

儲存所有角色指派

  1. 使用 az role assignment list 來列出所有角色指派 (包括繼承的角色指派)。

    若要更輕鬆地檢閱清單,您可以將輸出匯出為 JSON、TSV 或資料表。 如需詳細資訊,請參閱使用 Azure RBAC 和 Azure CLI 列出角色指派

    az role assignment list --all --include-inherited --output json > roleassignments.json
    az role assignment list --all --include-inherited --output tsv > roleassignments.tsv
    az role assignment list --all --include-inherited --output table > roleassignments.txt
    
  2. 儲存角色指派清單。

    當您轉移訂用帳戶時,所有角色指派都會永久刪除,因此請務必儲存複本。

  3. 檢閱角色指派清單。 目標目錄中可能會有不需要的角色指派。

儲存自訂角色

  1. 使用 az role definition list 來列出您的自訂角色。 如需詳細資訊,請參閱使用 Azure CLI 建立或更新 Azure 自訂角色

    az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
    
  2. 在目標目錄中將所需的每個自訂角色儲存為個別的 JSON 檔案。

    az role definition list --name <custom_role_name> > customrolename.json
    
  3. 製作自訂角色檔案的複本。

  4. 將每個複本修改為使用下列格式。

    之後,您會使用這些檔案在目標目錄中重新建立自訂角色。

    {
      "Name": "",
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": []
    }
    

決定使用者、群組和服務主體對應

  1. 根據您的角色指派清單,決定您要在目標目錄中對應的使用者、群組和服務主體。

    您可以藉由查看每個角色指派中的 principalType 屬性來識別主體類型。

  2. 如有必要,請在目標目錄中建立您需要的任何使用者、群組或服務主體。

列出受控識別的角色指派

當訂用帳戶轉移至另一個目錄時,系統不會更新受控身分識別。 因此,系統指派或使用者指派的任何現有受控身分識別都會中斷。 在轉移後,您可以重新啟用任何系統指派的受控識別。 至於使用者指派的受控識別,則必須在目標目錄中加以重新建立並連結。

  1. 檢閱支援受控識別的 Azure 服務清單,以記下可能會使用受控識別的地方。

  2. 使用 az ad sp list 來列出系統指派的受控識別和使用者指派的受控識別。

    az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
    
  3. 在受控識別清單中,確定哪些是系統指派的受控識別,哪些是使用者指派的受控識別。 您可以使用下列準則來確定類型。

    準則 受控識別類型
    alternativeNames 屬性包含 isExplicit=False 系統指派
    alternativeNames 屬性不包含 isExplicit 系統指派
    alternativeNames 屬性包含 isExplicit=True 使用者指派

    您也可以使用 az identity list 來只列出使用者指派的受控識別。 如需相關資訊,請參閱使用 Azure CLI 建立、列出和刪除使用者指派的受控識別

    az identity list
    
  4. 取得受控識別的 objectId 值清單。

  5. 搜尋您的角色指派清單,以查看受控識別是否有任何角色指派。

列出金鑰保存庫

在建立金鑰保存庫時,系統會自動將其繫結至其建立所在訂用帳戶的預設 Azure Active DirectoryMicrosoft Entra 租用戶識別碼。 所有存取原則項目也會繫結到此租用戶識別碼。 如需詳細資訊,請參閱將 Azure Key Vault 移至另一個訂用帳戶

警告

如果您針對儲存體帳戶或 SQL 資料庫等資源使用待用加密,而該資源相依的金鑰保存庫正在轉移,則可能導致無法復原的情況。 如果您有這種情況,請採取相關步驟來使用不同的金鑰保存庫,或暫時停用客戶自控金鑰,以避免這種無法復原的情況。

使用 Microsoft Entra 驗證列出 Azure SQL 資料庫

列出 ACL

  1. 如果您使用 Azure Data Lake Storage Gen2,請使用 Azure 入口網站或 PowerShell 列出套用至任何檔案的 ACL。

  2. 如果您使用 Azure 檔案儲存體,請列出套用至任何檔案的 ACL。

列出其他已知資源

  1. 使用 az account show 來取得訂用帳戶識別碼 (在 bash 中)。

    subscriptionId=$(az account show --output tsv --query id)
    
  2. 使用 az graph 延伸模組列出具有已知 Microsoft Entra 目錄相依性的其他 Azure 資源 (在 bash 中)。

    az graph query -q 'resources 
        | where type != "microsoft.azureactivedirectory/b2cdirectories" 
        | where  identity <> "" or properties.tenantId <> "" or properties.encryptionSettingsCollection.enabled == true 
        | project name, type, kind, identity, tenantId, properties.tenantId' --subscriptions $subscriptionId --output yaml
    

步驟 2:轉移訂用帳戶

在此步驟中,您會將訂用帳戶從來源目錄轉移至目標目錄。 這些步驟會根據您是否也要移轉帳單擁有權而有所不同。

警告

當您移轉訂用帳戶時,來源目錄中的所有角色指派會永久刪除,且無法加以還原。 一旦移轉訂用帳戶,就無法回復。 執行此步驟之前,請務必先完成上述步驟。

  1. 決定您是否也要將帳單擁有權移轉給另一個帳戶。

  2. 將訂用帳戶移轉至不同目錄。

  3. 一旦您完成訂用帳戶的轉移,請返回本文,以在目標目錄中重新建立資源。

步驟 3:重新建立資源

登入目標目錄

  1. 在目標目錄中,以接受了轉移要求的使用者身分來登入。

    只有新帳戶中接受了轉移要求的使用者,才有權管理資源。

  2. 使用 az account list 命令取得訂用帳戶的清單。

    az account list --output table
    
  3. 使用 az account set 來設定您想要使用的使用中訂用帳戶。

    az account set --subscription "Contoso"
    

建立自訂角色

指派角色

  • 使用 az role assignment create 將角色指派給使用者、群組和服務主體。 如需詳細資訊,請參閱使用 Azure CLI 指派 Azure 角色

    az role assignment create --role <role_name_or_id> --assignee <assignee> --scope "/subscriptions/<subscriptionId>/resourceGroups/<resource_group>"
    

更新系統指派的受控識別

  1. 先停用再重新啟用系統指派的受控識別。

    Azure 服務 其他相關資訊
    虛擬機器 使用 Azure CLI 在 Azure VM 上設定 Azure 資源受控識別
    虛擬機器擴展集 使用 Azure CLI 在虛擬機器擴展集上設定 Azure 資源受控識別
    其他服務 支援適用於 Azure 資源的受控識別服務 (機器翻譯)
  2. 使用 az role assignment create 將角色指派給系統指派的受控識別。 如需詳細資訊,請參閱使用 Azure CLI 為受控識別指派對資源的存取權

    az role assignment create --assignee <objectid> --role '<role_name_or_id>' --scope "/subscriptions/<subscriptionId>/resourceGroups/<resource_group>"
    

更新使用者指派的受控識別

  1. 刪除、重新建立和連結使用者指派的受控識別。

    Azure 服務 其他相關資訊
    虛擬機器 使用 Azure CLI 在 Azure VM 上設定 Azure 資源受控識別
    虛擬機器擴展集 使用 Azure CLI 在虛擬機器擴展集上設定 Azure 資源受控識別
    其他服務 支援適用於 Azure 資源的受控識別服務 (機器翻譯)
    使用 Azure CLI 建立、列出和刪除使用者指派的受控識別
  2. 使用 az role assignment create 將角色指派給使用者指派的受控識別。 如需詳細資訊,請參閱使用 Azure CLI 為受控識別指派對資源的存取權

    az role assignment create --assignee <objectid> --role '<role_name_or_id>' --scope "/subscriptions/<subscriptionId>/resourceGroups/<resource_group>"
    

更新金鑰保存庫

本節說明用來更新金鑰保存庫的基本步驟。 如需詳細資訊,請參閱將 Azure Key Vault 移至另一個訂用帳戶

  1. 將訂用帳戶中與所有現有金鑰保存庫相關聯的租用戶識別碼更新至目標目錄。

  2. 移除所有現有的存取原則項目。

  3. 新增與目標目錄相關聯的存取原則項目。

更新 ACL

  1. 如果您使用 Azure Data Lake Storage Gen2,請指派適當的 ACL。 如需詳細資訊,請參閱 Azure Data Lake Storage Gen2 中的存取控制

  2. 如果您使用 Azure 檔案儲存體,請指派適當的 ACL。

檢閱其他安全性方法

即使在轉移期間移除角色指派,原始擁有者帳戶中的使用者仍可透過其他安全性方法繼續存取訂用帳戶,包括:

  • 服務 (例如儲存體) 的存取金鑰。
  • 可將使用者管理權限授與訂用帳戶資源的管理憑證
  • 服務 (例如 Azure 虛擬機器) 的遠端存取認證。

如果您打算移除來源目錄中使用者的存取權,讓其在目標目錄中沒有存取權,請考慮輪替任何認證。 在認證更新之前,使用者會在轉移後繼續擁有存取權。

  1. 輪替儲存體帳戶的存取金鑰。 如需詳細資訊,請參閱管理儲存體帳戶存取金鑰

  2. 如果您要對其他服務 (例如 Azure SQL Database 或 Azure 服務匯流排傳訊) 使用存取金鑰,請輪替存取金鑰。

  3. 對於使用秘密的資源,請開啟資源的設定並更新秘密。

  4. 對於使用憑證的資源,請更新憑證。

下一步