本指南說明如何使用 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-id
或projects/12345
。DESTINATION_NAME
是要重新指派目標資源父項的Google Cloud 資料夾或機構資源名稱。系統會分析將資源移至指定目的地父項的影響。目的地必須是資料夾編號或機構資源編號。例如folders/123
或organizations/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 會提供詳細資料,協助您在將專案從一個機構資源移至另一個機構資源時,減少阻礙和其他問題。如要進一步瞭解如何在機構資源之間遷移專案,請參閱遷移專案。