分析專案遷移

Cloud Asset Inventory Analyze Move API 可讓您在移動專案前,產生重要政策系統的警告和封鎖工具詳細報表。這份報表可協助您找出潛在的政策衝突,並在開始遷移前解決問題。

啟用 API

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

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

下一節將說明您必須在要分析的來源專案中,授予哪些必要角色和權限。

所需權限

如要執行專案移動分析,您必須具備可授予 cloudasset.assets.analyzeMove 權限的角色,例如 Cloud Asset 檢視者或檢視者。您可以在專案、上層資料夾或組織資源授予這個角色。

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

  • 如要查看從來源專案上層組織資源繼承的允許政策,您必須具備來源專案上層組織資源的 resourcemanager.organizations.getIamPolicy 權限。

  • 如要查看從來源專案上層資料夾繼承的允許政策,您必須具備來源專案上層資料夾的 resourcemanager.folders.getIamPolicy 權限。

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

  • 如要查看從來源專案上層組織資源繼承的拒絕政策,您必須具備來源專案上層組織資源的 iam.denypolicies.get 權限。

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

  • 如要查看這項專案繼承的 Compute Engine 防火牆政策,您必須具備來源資料夾或組織資源的 compute.organizations.setSecurityPolicy 權限。雖然這項權限包含「set」,但仍須具備這項權限,才能擷取及查看繼承的安全性政策。

  • 如要查看這項專案繼承的標記,您必須具備來源專案或其祖系節點的 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-id 或 projects/12345。

  • DESTINATION_NAME 是Google Cloud 資料夾或組織資源的名稱,用於重新設定目標資源的上層。系統會分析將資源移至指定目的地父項的影響。目的地必須是資料夾編號或組織資源編號。例如 folders/123 或 organizations/123。

移動分析回應

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

排解錯誤

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

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

錯誤名稱 錯誤代碼 說明
Invalid argument 3 如果您在專案中呼叫 API 時使用了無效引數 (例如不正確的資源名稱),就會傳回這個錯誤。
權限遭拒 7 如果沒有執行分析所需的權限,或來源專案不存在,就會傳回這個錯誤。
內部 13 如果呼叫政策系統 (例如 Identity and Access Management 或組織政策) 時發生問題,就會傳回這個錯誤。這不代表無法遷移,您可以在確認服務是否中斷後,重新嘗試分析。
無法使用 14 如果內部系統未同步,就會傳回這個錯誤。 這不代表無法遷移,您可以重試分析。
Unauthenticated 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}"
     }}]
}

後續步驟

Move Analysis API 提供詳細資料,協助您在將專案從某個組織資源移至其他組織資源時,緩解阻礙和其他問題。如要進一步瞭解如何在組織資源之間遷移專案,請參閱「在組織資源之間遷移專案」。