本文提供遷移專案時處理特殊情況的相關資訊。遷移專案時,請確認您已取得專案、父項資源和目的地資源的必要 IAM 權限。
遷移未與機構資源建立關聯的專案
您可以將未與機構資源建立關聯的專案遷移至機構資源。但無法透過這個程序將專案還原成無機構狀態。如果專案與機構資源建立關聯,且您想將專案還原成無機構狀態,請與支援代表聯絡以尋求協助。
您必須在目的地機構資源中獲派 roles/resourcemanager.projectCreator
角色。
如果您沒有專案父項機構資源的 resourcemanager.organizations.get
權限,專案可能不會在Google Cloud 控制台的實際機構中如預期顯示。這可能會導致專案看起來未與任何機構資源建立關聯。詳情請參閱「限制使用者可見的專案」。
如要判斷專案是否與機構資源相關聯,請按照下列步驟操作:
gcloud
執行下列指令:
gcloud projects describe PROJECT_ID
將 PROJECT_ID 替換為要遷移的專案 ID。
如果輸出內容中沒有顯示父項資源,表示專案未與機構資源建立關聯。
如果輸出內容中顯示父項資源 (資料夾或機構資源),表示專案與機構資源相關聯。
遷移未與機構資源建立關聯的專案時,程序與在機構資源之間遷移專案類似,但不需要遷移計畫中的所有步驟。如要將專案遷移至機構資源,請按照下列步驟操作:
確認專案繼承的政策會帶來哪些影響。
視需要,在目標機構資源中建立專屬匯入資料夾。
如「指派權限」一文所述,為專案和目的地父項資源指派 Identity and Access Management 權限。
判斷是否需要變更帳單帳戶。
接著即可執行遷移作業。
主控台
如要將專案遷移至機構資源,請按照下列步驟操作:
在 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 Login,您必須將 roles/compute.osLoginExternalUser
角色指派給有權存取該專案的所有主體。
共用虛擬私有雲
共用 VPC 專案可依特定條件遷移。首先,來源機構資源中具有 roles/orgpolicy.policyAdmin
角色的使用者,必須在要匯出的專案父項上設定包含 constraints/resourcemanager.allowEnabledServicesForExport
限制的機構政策。這項限制應將 SHARED_VPC
列為allowed_value。
您不需要在遷移前停用共用虛擬私有雲。不過,您必須先遷移共用 VPC 主專案,再遷移所有服務專案。建議您比對來源和目標位置的機構資源防火牆規則,盡量減少潛在問題,並避免專案和網路在遷移期間發生任何停機情形。如果您在遷移其他服務專案時,將部分服務專案無限期留在來源機構資源中,我們無法保證網路的健康狀態。
如果遷移主專案,可以將其移回來源機構資源。主專案和服務專案分屬不同機構的時間長度沒有確切期限。不過,開始遷移服務專案後,您必須先遷移所有服務專案,才能再次遷移主專案。
自訂身分與存取權管理角色
您可以在機構資源層級建立自訂 Identity and Access Management 角色,精細控管資源存取權,但這些角色僅在建立時的機構資源中有效。如果您嘗試遷移專案,而該專案包含使用者與機構層級自訂 IAM 角色的允許政策繫結,遷移作業會因前提條件錯誤而失敗,並說明相關角色不存在於目標機構資源中。
如要列出機構資源層級的所有自訂 IAM 角色,請執行下列 Google Cloud CLI 指令:
gcloud iam roles list --organization ORGANIZATION_ID
其中 ORGANIZATION_ID
是您要列出角色的機構資源 ID。如要瞭解如何找出機構資源 ID,請參閱「建立及管理機構資源」一文。
如要取得機構資源中自訂 Identity and Access Management 角色的相關資訊,請執行下列 Google Cloud CLI 指令:
gcloud iam roles describe --organization ORGANIZATION_ID \ ROLE_ID
其中:
ORGANIZATION_ID
是角色父項機構資源的機構資源 ID。ROLE_ID
是您要說明的角色名稱。
如要解決先決條件錯誤,請為專案繼承的每個機構層級自訂角色,建立同等的專案層級自訂角色。然後移除參照機構層級自訂角色的 IAM 角色繫結。
專案遷移完成後,您可以更新允許政策,在目的地機構資源中使用機構層級的自訂角色。
如要進一步瞭解自訂角色,請參閱「建立及管理自訂角色」。
值區鎖定功能
Cloud Storage 值區鎖定可讓您在 Cloud Storage 值區中設定資料保留政策,控管值區中的物件必須保留多久。bucket 鎖定功能會使用防刪除鎖定保護 bucket,防止專案遭意外刪除。
遷移專案時,保留政策和防刪除鎖定會一併遷移,但請注意,如果遷移的專案強制執行值區鎖定,請避免意外移動。
VPC Service Controls 安全範圍
VPC Service Controls 可讓使用者在Google Cloud 服務周圍設定以專案為準的安全範圍,降低資料遭竊風險。您無法遷移受 VPC Service Controls 安全範圍保護的專案。
如要從安全範圍移除專案,請參閱「管理服務範圍」。VPC Service Controls 範圍內的專案可能不會遭到封鎖,無法在機構資源之間遷移。這項規範適用於建立或更新周邊後最多一天。從服務範圍移除專案後,可能需要數小時才能遷移專案。
專屬互連網路
建議您一併遷移含有專屬互連網路物件的專案,以及含有 VLAN 連結的專案。在機構資源之間遷移後,專案中連線至專屬互連網路物件或 VLAN 連結的物件,仍會繼續運作。唯一限制是您無法在機構資源分割之間建立新的 VLAN 連結。
如果機構資源中的專案已附加專屬互連網路物件,或有該物件的 VLAN 連結,則對該專案所做的設定變更可能不會傳播至其他機構資源。建議您盡可能不要讓這類專案長期分散在機構資源之間。
合作夥伴互連網路
使用合作夥伴互連網路遷移專案時,不需要特別注意任何事項。
跨專案服務帳戶
在遷移跨專案服務帳戶的背景下,適用下列情況:
- 如果您遷移的專案附加了跨專案服務帳戶,該服務帳戶將繼續在目標機構資源中運作。即使有限制該專案網域的機構政策,該專案仍會繼續使用附加的服務帳戶。
- 如果您遷移的專案擁有附加至來源機構資源中其他專案的跨專案服務帳戶,該服務帳戶將繼續在目標機構資源中運作。不過,如果資源套用了網域限制機構政策,且該政策將資源限制在來源機構資源的網域中,您就無法在這些資源上使用該服務帳戶。
舉例來說,假設您有 project-A
,位於 organizations/12345678901
中。這個專案已附加 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.enforceServiceAccountActAsCheck
dataflow.enforceComputeDefaultServiceAccountCheck
dataproc.enforceComputeDefaultServiceAccountCheck
composer.enforceServiceAccountActAsCheck
如果出現任何這類機構政策限制,表示貴機構資源使用舊版行為。
如果來源機構資源具有舊版行為,而目的地沒有,請如上所述授予角色。如果來源和目的地機構資源都採用舊版行為,則無須採取任何行動,但建議強制執行政策,避免發生非預期的模擬行為。
遷移使用 BigQuery 共用功能的專案
如果將使用 BigQuery sharing (舊稱 Analytics Hub) 的專案遷移至其他機構資源,可能會發生錯誤。如要解決錯誤,請與支援團隊聯絡。
如果舊機構的資料交換資源未顯示在新機構的「共用管理員」頁面中,請使用 Analytics Hub API 更新新機構的資料交換。
請使用 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 是要更新的欄位。
- UPDATE_DX_VALUE 是欄位的新值。
使用備份和災難復原服務遷移專案
如要將專案遷移至其他機構資源,必須先停用備份和災難復原服務。目前停用這項服務時,您需要將停機風險納入考量。遷移至新機構資源完成後,請重新啟用備份和災難復原服務。
後續步驟
如要瞭解如何執行遷移作業,請參閱「執行遷移作業」。