分析项目迁移

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本指南介绍了如何使用 Cloud Asset Inventory Analyze Move API,在实际迁移项目之前从重要政策系统的列表中获取警告和拦截的详细报告。

启用 API

选择或创建项目作为 API 使用方项目,启用 Cloud Asset API

此使用方项目可能与您打算分析和迁移的项目不同。使用方项目将用于生成凭据以发出 API 请求。

下一部分介绍了在您计划分析的源项目上必须授予的必需角色和权限。

分配权限

如需执行项目迁移分析,您需要一个授予 cloudasset.assets.analyzeMove 权限的角色,例如 Cloud Asset ViewerViewer

如需接收服务的相关分析,您还需要与这些服务相关的角色。这些权限包括下列各项:

  • 如果您希望查看源项目的父级组织的继承 IAM 政策,则需要源项目的父级组织的 resourcemanager.organizations.getIamPolicy 权限。

  • 如果您想要查看从源项目的父级文件夹继承的 IAM 政策,则需要源项目的父级文件夹的 resourcemanager.folders.getIamPolicy 权限。

  • 如果您想要查看项目的 IAM 政策,则需要源项目的 resourcemanager.projects.getIamPolicy 权限。

  • 如果您想要查看继承自此项目的组织政策,则需要源项目的 orgpolicy.policy.get 权限。

  • 如果您想要查看在此项目中继承的 Compute Engine 防火墙政策,则需要源文件夹或组织的 compute.organizations.setSecurityPolicy 权限。

执行分析

您可以使用 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。例如 projects/12345678901

  • FOLDER_ID 是要执行分析的目标文件夹 ID。例如 --destination-folder=45678901123

  • ORGANIZATION_ID 是要执行分析的目标组织 ID。例如 --destination-organization=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 如果您没有执行分析所需的权限或源项目不存在,则系统会返回此错误消息。
内部 13 如果对 Identity and Access Management 或组织政策等政策系统的调用出现问题,则返回此错误代码。这并不表示不能迁移,您可以在检查服务是否中断后重试分析。
不可用 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}"
     }}]
}

后续步骤

Move Analysis API 提供了详细信息,可帮助您在将项目从一个组织迁移到另一个组织时缓解拦截和其他问题。如需详细了解如何在组织之间迁移项目,请参阅项目迁移