您可以在組織資源之間遷移 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()
遷移後工作
成功遷移專案後,您必須執行幾項遷移後工作,確保作業持續進行、符合安全法規,以及正確計費。遷移專案會變更資源階層,進而影響沿用的權限和組織層級政策。
以下是遷移後可完成的步驟:
政策驗證:確認專案是否從新的上層資源繼承預期的組織政策。
存取控管:稽核 IAM 角色,確保新組織中的使用者具備必要存取權。
帳單:如果專案費用應由目的地組織支付,請更新帳單帳戶。這個步驟可以省略。詳情請參閱「變更專案的帳單帳戶」和「在組織資源之間遷移帳單帳戶」。
清除:撤銷臨時專案移動者角色,並移除
allowedExportDestinations和allowedImportSources限制。
變更專案的帳單帳戶
Cloud Billing 帳戶可用於各項組織資源。將專案從某個組織資源移至另一個組織資源,不會影響計費,費用會繼續計入舊的帳單帳戶。不過,在組織資源之間遷移專案時,通常也需要遷移至新的帳單帳戶。
如要變更帳單帳戶,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Billing」(帳單) 頁面。
前往「帳單」頁面 - 按一下您要變更的帳單帳戶名稱。
- 在「與這個帳單帳戶連結的專案」下方,找出要遷移的專案名稱,然後按一下右側的選單按鈕。
- 按一下 [Change billing] (變更帳單),然後選取新的帳單帳戶。
- 按一下 [Set account] (設定帳戶)。
系統會向舊有帳單帳戶收取已產生但尚未列於交易記錄中的費用,包括專案遷移前最多兩天的費用。
在組織資源之間遷移帳單帳戶
帳單帳戶可以從一個組織資源遷移至另一個組織資源,但這通常不是必要步驟。大多數現有的組織資源都已有帳單帳戶,應改用該帳戶。
如果新的帳單帳戶沒有相關聯的組織資源,您必須取得帳單帳戶的 roles/billing.admin 角色,以及要與帳單帳戶建立關聯的組織資源的 roles/billing.admin 和 roles/billing.creator 角色。
如要遷移現有帳單帳戶,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Billing」(帳單) 頁面。
前往「帳單」頁面 - 按一下要遷移的帳單帳戶名稱。
- 在「帳戶管理」頁面頂端,按一下「變更機構」。
- 選取目的地組織資源,然後按一下「OK」。
帳單帳戶現已與指定的組織資源建立關聯。
復原遷移作業
如果遷移期間或之後發生問題,Google Cloud 機構之間的遷移作業不會自動復原。如要還原遷移作業,請手動復原。
如果您誤遷移專案,可以再次執行遷移作業,將舊來源設為新目的地,並將舊目的地設為新來源,藉此復原作業。您必須具備必要的 IAM 權限,並強制執行組織政策,才能允許這項操作,就像這是全新的遷移作業一樣。
如要撤銷遷移作業,請按照下列步驟操作:
- 在組織政策中,將來源和目的地 ID (
allowedExportDestinations和allowedImportSources) 對調。 - 重複執行遷移指令,將專案移回原始來源 ID。