執行遷移作業

您可以在組織資源之間遷移 Google Cloud 專案,也可以將獨立專案 (沒有組織資源的專案) 移至組織資源。如要在組織之間遷移專案,您必須具備必要的 Identity and Access Management (IAM) 權限,並在來源和目的地組織資源上,設定必要的組織政策。如要移動獨立專案,您只需要具備專案和目的地組織資源的必要 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

使用第 1 版 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. 清除:撤銷臨時專案移動者角色,並移除 allowedExportDestinations 和 allowedImportSources 限制。

變更專案的帳單帳戶

Cloud Billing 帳戶可用於各項組織資源。將專案從某個組織資源移至另一個組織資源,不會影響計費,費用會繼續計入舊的帳單帳戶。不過,在組織資源之間遷移專案時,通常也需要遷移至新的帳單帳戶。

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

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

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

在組織資源之間遷移帳單帳戶

帳單帳戶可以從一個組織資源遷移至另一個組織資源,但這通常不是必要步驟。大多數現有的組織資源都已有帳單帳戶,應改用該帳戶。

如果新的帳單帳戶沒有相關聯的組織資源,您必須取得帳單帳戶的 roles/billing.admin 角色,以及要與帳單帳戶建立關聯的組織資源的 roles/billing.admin 和 roles/billing.creator 角色。

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

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

帳單帳戶現已與指定的組織資源建立關聯。

復原遷移作業

如果遷移期間或之後發生問題,Google Cloud 機構之間的遷移作業不會自動復原。如要還原遷移作業,請手動復原。

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

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

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

後續步驟