分析專案遷移

本指南說明如何使用 Cloud Asset Inventory Analyze Move API,在實際遷移專案前,從重要政策系統清單中取得警告和阻礙的詳細報表。

啟用 API

選取或建立專案做為 API 消費者專案,並啟用 Cloud Asset API

這個消費者專案可以與您打算分析及遷移的專案不同。消費者專案會用於產生憑證,以提出 API 要求。

下一節說明您打算分析的來源專案必須授予的必要角色和權限。

所需權限

如要執行專案遷移分析,您需要具備可授予 cloudasset.assets.analyzeMove 權限的角色,例如「Cloud Asset Viewer」或「Viewer」

如要接收服務分析,您也需要與這些服務相關的角色。 包括:

  • 如要查看來源專案父項機構資源中繼承的允許政策,您需要來源專案父項機構資源的 resourcemanager.organizations.getIamPolicy 權限。

  • 如要查看來源專案父項資料夾沿用的允許政策,您需要來源專案父項資料夾的 resourcemanager.folders.getIamPolicy 權限。

  • 如要查看專案的允許政策,您必須具備來源專案的 resourcemanager.projects.getIamPolicy 權限。

  • 如要查看從來源專案父項機構資源沿用的拒絕政策,您需要來源專案父項機構資源的 iam.denypolicies.get 權限。

  • 如要查看這個專案繼承的機構政策,您必須具備來源專案的 orgpolicy.policy.get 權限。

  • 如要查看這個專案中繼承的 Compute Engine 防火牆政策,您需要來源資料夾或機構資源的 compute.organizations.setSecurityPolicy 權限。

  • 如要查看這個專案中繼承的標記,您必須具備來源專案或其祖先節點的 resourcemanager.hierarchyNodes.listEffectiveTags 權限。

執行分析

您可以使用 Google Cloud CLI 或 API,分析資源從資源階層中目前位置的遷移作業。

gcloud

如要分析從資源階層結構中目前位置遷移專案的影響,請使用 gcloud asset analyze-move 指令:

gcloud asset analyze-move --project=PROJECT_ID \
  (--destination-folder=FOLDER_ID \
    | --destination-organization=ORGANIZATION_ID)

如要分析將專案移至其他資料夾的影響,請執行含有 --destination-folder 的指令:

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-folder=FOLDER_ID

如要分析將專案移至其他機構的影響,請執行 --destination-organization 指令:

gcloud asset analyze-move --project=PROJECT_ID \
  --destination-organization=ORGANIZATION_ID

其中:

  • PROJECT_ID 是要遷移的專案專屬 ID。例如:--myProject123

  • FOLDER_ID 是要執行分析的目的地資料夾的數值 ID。例如:45678901123

  • ORGANIZATION_ID 是要執行分析的目的地機構的數值機構 ID。例如:78901123456

API

如要分析從資源階層中目前位置遷移專案的影響,但不要執行遷移作業,請使用 cloudasset.analyzeMove 方法:

GET https://cloudasset.googleapis.com/v1/{resource=*/*}: \
  analyzeMove?destinationParent=DESTINATION_NAME

其中:

  • resource 是要執行分析的資源名稱。系統僅支援專案資源,因此必須是專案 ID 或專案編號。例如 projects/my-project-idprojects/12345

  • DESTINATION_NAME 是要重新指派目標資源父項的Google Cloud 資料夾或機構資源名稱。系統會分析將資源移至指定目的地父項的影響。目的地必須是資料夾編號或機構資源編號。例如 folders/123organizations/123

移動分析回應

您從 Move Analysis API 收到的回應會依服務名稱分組。 每項服務下方都會列出適用於這個專案遷移作業的警告和阻礙。這項分析傳回的任何阻礙,都表示如果您在解決這些問題前繼續遷移專案,專案遷移作業會在執行階段遭到封鎖。

使用手冊。

排解錯誤

如果 Move Analysis API 傳回錯誤,其中會包含標準 gRPC 代碼,以及說明 Move Analysis API 無法分析專案原因的訊息。

下表說明 Move Analysis API 可能傳回的錯誤代碼:

錯誤名稱 錯誤代碼 說明
引數無效 3 如果您在專案中呼叫 API 時使用無效引數 (例如資源名稱不正確),系統就會傳回這項錯誤。
權限遭拒 7 如果沒有執行分析所需的權限,或來源專案不存在,則會傳回這項錯誤。
內部 <0x0 13 如果呼叫身分與存取權管理或機構政策等政策系統時發生問題,就會傳回這個值。這並不表示無法遷移,請檢查服務是否中斷,然後重試分析。
無法使用 14 如果內部系統未保持同步,就會傳回這個錯誤。 這不代表無法遷移,您可以重新分析。
未經驗證 16 如果未提供正確的憑證來執行這項分析,系統就會傳回這項錯誤。

錯誤訊息示例

以下範例顯示使用者沒有要遷移專案的 cloudasset.assets.analyzeMove 權限時,系統傳回的錯誤碼:

{
  "error": {
  "code": 403,
  "message": "Failed to fetch Project: projects/test-project-service-3 to perform
              move analysis.",
  "status": "PERMISSION_DENIED"}
}

部分政策系統可能無法分析資源移動作業。下列範例說明使用者沒有要遷移專案的 compute.organizations.setSecurityPolicy 權限時,階層式防火牆服務傳回的錯誤:

{
  "moveAnalysis": [{
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "name hidden",
    "analysis": {
      "warnings": [{
        "detail": "details hidden"
      }]
    }
  }, {
    "displayName": "Hierarchical Firewall",
    "error": {
      "code": 7,
      "message": "Failed to retrieve inherited security policies to perform
                  analysis. Required 'compute.organizations.setSecurityPolicy'
                  permission for {resource ID}"
     }}]
}

後續步驟

遷移分析 API 會提供詳細資料,協助您在將專案從一個機構資源移至另一個機構資源時,減少阻礙和其他問題。如要進一步瞭解如何在機構資源之間遷移專案,請參閱遷移專案