執行遷移作業

本頁說明如何將 Google Cloud 專案從一個機構資源遷移至另一個機構資源,或從沒有機構資源的狀態遷移至有機構資源的狀態。

如要遷移專案,請務必確認您具備正確的 (Identity and Access Management (IAM)) 權限,且來源和目的地資源都已設定特定組織政策。

事前準備

專案遷移作業屬於跨機構作業。為防止資源未經授權移動,您必須符合下列條件。

必要的角色

如要取得在組織資源之間遷移專案所需的權限,請要求管理員授予您下列 IAM 角色:

  • 您要在機構資源之間遷移的專案,其專案 IAM 管理員 (roles/resourcemanager.projectIamAdmin)
  • 專案移動者 (roles/resourcemanager.projectMover) 專案父項資源 (資料夾或機構資源) 的權限
  • 如果目的地資源是資料夾: 目的地資源的專案移動者 (roles/resourcemanager.projectMover)
  • 如果目的地資源是機構: 目的地資源的專案建立者 (roles/resourcemanager.projectCreator)

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

您必須在來源和目標機構中,將這些角色指派給同一個使用者帳戶。 這些預先定義的角色具備遷移專案所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分。

所需權限

如要遷移專案,必須具備下列權限:

  • 要遷移專案的 resourcemanager.projects.getIamPolicy 權限 (在機構資源之間遷移)
  • 在要遷移專案的機構資源上按一下 resourcemanager.projects.update
  • 專案的父項資源 (資料夾或機構資源) resourcemanager.projects.move
  • 如果目的地資源是資料夾: resourcemanager.projects.move目的地資源
  • 如果目的地資源是機構資源: resourcemanager.projects.create 目的地資源
  • 如要遷移未與機構建立關聯的專案:在要遷移的專案上按一下 resourcemanager.projects.setIamPolicy

您也可以透過自訂角色或其他預先定義的角色取得這些權限。

必要組織政策

根據預設,專案遷移作業會受到限制。您必須在兩個機構的根層級設定組織政策,明確允許匯出及匯入作業。如要設定遷移作業所需的組織政策,您必須具備上層和目標機構的 roles/orgPolicy.policyAdmin 角色。

  • 在來源機構資源中設定 constraints/resourcemanager.allowedExportDestinations 政策。將目的地機構的 ID 新增為允許值。

  • 在目標機構資源中:設定 constraints/resourcemanager.allowedImportSources 政策。 將來源機構的 ID 新增為允許值。

執行遷移作業

授予權限並強制執行政策後,您可以使用 Google Cloud CLI 或 Resource Manager API 遷移專案。

gcloud

如要將專案遷移至其他機構資源,請執行下列指令:

gcloud beta projects move PROJECT_ID \
    --organization ORGANIZATION_ID

您也可以使用下列指令,將資料夾指定為目標資源:

gcloud beta projects move PROJECT_ID \
    --folder FOLDER_ID

替換下列欄位:

  • PROJECT_ID:要遷移的專案 ID 或編號。
  • ORGANIZATION_ID:您要將專案移至的機構資源 ID。
  • FOLDER_ID:要將專案移至的資料夾 ID。

您只能指定一個目標,也就是資料夾或機構資源。

API

透過 v1 Resource Manager API,您就能將專案的 parent 欄位設為目的地資源的 ID,藉此在機構資源之間遷移專案。

如要遷移專案,請按照下列步驟操作:

  • 使用 projects.get() 方法取得 project 物件。
  • parent 欄位更新為目的地資源 ID。
  • 執行 projects.update() 方法。

以下程式碼片段會示範這些步驟:

    project = crm.projects().get(projectId=flags.projectId).execute()
    project['parent'] = {
        'type': 'organization',
        'id': flags.organizationId
    }

    project = crm.projects().update(
    projectId=flags.projectId, body=project).execute()

遷移後工作

專案遷移成功後,您必須執行幾項遷移後工作,確保作業持續運作、符合安全法規,以及帳單正確無誤。遷移專案會變更資源階層,進而影響沿用的權限和機構層級政策。

以下是遷移後可以完成的步驟:

  1. 政策驗證:確認專案是否從新的上層專案沿用預期的組織政策。

  2. 存取控管:稽核 IAM 角色,確保新機構中的使用者擁有必要存取權。

  3. 帳單:如果專案需要向目標機構收費,請更新帳單帳戶。 這個步驟可以省略。詳情請參閱「變更專案的帳單帳戶」和「在組織資源之間遷移帳單帳戶」。

  4. 清除:撤銷臨時專案移動者角色,並移除 allowedExportDestinationsallowedImportSources 限制條件。

變更專案的帳單帳戶

Cloud Billing 帳戶可以跨越機構資源使用,將專案從一個機構資源遷移到另一個機構資源並不會影響計費方式。我們會繼續向舊有帳單帳戶收費,不過,在機構資源之間遷移專案時,通常也包括要求遷移到新帳單帳戶。

如要變更帳單帳戶,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「帳單」頁面
    前往「帳單」頁面
  2. 按一下您要變更的帳單帳戶名稱。
  3. 在「Projects linked to this billing account」(這個帳單帳戶的連結專案) 下方,找到要遷移的專案名稱,然後按一下右側的選單按鈕。
  4. 按一下 [Change billing] (變更帳單),然後選取新的帳單帳戶。
  5. 按一下 [Set account] (設定帳戶)

系統會向舊有帳單帳戶收取已產生但尚未列於交易記錄中的費用,這可能包括專案遷移前最多兩天的費用。

在機構資源之間遷移帳單帳戶

帳單帳戶可以從一個機構資源遷移到另一個機構資源,但這通常不是必要的步驟。大多數現有機構資源都已經有現成的帳單帳戶,我們建議您善加利用。

如果新的帳單帳戶未與任何機構資源建立關聯,您必須取得帳單帳戶的 roles/billing.admin 角色,以及要與帳單帳戶建立關聯的機構資源的 roles/billing.adminroles/billing.creator 角色。

如要遷移現有帳單帳戶,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「帳單」頁面。
    前往「帳單」頁面
  2. 按一下要遷移的帳單帳戶名稱。
  3. 在「帳戶管理」頁面頂端,按一下「變更機構」
  4. 選取目的地機構資源,然後按一下「確定」

帳單帳戶現在會與指定的機構資源相關聯。

復原遷移作業

如果誤將專案遷移至錯誤位置,可以再次執行遷移作業,將舊來源設為新目的地,舊目的地設為新來源,即可復原作業。您必須具備必要的 IAM 權限,並強制執行組織政策,才能允許這項作業,就像是全新的遷移作業一樣。

如要還原遷移作業,請按照下列步驟操作:

  1. 在組織政策中交換來源和目的地 ID (allowedExportDestinationsallowedImportSources)。
  2. 重複執行遷移指令,將專案移回原始來源 ID。

後續步驟