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