执行迁移

本页介绍了将 Google Cloud 项目从一个组织 资源迁移到另一个组织资源,或从无组织资源迁移到组织资源的步骤。

如需迁移项目,您必须确保自己拥有正确的 Identity and Access Management (IAM) 权限,并且在来源资源和目标资源上都配置了特定的组织政策。

准备工作

项目迁移是一项跨组织操作。为防止未经授权的资源移动,您必须满足以下要求。

所需角色

如需获得在组织资源之间迁移项目所需的权限,请让管理员向您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义 角色或其他预定义 角色来获取所需的权限。

必须在来源组织和目标组织中向同一用户账号授予这些角色。 这些预定义角色包含迁移项目所需的权限。 如需查看所需的确切权限,请展开所需权限 部分。

所需权限

迁移项目需要以下权限:

  • 待在组织资源之间迁移项目的 resourcemanager.projects.getIamPolicy
  • 待在组织资源之间迁移项目的 resourcemanager.projects.update
  • 项目的父级资源(文件夹或组织资源)上的 resourcemanager.projects.move
  • 如果目标资源是文件夹: 目标资源上的 resourcemanager.projects.move
  • 如果目标资源是组织资源: 目标资源上的 resourcemanager.projects.create
  • 如果要迁移未与组织关联的项目: 待迁移项目的 resourcemanager.projects.setIamPolicy

您还可以通过 自定义角色或其他预定义角色获取这些权限。

必需的组织政策

默认情况下,项目迁移受到限制。您必须通过在两个组织的根级层设置组织政策来明确允许导出和导入。如需配置迁移所需的组织政策,您必须在父级组织和目标组织中拥有 roles/orgPolicy.policyAdmin 角色。

  • 在来源组织资源上:设置 constraints/resourcemanager.allowedExportDestinations 政策。 将目标组织的 ID 添加为允许的值。

  • 在目标组织资源上:设置 constraints/resourcemanager.allowedImportSources 政策。 将来源组织的 ID 添加为允许的值。

执行迁移

授予权限并强制执行政策后,您可以使用 Google Cloud CLI 或 Resource Manager API 迁移项目。

gcloud

如需将项目迁移到另一个组织资源,请运行以下命令:

gcloud beta projects move PROJECT_ID \
    --organization ORGANIZATION_ID

您还可以使用以下命令将文件夹指定为目标资源:

gcloud beta projects move PROJECT_ID \
    --folder FOLDER_ID

替换以下字段:

  • PROJECT_ID:您要 迁移的项目的 ID 或编号。
  • ORGANIZATION_ID:您要将项目迁移到的组织资源的 ID。
  • FOLDER_ID:您要将项目迁移到的文件夹的 ID。

您只能指定一个目标(即文件夹或组织资源)。

API

借助 v1 Resource Manager API,您可以通过将项目的 parent 字段设置为目标资源的 ID,在组织资源之间迁移项目。

如需迁移项目,请执行以下操作:

  • 使用 projects.get() 方法获取 project 对象。
  • parent 字段更新为目标资源 ID。
  • 执行 projects.update() 方法。

以下代码段展示了这些步骤:

    project = crm.projects().get(projectId=flags.projectId).execute()
    project['parent'] = {
        'type': 'organization',
        'id': flags.organizationId
    }

    project = crm.projects().update(
    projectId=flags.projectId, body=project).execute()

迁移后的任务

成功迁移项目后,您必须执行多项迁移后任务,以确保运营的连续性、安全合规性和正确的结算。 迁移项目会更改其资源层次结构,从而影响继承的权限和组织级政策。

以下是一些您可以在迁移后完成的步骤:

  1. 政策验证:验证项目是否从其新父级继承了预期的组织政策。

  2. 访问权限控制:审核 IAM 角色,确保新组织中的用户拥有必要的访问权限。

  3. 结算:如果项目需要向目标组织结算,请更新结算账号。 这是一个可选步骤。如需了解详情,请参阅更改项目的结算账号在组织资源之间迁移结算账号

  4. 清理:撤消临时 Project Mover 角色,并移除 allowedExportDestinationsallowedImportSources 限制条件。

更改项目的结算账号

Cloud Billing 账号可以跨组织资源使用。将项目从一个组织资源移动到另一个组织资源不会影响结算,系统会对旧结算账号继续收费。不过,在组织资源之间迁移项目时,系统通常还会要求改用新的结算账号。

如需更改结算账号,请执行以下操作:

  1. 前往结算页面在 Google Cloud 控制台。
    前往“结算”页面
  2. 点击要更改的结算账号的名称。
  3. 与此结算账号相关联的项目 下,找到要迁移的 项目的名称,然后点击右侧的菜单按钮。
  4. 点击更改结算账号 ,然后选择新的结算账号。
  5. 点击设置账号

已经产生但尚未在交易历史记录中报告的费用将被计入原来的结算账号。这可能包括项目迁移之前最多两天的费用。

在组织资源之间迁移结算账号

结算账号可以从一个组织资源迁移到另一个组织资源,但这通常不是必须执行的步骤。大多数现有组织资源已经拥有应该改用的结算账号。

如果新结算账号未与任何组织资源关联,您必须在结算账号中获得 roles/billing.admin 角色,并在要与结算账号关联的组织资源中获得 roles/billing.adminroles/billing.creator 角色。

如果您需要迁移现有结算账号,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往结算页面
    前往“结算”页面
  2. 点击待迁移结算账号的名称。
  3. 账号管理 页面的顶部,点击更改组织
  4. 选择目标组织资源,然后点击确定

该结算账号现在已经与指定的组织资源相关联。

回滚迁移

Google Cloud 如果在迁移期间或之后出现问题,组织之间的迁移不会自动回滚。如果您需要恢复迁移,必须手动执行回滚。

如果您错误地迁移了项目,则可以将旧来源用作新目的地,将旧目的地作为新来源,再次执行迁移来回滚该操作。为此,您必须拥有必要的 IAM 权限并执行组织政策,就好像这是全新的迁移。

如需撤消迁移,请执行以下操作:

  1. 在组织政策(allowedExportDestinationsallowedImportSources)中交换来源和目标 ID。
  2. 重复执行迁移命令,将项目移回原始来源 ID。

后续步骤