排查默认服务账号问题


为了访问 Google Cloud 资源,Compute Engine 虚拟机 (VM) 实例使用服务账号。如果您不小心删除了 Compute Engine 默认服务账号,则在虚拟机上运行的应用可能无法调用 Google Cloud API。

本文档介绍如何在 Compute Engine 默认服务账号被删除后恢复它。

恢复 Compute Engine 默认服务账号

在您删除服务账号后,Identity and Access Management (IAM) 会在 30 天后永久移除该服务账号。如果您不小心删除了 Compute Engine 默认服务账号,Google Cloud 在服务账号被永久移除后将无法恢复该服务账号,并且虚拟机将无法再访问项目中的资源。在这种情况下,如果您要为虚拟机分配 Compute Engine 默认服务账号,请创建一个服务账号,并将其设置为默认服务账号。

如需获得执行此任务所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:

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

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

如需恢复已删除的 Compute Engine 默认服务账号,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到日志浏览器页面。

    转到日志浏览器

    使用以下查询来验证 Compute Engine 默认服务账号的删除时间:

    resource.type="service_account"
    protoPayload.methodName="google.iam.admin.v1.DeleteServiceAccount"
    "PROJECT_NUMBER-compute@developer.gserviceaccount.com"
    

    PROJECT_NUMBER 替换为您的项目编号。

    如果默认服务账号的删除时间不超过 30 天

    使用 undelete 命令恢复服务账号。如需了解详情,请参阅恢复删除的服务账号

    如果默认服务账号的删除时间超过 30 天

    1. 创建服务账号或选择现有服务账号,并将其设置为新的 Compute Engine 默认服务账号。
  2. 如果您希望虚拟机使用新创建的默认服务账号,请按照以下步骤操作

    1. 转到虚拟机实例页面。

      转到虚拟机实例

    2. 点击要使用服务账号的虚拟机实例名称。

    3. 如果实例未停止,请点击停止。等待实例停止。

    4. 然后,点击修改

    5. 向下滚动到服务账号部分。

    6. 从下拉列表中,选择要分配给实例的服务账号。