在組織之間遷移 Google Cloud 專案時,某些資源和設定需要額外步驟,才能維持服務連續性並避免設定衝突。這些特殊情況包括沒有組織資源的專案、Shared VPC 資源、自訂角色和跨專案服務帳戶。遷移專案前,請確認您具備專案、其上層資源和目的地資源的必要 Identity and Access Management (IAM) 權限。
遷移未與組織資源建立關聯的專案
您可以將建立時未與組織資源建立關聯的專案,遷移至組織資源的階層中。但無法撤銷這項程序。如要將專案還原為「無組織」,請向 Cloud Customer Care 尋求協助。
如要遷移未與組織資源建立關聯的專案,您必須具備該專案的 roles/resourcemanager.projectIamAdmin 角色。您也必須具備目的地組織資源的 roles/resourcemanager.projectCreator 角色。
如果您沒有上層組織資源的 resourcemanager.organizations.get 權限,專案可能不會如預期顯示在 Google Cloud 控制台的組織下方。這可能會讓人誤以為專案未與組織資源建立關聯。詳情請參閱「限制使用者的專案瀏覽權限」。
如要判斷專案是否與組織資源相關聯,請按照下列步驟操作:
gcloud
執行下列指令:
gcloud projects describe PROJECT_ID
將 PROJECT_ID 替換為要遷移的專案 ID。
如果輸出內容中「未」顯示 parent 資源,則表示專案未與組織資源建立關聯。
如果輸出內容顯示上層資源 (資料夾或組織資源),即表示專案與組織資源相關聯。
遷移未與組織資源建立關聯的專案,與在組織資源之間遷移專案的程序類似,但不需要執行遷移計畫中的所有步驟。如要將專案遷移至組織資源,請按照下列步驟操作:
接著,您可以使用下列任一方法執行遷移作業:
控制台
在 Google Cloud 控制台中,開啟「IAM & Admin」(IAM 與管理) >「Settings」(設定) 頁面。
使用專案挑選器選取專案 (無組織)。
按一下「設定」頁面頂端的「遷移」。
在隨即顯示的對話方塊中,選取要將專案遷移至哪個組織資源,然後按一下「Migrate」(遷移)。
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
}
如果來源專案已啟用 Cloud OS Login API,請將 roles/compute.osLoginExternalUser 角色指派給有權存取該專案的所有主體。
Shared VPC
在特定條件下,您可以遷移 Shared VPC 專案。首先,在來源組織資源中具備 roles/orgpolicy.policyAdmin 角色的使用者,必須在要匯出的專案父項上,設定包含 constraints/resourcemanager.allowEnabledServicesForExport 限制的組織政策。這項限制應將 SHARED_VPC 列為 allowed_value。
遷移前不必停用共用虛擬私有雲。不過,您必須先遷移 Shared VPC 主專案,再遷移所有服務專案。建議您比對來源和目標組織資源之間的防火牆規則,盡可能減少潛在問題並避免停機。如果您在遷移其他服務專案時,將部分服務專案留在來源組織資源中,我們無法保證網路的健康狀態。
如果遷移主專案,可以將其移回來源組織資源。主專案和服務專案可以位於不同組織,沒有確切期限。不過,一旦開始遷移服務專案,就必須先遷移所有服務專案,才能再次遷移主專案。
自訂 IAM 角色
自訂 Identity and Access Management 角色可在組織資源層級精細控管資源存取權,但僅適用於建立這些角色的組織資源。如果遷移的專案含有繫結至組織層級自訂 IAM 角色的允許政策,遷移作業就會失敗。錯誤訊息會說明目的地組織資源中沒有該角色。
如要列出組織資源中的所有自訂 IAM 角色,請執行下列指令:
gcloud iam roles list --organization ORGANIZATION_ID
將 ORGANIZATION_ID 替換為組織資源的 ID。詳情請參閱「取得組織資源 ID」。
如要取得組織資源中自訂 Identity and Access Management 角色的資訊,請執行下列指令:
gcloud iam roles describe --organization ORGANIZATION_ID \
ROLE_ID
更改下列內容:
- ORGANIZATION_ID:組織資源的 ID
- ROLE_ID:要說明的角色名稱
如要解決這項錯誤,請為每個繼承的組織層級自訂角色,建立等效的專案層級自訂角色。然後移除參照組織層級自訂角色的 IAM 角色繫結。
遷移專案後,您可以更新允許政策,在目標組織資源中使用組織層級的自訂角色。
詳情請參閱「建立及管理自訂角色」。
值區鎖定功能
Cloud Storage bucket 鎖定可讓您設定 Cloud Storage bucket 的資料保留政策。這項政策會規範物件的保留時間。bucket 鎖定功能受到暫時停用保護,可防止意外刪除專案。
遷移期間,保留政策和防刪除鎖定會與專案一併保留。防刪除鎖定不會阻止您遷移專案。
VPC Service Controls 安全範圍
VPC Service Controls 會在Google Cloud 服務周圍設定以專案為基礎的安全 perimeter,降低資料竊取風險。您無法遷移受 VPC Service Controls 安全範圍保護的專案。
如要從安全範圍中移除專案,請參閱「管理 service perimeter」。將專案從 service perimeter 移除後,可能需要數小時或最多一天的時間才能遷移專案。
服務帳戶的情境感知存取權政策
情境感知存取權可讓使用者根據網路、位置和時間等情境屬性,為服務帳戶定義 Google Cloud 資源的存取政策。如果專案至少有一項服務帳戶的情境感知存取權政策,則無法遷移。
如要刪除服務帳戶的情境感知存取權政策,請參閱「管理存取權繫結」。
建立或刪除政策時,請注意下列時間考量:
- 建立政策:新建立的情境感知存取權政策可能不會立即封鎖遷移作業。政策建立後,這項傳播延遲最多可能持續 24 小時。
- 刪除政策:從專案中移除所有情境感知存取權政策後,可能需要數小時才能遷移專案。
Dedicated Interconnect
建議您一併遷移含有 Dedicated Interconnect 物件的專案,以及含有 VLAN 連結的專案。在組織資源之間遷移後,含有這些物件的專案仍可正常運作。不過,在分割期間,您無法在組織資源之間建立新的 VLAN 連結。
對分割專案所做的設定變更,可能不會套用至組織資源。建議您不要長時間分割專案。
Partner Interconnect
遷移使用 Partner Interconnect 的專案時,沒有任何特別注意事項。使用 Partner Interconnect 遷移專案時,不需要特別考量任何事項。
管理專案
管理專案是已啟用應用程式管理功能的資料夾中的 Google Cloud 專案,可做為所有應用程式中心中繼資料的中央存放區。每個已啟用應用程式管理功能的資料夾,都只能有一項管理專案。管理專案為應用程式庫和 API 提供基礎架構,包括計費、配額和存取控管機制。無法遷移管理專案。
跨專案服務帳戶
遷移跨專案服務帳戶時,適用下列情況:
- 如果您遷移的專案附加了跨專案服務帳戶,該服務帳戶會繼續在目標組織資源中運作。即使組織政策限制網域,這項設定仍適用。
- 如果您遷移的專案擁有其他專案使用的跨專案服務帳戶,該服務帳戶會繼續運作。不過,如果資源已套用網域限制組織政策,且該政策將資源限制在來源組織資源網域,則無法使用這項功能。
舉例來說,假設 organizations/12345678901 中的 project-A 附加了 serviceAccount-1。同一組織中的 project-B 和 project-C 也使用 serviceAccount-1。
project-C 的組織政策僅允許 organizations/12345678901 網域。
如果您在將 project-A 遷移至 organizations/45678901234 之前,將 serviceAccount-1 新增至 project-C 的 IAM 繫結,服務帳戶就會運作。
如果您將 project-A 遷移至 organizations/45678901234,然後嘗試將 serviceAccount-1 新增至 project-C 的 IAM 繫結,繫結會因違反網域限制而失敗。
客服案件
如果您遷移的專案有待處理的客服案件,請在遷移後通知 Cloud Customer Care。在 Cloud Customer Care 將中繼資料更新至新組織資源前,您無法查看這些客服案件。
OAuth 同意畫面
如果專案使用內部 OAuth 同意畫面,則遷移後只有目的地組織資源成員可以授權要求。這項變更最多需要 24 小時才會生效。在此之前,來源組織資源成員仍可授權要求。
為確保來源成員不會失去存取權,請考慮在目標組織資源中建立新使用者,或更新 OAuth 同意畫面設定:
將 OAuth 同意畫面從內部更新為外部。
如果應用程式使用機密資料,請針對機密或受限制的範圍申請應用程式驗證。否則使用者會看到「未經驗證的應用程式」畫面。
Cloud OS Login API
如果來源專案已啟用 Cloud OS Login API,請將 roles/compute.osLoginExternalUser 角色指派給有權存取該專案的所有主體。確保這些主體不會失去目的地組織資源的存取權。
虛擬機器 (VM) 執行個體的共用預留項目
在共用預留項目中,建立預留項目的專案 (擁有者專案) 或任何共用預留項目的專案 (用戶專案),都可以透過建立 VM 執行個體來使用預留項目。您只能與擁有者專案所屬機構中的專案共用預留項目。
遷移擁有者或消費者專案時,會發生以下情況:
- 如果您遷移擁有者專案,Compute Engine 會刪除該專案建立的所有預留項目。運作中的 VM 執行個體不受影響。
- 如果遷移用戶專案,該專案會停止使用先前組織中任何共用預留項目的資源。
詳情請參閱「共用預留項目的運作方式」。
將服務帳戶附加至資源
對於大多數 Google Cloud 服務,您需要 iam.serviceAccounts.actAs 權限,才能將服務帳戶附加至資源。不過,某些服務過去允許在沒有明確模擬權限的情況下執行這項操作。詳情請參閱「要求將服務帳戶附加至資源的權限」。
如果來源組織資源有這項舊版行為,但目的地沒有,請將 roles/iam.serviceAccountUser 角色授予附加這些服務帳戶的使用者。如要進一步瞭解權限,請參閱「服務帳戶驗證角色」。
如要檢查組織資源是否具有舊版行為,請按照下列步驟操作:
前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面:
在資源選取器中,選擇要檢查的組織資源。
在篩選器方塊中輸入
constraints/appengine.enforceServiceAccountActAsCheck。如果顯示政策,表示組織資源具有舊版行為。
針對下列各項限制,重複執行步驟 3 和 4:
appengine.enforceServiceAccountActAsCheckdataflow.enforceComputeDefaultServiceAccountCheckdataproc.enforceComputeDefaultServiceAccountCheckcomposer.enforceServiceAccountActAsCheck
如果出現上述任何限制,表示組織資源採用舊版行為。如果兩個組織資源都使用舊版行為,則不需採取任何行動,但建議強制執行政策,防止意外模擬。
遷移具備 BigQuery 共用功能的專案
如果將使用 BigQuery sharing 功能的專案遷移至其他組織資源,可能會發生錯誤。如要解決問題,請與 Cloud Customer Care 團隊聯絡。
如果新組織的「Sharing administrator」(共用管理員) 頁面未顯示舊組織的資料交換資源,請使用 BigQuery Sharing 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:更新後的值
備份和災難復原服務
將專案遷移至其他組織資源前,請先停用備份和災難復原服務。請考量停用服務時可能發生的中斷風險。遷移完成後,請重新啟用備份和災難復原服務。
workload identity federation
Workload Identity Federation 可讓您將 Google Cloud 資源的存取權授予地端部署或多雲端工作負載。Workload Identity Federation 集區是專案範圍的資源。
遷移專案時,專案中設定的 workload identity pool 和提供者也會一併遷移。您不必採取任何額外行動,即可繼續存取使用這些集區的工作負載。
標記
標記是附加至資源的鍵/值組合。在組織層級建立的標記不會遷移。
如果專案使用組織層級標記來繫結或限制政策,您必須在目的地組織資源中重新建立標記鍵和值,並重新附加至遷移的專案。
遷移繼承 Privileged Access Manager 授予項目的專案
建議您在遷移專案前,先撤銷該專案中所有有效的範圍授權。範圍授權是根據從資料夾或組織繼承的授權建立,然後限定範圍至子項專案。
遷移具有有效範圍授權的專案時,IAM 政策會移至新組織,但管理該政策的授權仍會留在原組織。Privileged Access Manager 服務代理會失去修改新組織 IAM 政策的權限。因此,對該授權執行的任何撤銷或撤回作業都會失敗,要求者會保留存取權,直到授權到期為止。