瞭解如何處理遷移專案時的特殊情況。遷移專案前,請確保您在專案、上層資源和目的地資源中,具備必要的 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 資源,表示專案未與機構資源建立關聯。
如果輸出內容中顯示父項資源 (資料夾或機構資源),表示專案與機構資源相關聯。
遷移未與機構資源建立關聯的專案,與在機構資源之間遷移專案的程序類似,但不需要遷移計畫中的所有步驟。如要將專案遷移至機構資源,請按照下列步驟操作:
確認專案將沿用的政策對專案的影響。
視需要,在目標機構資源中建立專屬匯入資料夾。
如「指派權限」一文所述,為專案和目的地父項資源指派 Identity and Access Management 權限。
判斷是否需要變更帳單帳戶。
接著,您可以使用下列任一方法執行遷移作業:
控制台
在 Google Cloud 控制台中,開啟「IAM & Admin」(IAM 與管理) >「Settings」(設定) 頁面。
使用專案挑選器選取專案 (設有 無機構)。
按一下「設定」頁面頂端的「遷移」。
在隨即顯示的對話方塊中,選取要遷移專案的機構資源,然後按一下「遷移」。
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 登入 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 Lock 可讓您在 Cloud Storage bucket 中設定資料保留政策。這項政策會控管物件的保留時間。bucket 鎖定功能會使用防刪除鎖定保護,防止專案遭意外刪除。
遷移期間,專案會保留保留政策和防刪除鎖定。防刪除鎖定不會阻止您遷移專案。
VPC Service Controls 安全範圍
VPC Service Controls 會在Google Cloud 服務周圍設定以專案為準的安全範圍,藉此降低資料竊取風險。您無法遷移受 VPC Service Controls 安全範圍保護的專案。
如要從安全防護範圍移除專案,請參閱「管理 service perimeter」。從服務範圍移除專案後,可能需要數小時或最多一天才能遷移專案。
服務帳戶的情境感知存取權政策
情境感知存取權 可讓使用者根據網路、位置和時間等情境屬性,為服務帳戶定義 Google Cloud 資源的存取權政策。如果專案至少有一項服務帳戶的情境感知存取權政策,就無法遷移。
如要刪除服務帳戶的情境感知存取權政策,請參閱「管理存取權繫結」。
建立或刪除政策時,請注意下列時間考量:
- 政策建立:新建立的情境感知存取權政策可能不會立即禁止遷移作業。政策建立後,傳播延遲時間最長可能達 24 小時。
- 刪除政策:從專案中移除所有情境感知存取權政策後,可能需要幾小時才能遷移專案。
Dedicated Interconnect
建議您一併遷移含有 Dedicated Interconnect 物件和 VLAN 連結的專案。在組織資源之間遷移專案後,含有這些物件的專案仍可正常運作。不過,在機構資源分割期間,您無法在機構資源之間建立新的 VLAN 連結。
對分割專案所做的設定變更,可能不會傳播至機構資源。建議您不要長期將專案分割。
Partner Interconnect
遷移使用 Partner Interconnect 的專案時,沒有特別注意事項。使用 Partner Interconnect 遷移專案時,不需要特別注意任何事項。
管理專案
管理專案是已啟用應用程式管理功能的資料夾中的 Google Cloud 專案,可做為所有以應用程式為中心的中繼資料的中央存放區。每個已啟用應用程式的資料夾只能包含一項管理專案。 管理專案會為應用程式庫和 API 提供基礎架構,包括計費、配額和存取控管機制。您無法遷移管理專案。
跨專案服務帳戶
遷移跨專案服務帳戶時,適用下列情況:
- 如果您遷移的專案已附加跨專案服務帳戶,該服務帳戶會繼續在目標機構資源中運作。即使機構政策限制網域,仍適用這項政策。
- 如果您遷移的專案擁有其他專案使用的跨專案服務帳戶,該服務帳戶仍可正常運作。不過,如果資源套用了網域限制組織政策,且該政策將資源限制在來源機構資源網域,您就無法使用這項功能。
舉例來說,假設 project-A 中的 organizations/12345678901 附加了 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 登入 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 sharing 功能的專案
如果您將使用 BigQuery sharing 的專案遷移至其他機構資源,可能會遇到錯誤。如要解決這些問題,請與 Cloud Customer Care 團隊聯絡。
如果新機構的「共用管理員」頁面未顯示先前機構的資料交換資源,請使用 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 政策的權限。因此,任何撤銷或撤回該授權的作業都會失敗,且要求者會保留存取權,直到授權到期為止。