分析项目迁移

本指南介绍了如何使用 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 权限。

执行分析

您可以使用 gcloud 命令行工具或 API 分析资源从资源层次结构中当前位置的迁移。

gcloud

如需分析项目的迁移影响,请使用 gcloud asset analyze-move 命令:

gcloud asset analyze-move --project=PROJECT_ID \
  --DESTINATION_ID

其中:

  • PROJECT_ID 是您要迁移的项目的唯一 ID。例如 projects/12345678901

  • DESTINATION_ID 是要将项目迁移到的目标组织或文件夹的资源类型和 ID。例如 --destination-folder=45678901123--destination-organization=78901123456

API

如需分析项目的迁移影响,请使用 cloudasset.analyzeMove 方法:

GET https://cloudasset.googleapis.com/v1/resource=projects/ \
  PROJECT_NAME:analyzeMove?destinationParent=DESTINATION_ID

其中:

  • PROJECT_NAME 是要迁移的项目的名称。例如 foo-project

  • DESTINATION_ID 是您要向其中迁移项目的目标组织或文件夹的 ID。例如 folders/45678901123--organizations/78901123456

迁移分析响应

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