本文提供遷移專案時處理特殊情況的相關資訊。遷移專案時,請確認您已取得專案、父項資源和目的地資源的必要 Identity and Access Management (IAM) 權限。
遷移未與機構資源建立關聯的專案
您可以將未與機構資源建立關聯的專案遷移至機構資源。不過,您無法使用這個程序將專案還原成無機構狀態。如果專案已與機構資源建立關聯,但您想將專案還原成無機構狀態,請洽詢支援代表尋求協助。
您必須在目標機構資源中獲派 roles/resourcemanager.projectCreator 角色。
如果您沒有專案父項機構資源的 resourcemanager.organizations.get 權限,專案可能不會在Google Cloud 控制台的實際機構中如預期反映。這可能會導致專案看起來未與任何機構資源建立關聯。詳情請參閱「限制使用者可見的專案」。
如要判斷專案是否與機構資源相關聯,請按照下列步驟操作:
gcloud
執行下列指令:
gcloud projects describe PROJECT_ID
將 PROJECT_ID 替換為要遷移的專案 ID。
如果輸出內容中沒有顯示父項資源,表示專案未與機構資源建立關聯。
如果輸出內容中顯示父項資源 (資料夾或組織資源),表示專案與組織資源相關聯。
遷移未與機構資源建立關聯的專案,與在機構資源之間遷移專案的程序類似,但不需要遷移計畫中的所有步驟。如要將專案遷移至機構資源,請按照下列步驟操作:
接著即可執行遷移作業。
控制台
如要將專案遷移至機構資源,請按照下列步驟操作:
在 Google Cloud 控制台中,依序開啟「IAM & admin」(IAM 與管理員) >「Settings」(設定) 頁面。
選取頁面頂端的「專案挑選器」。
從機構選擇器中選取「無機構」。如果您未與任何機構資源建立關聯,系統不會顯示機構挑選器,您可以略過這個步驟。
選取要遷移的專案。

按一下頁面頂端的 [Migrate] (遷移)。
在「Organization」(機構) 下拉式清單中,選取專案要遷往的機構資源。
gcloud
如要將專案遷移至機構資源,請執行下列指令:
gcloud beta projects move PROJECT_ID \
--organization ORGANIZATION_ID
其中:
- PROJECT_ID 是您想遷移至機構資源的專案 ID。
- ORGANIZATION_ID 是您想將專案遷移至的機構資源 ID。
API
透過 Resource Manager API,您就能將專案的 parent 欄位設為機構資源的機構資源 ID,藉此將專案遷移至機構資源中。
如要將專案遷移至機構資源,請按照下列步驟操作:
- 使用
projects.get()方法取得project物件。 - 將其
parent欄位設為機構資源的機構資源 ID。 - 使用
projects.update()方法更新project物件。
設定 parent 欄位之後,您將無法變更該欄位。
以下用程式碼片段說明上述步驟:
project = crm.projects().get(projectId=flags.projectId).execute()
project['parent'] = {
'type': 'organization',
'id': flags.organizationId
}
如果來源專案已啟用 OS 登入,您必須將 roles/compute.osLoginExternalUser 角色指派給有權存取該專案的所有主體。
Shared VPC
在符合特定條件的情況下,可以遷移共用 VPC 專案。首先,來源機構資源中具有 roles/orgpolicy.policyAdmin 角色的使用者,必須在要匯出的專案上層設定包含 constraints/resourcemanager.allowEnabledServicesForExport 限制的機構政策。這項限制應將 SHARED_VPC 列為allowed_value。
遷移前不需要停用共用虛擬私有雲。不過,您必須先遷移共用 VPC 主專案,再遷移所有服務專案。建議您比對來源和目標位置的機構資源防火牆規則,盡量減少潛在問題,並避免專案和網路在遷移期間發生任何停機情形。如果您在遷移其他服務專案時,將部分服務專案無限期留在來源機構資源中,我們無法保證網路的健康狀態。
如果遷移主專案,可以將其移回來源機構資源。主專案和服務專案分屬不同機構組織的時間長度沒有確切期限。不過,開始遷移服務專案後,您必須先遷移所有服務專案,才能再次遷移主專案。
自訂 IAM 角色
您可以在機構資源層級建立自訂 IAM 角色,精細控管資源存取權,但這些角色僅在建立時的機構資源中有效。如果您嘗試遷移專案,而該專案包含使用者與機構層級自訂 IAM 角色的允許政策繫結,遷移作業會因前提條件錯誤而失敗,並說明相關角色不存在於目標機構資源中。
如要列出機構資源層級的所有自訂 IAM 角色,請執行下列 Google Cloud CLI 指令:
gcloud iam roles list --organization ORGANIZATION_ID
其中 ORGANIZATION_ID 是您要列出角色的機構資源 ID。如要瞭解如何找出機構資源 ID,請參閱「取得機構資源 ID」一文。
如要取得機構資源中自訂 IAM 角色的相關資訊,請執行下列 gcloud CLI 指令:
gcloud iam roles describe --organization ORGANIZATION_ID \
ROLE_ID
其中:
ORGANIZATION_ID是角色父項機構資源的機構資源 ID。ROLE_ID是您要說明的角色名稱。
如要解決先決條件錯誤,請為專案繼承的每個機構層級自訂角色,建立同等的專案層級自訂角色。然後移除參照機構層級自訂角色的 IAM 角色繫結。
專案遷移完成後,您可以更新允許政策,在目的地機構資源中使用機構層級的自訂角色。
如要進一步瞭解自訂角色,請參閱建立及管理自訂角色。
值區鎖定功能
Cloud Storage bucket 鎖定可讓您在 Cloud Storage bucket 上設定資料保留政策,控管 bucket 中的物件必須保留多久。bucket 鎖定功能會使用防刪除鎖定保護,防止專案遭到誤刪。
遷移專案時,保留政策和防刪除鎖定會一併遷移,但請注意,如果遷移的專案強制執行值區鎖定,請避免意外移動。
VPC Service Controls 安全範圍
VPC Service Controls 可讓使用者在Google Cloud 服務周圍設定以專案為基礎的安全範圍,以降低資料竊取風險。您無法遷移受 VPC Service Controls 安全範圍保護的專案。
如要從安全防護範圍移除專案,請參閱「管理 service perimeter」。VPC Service Controls 範圍內的專案可能不會遭到封鎖,無法在機構資源之間遷移。建立或更新 perimeter 後,這項規範最多適用一天。從服務範圍移除專案後,可能需要數小時才能遷移專案。
服務帳戶的情境感知存取權政策
情境感知存取權 可讓使用者根據網路、位置和時間等情境屬性,為服務帳戶定義 Google Cloud 資源的存取政策。如果專案至少有一項服務帳戶的情境感知存取權政策,就無法遷移。
如要刪除服務帳戶的情境感知存取權政策,請參閱「管理存取權繫結」。
建立或刪除政策時,請注意下列時間考量:
- 建立政策:新建立的情境感知存取權政策可能不會立即禁止遷移作業。政策建立後,傳播延遲最多可能需要 24 小時。
- 刪除政策:從專案中移除所有情境感知存取權政策後,可能需要數小時才能遷移專案。
Dedicated Interconnect
建議您一併遷移含有專屬互連網路物件的專案,以及含有 VLAN 連結的專案。在機構資源之間遷移專案後,含有專屬互連網路物件或連結至這些物件的 VLAN 連結的專案,仍會繼續運作。唯一限制是您無法在組織資源分割之間建立新的 VLAN 連結。
如果某個機構資源中的專案附加了專屬互連網路物件,或與該物件有 VLAN 連結,則對該專案所做的設定變更可能不會傳播至其他機構資源。建議您盡可能不要讓這類專案長期分散在機構資源之間。
Partner Interconnect
使用合作夥伴互連網路遷移專案時,不需要特別注意任何事項。
管理專案
管理專案是已啟用應用程式管理功能的資料夾中的 Google Cloud 專案,可做為所有以應用程式為中心的中繼資料的中央存放區。每個已啟用應用程式的資料夾只能包含一項管理專案。 管理專案會為應用程式庫和 API 提供基礎架構,包括計費、配額和存取控管機制。您無法遷移管理專案。
跨專案服務帳戶
在遷移跨專案服務帳戶的背景下,適用下列情況:
- 如果您遷移的專案已附加跨專案服務帳戶,該服務帳戶會在目標機構資源中繼續運作。即使有限制該專案網域的機構政策,該專案仍會繼續使用附加的服務帳戶。
- 如果您遷移的專案擁有附加至來源機構資源中其他專案的跨專案服務帳戶,該服務帳戶將繼續在目標機構資源中運作。不過,如果資源套用了網域限制機構政策,且該政策將資源限制在來源機構資源的網域中,您就無法在這些資源上使用該服務帳戶。
舉例來說,假設您在 organizations/12345678901 中有 project-A。這個專案已附加 serviceAccount-1,並設為跨專案服務帳戶。project-B 和 project-C,同樣在 organizations/12345678901 中,也請使用 serviceAccount-1。
您已將包含網域限制的機構政策套用至 project-C,因此該政策只允許存取 organizations/12345678901. 的網域。
如果您將 serviceAccount-1 新增至 project-C 的 IAM 繫結,然後將 project-A 遷移至 organizations/45678901234,服務帳戶就會正常運作。
如果您遷移 project-A 至 organizations/45678901234,然後嘗試將 serviceAccount-1 新增至 project-C 的 IAM 繫結,繫結會因違反網域限制條件而失敗。
客服案件
如果您遷移的專案有未結案的支援案件,請與 Google 支援聯絡人聯絡,告知對方已完成遷移。如果專案有待處理的 Google 客服案件,在 Google 支援團隊更新案件中繼資料,將案件指向新的機構資源前,專案都無法查看這些案件。
OAuth 同意畫面
如果專案設定為使用內部 OAuth 同意畫面,且您將專案遷移至其他組織資源,只有目標組織資源的成員可以授權要求。這項變更最多可能需要 24 小時才會生效。在此之前,來源機構資源的成員可以授權要求。
以下步驟說明如何確保來源機構資源的成員在遷移期間不會失去存取權。建議您在目標機構資源中為機構資源成員建立新使用者,這樣就不必變更 OAuth 同意畫面設定。
為避免來源機構資源的成員失去存取權,請採取下列措施:
將 OAuth 同意畫面更新為外部,而非內部。
標示為內部測試且使用私密資料的應用程式,不需要申請應用程式驗證。如果應用程式使用私密資料,當同意畫面更新為外部時,來源機構資源的使用者會在授權畫面之前看到未經驗證的應用程式畫面。為避免這種情況,請申請應用程式驗證,以便使用敏感或受限制的範圍。
OS 登入
如果來源專案已啟用 OS Login,您必須將 roles/compute.osLoginExternalUser 角色指派給有權存取該專案的所有主體。確保這些主體在目標機構資源中不會失去存取權。
虛擬機器 (VM) 執行個體的共用預留項目
在共用預留項目中,建立預留項目的專案 (擁有者專案) 或與預留項目共用的任何專案 (消費者專案),都可以透過建立 VM 執行個體來使用預留項目。您只能與擁有者專案所屬機構內的專案共用預留項目。
將擁有者或消費者專案遷移至其他機構時,會發生下列情況:
- 如果將擁有者專案遷移至其他機構,Compute Engine 會刪除擁有者專案建立的所有預留項目。執行中的 VM 執行個體不受影響。
- 如果將用戶專案遷移至其他機構,該專案就會停止使用先前機構中任何共用預留項目的資源。
詳情請參閱「共用預留項目的運作方式」。
將服務帳戶連結至資源
對於大多數 Google Cloud 服務,使用者必須擁有服務帳戶的 iam.serviceAccounts.actAs 權限,才能將該服務帳戶附加至資源。不過,為了簡化新手上路程序,某些服務過去允許使用者將服務帳戶附加至資源,即使使用者沒有模擬服務帳戶的權限也沒關係。詳情請參閱「要求將服務帳戶附加至資源的權限」。
如果客戶的來源機構資源具有舊版行為 (可附加服務帳戶,不必授予一般角色),但目的地機構資源沒有,請將「服務帳戶使用者」角色 (roles/iam.serviceAccountUser) 授予將這些服務帳戶附加至資源的使用者。如要瞭解將服務帳戶附加至資源時所需的權限,請參閱「服務帳戶驗證的角色」。
如要確認機構資源是否具有舊版行為,請按照下列步驟操作:
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
在頁面頂端的專案選取器中,選擇要檢查舊版狀態的機構資源。
在機構政策清單頂端的篩選器方塊中,輸入
constraints/appengine.enforceServiceAccountActAsCheck。如果清單中顯示
appengine.enforceServiceAccountActAsCheck機構政策,表示機構資源採用舊版行為。針對下列每個機構政策限制重複執行步驟 3 和 4:
appengine.enforceServiceAccountActAsCheckdataflow.enforceComputeDefaultServiceAccountCheckdataproc.enforceComputeDefaultServiceAccountCheckcomposer.enforceServiceAccountActAsCheck
如果出現任何這類機構政策限制,表示貴機構資源使用舊版行為。
如果來源機構資源具有舊版行為,而目的地沒有,請如上所述授予角色。如果來源和目的地機構資源都採用舊版行為,則無須採取任何行動,但建議強制執行政策,避免發生非預期的模擬行為。
遷移含有共用項目的專案
如果您將使用 BigQuery 共用 (舊稱共用) 的專案遷移至其他機構資源,可能會遇到一些錯誤。如要解決錯誤,請與支援團隊聯絡。
如果先前機構的資料交換資源未顯示在新機構的「共用管理員」頁面中,請使用共用 API 更新新機構中資料交換的任何欄位 (例如 description 欄位),觸發快取重新整理。
請使用 projects.locations.dataExchanges.patch 方法。
PATCH https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/dataExchanges/DATA_EXCHANGE_ID?update_mask=UPDATE_DX_FIELD -d { UPDATE_DX_FIELD:UPDATE_DX_VALUE }
更改下列內容:
- PROJECT_ID 是專案的專屬 ID。
- LOCATION 是資料交易所處的位置。
- DATA_EXCHANGE_ID 是資料交換的 ID。
- UPDATE_DX_FIELD 是要更新的欄位。可以是交易所的任何欄位,例如
description。 - UPDATE_DX_VALUE 是欄位的新值。這可能與該欄位的原始值相同。
使用備份和災難復原服務遷移專案
如要將專案遷移至其他機構資源,必須先停用備份和災難復原服務。目前停用這項服務時,您需要將中斷風險納入考量。遷移至新機構資源完成後,請重新啟用備份和災難復原服務。
遷移具有繼承 Privileged Access Manager 授權的專案
將專案遷移至其他機構前,建議您先撤銷該專案的所有有效範圍授權。範圍授予項目是指根據從資料夾或機構繼承的授權建立的授予項目,然後範圍限定為子專案。
將含有有效範圍授權的專案遷移至其他機構時,修改後的 IAM 政策會移至新機構,但管理該政策的授權仍會保留在原機構。也就是說,授權使用的 Privileged Access Manager 服務代理會失去修改新機構中資源 IAM 政策的權限。因此,任何撤銷或撤回該授權的操作都會失敗,且要求者會保留存取權,直到授權到期為止。
遷移含有政策標記分類的專案
如果遷移的專案包含 BigQuery 政策標記分類,遷移後這些分類可能不會顯示在Google Cloud 控制台中。這是因為分類仍與來源機構資源相關聯。
如要解決這個問題,請手動遷移分類:
使用 Export API 從來源專案匯出分類。
使用 Import API 將分類架構匯入目標專案。
將政策標記重新指派給相關的 BigQuery 資料表欄。
手動為新政策標記設定允許政策繫結。
後續步驟
如要瞭解如何執行遷移作業,請參閱「執行遷移作業」。