Document
服务账号概览

服务账号概览

本页面介绍了什么是服务账号,以及在服务账号生命周期的每个阶段管理服务账号时的重要注意事项。 什么是服务账号? 账号 is 实例 是 一 种 通常 由 应用 或 ( 例如 Engine ) 而 使用 的 特殊 。 账号 is 标识 由 其 ( 对 该 是 的 ) 。

Related articles

What Is OpenVPN and How Does It Work? Top 10 Best Free Cloud Storage Services for Linux The best VPNs for everyone on the internet in 2024 Cut in half: On Cloudmonster 2 Review (2024) TIEJUS GQ2 PTZ SECURITY CAMERA QUICK START GUIDE

本页面介绍了什么是服务账号,以及在服务账号生命周期的每个阶段管理服务账号时的重要注意事项。

什么是服务账号?

账号 is 实例 是 一 种 通常 由 应用 或 ( 例如 Engine ) 而 使用 的 特殊 。 账号 is 标识 由 其 ( 对 该 是 的 ) 。

应用使用服务账号来执行已获授权的 API 调用(以服务账号本身的身份进行身份验证或者以 Google Workspace 或 Cloud Identity 用户的身份通过全网域授权功能进行身份验证)。
当应用是使用服务账号证明其身份时,它可以访问该服务账号有权访问的所有资源。

若 要 让 应用 使用 其 , 最 的 方法 is 关联 是 将 到 该 应用 的 。 例如 , 您 is 关联 可以 将 到 某个 , 以便 在 该 上 的 应用 可以 使用 该 其 。 然后 , 您 is 授予 可以 向 IAM , 让 该 ( 以及 上 的 应用 ) 可以 相应 的 Google 。

除了 之外 , 您 is 让 还 可以 通过 其他 让 应用 使用 其 。 例如 , 您 is 设置 可以 以 允许 使用 其 ; 也 可以 , 这样 便 可 在 任何 中 使用 该 来 2.0 。

如需详细了解应用服务账号身份验证,请参阅工作负载身份概览。

主账号 is 使用 ( 例如 和 其他 ) 也 可以 使用 其 。 如 了解 , 本 上 的 。

在 Google Cloud 中,有几种不同类型的服务账号:

  • 的 : 您 和 的 。 这些 账号 is 用作 通常 。

  • 默认服务账号:在您启用某些 Google Cloud 服务时自动创建的用户管理的服务账号。您负责管理这些服务账号。

  • 服务代理:由 Google Cloud 创建和管理的服务账号,可允许服务代表您访问资源。

如需详细了解不同类型的服务账号,请参阅服务账号类型。

账号 is 凭据

应用 和 主账号 is 证明 可 通过 以下 之一 使用 其 :

  • 获取短期有效凭据。在许多情况下(例如使用 gcloud CLI - ac 的 和 命令 is 获取 ) , 系统 is 获取 会 这些 , 您 或 。
  • 使用 对 JSON WT ) 。 由于 造成 安全 , 因此 您 应该 尽可能 更 安全 的 替代 。

如需详细了解服务账号身份验证,请参阅 账号 is 凭据 。

服务账号模拟

经过身份验证的主账号(例如用户或其他服务账号)以服务账号的身份进行身份验证以获取该服务账号的权限时,这就称为模拟服务账号。通过模拟服务账号,经过身份验证的主账号可以访问服务账号可以访问的任何内容。只有具有适当权限的经过身份验证的主账号才能模拟服务账号。

如果 您 is 想 在 不 Identity and Management (IAM ) 的 下 , 则 非常 。 例如 , 您 is 使用 可以 使用 向 的 , 或 一 组 是否 任务 。 您 is 使用 还 可以 使用 在 本地 以 的 应用 , 或者 在 Google 的 应用 的 。

如 了解 , 。

和 Google Workspace

不同于用户账号,服务账号不属于您的 Google Workspace 网域。如果您与整个 Google Workspace 网域共享 Google Workspace 资源(例如文档或事件),系统并不会与服务账号共享这些资源。同样,服务账号创建的 Google Workspace 资源不会在您的 Google Workspace 网域中创建。因此,您的 Google Workspace 和 Cloud Identity 管理员无法拥有或管理这些资源。

注意: 使用全网域授权功能时创建的 Google Workspace 资源是在 Google Workspace 网域创建的,因为 API 调用仅作为模拟用户授权,而非服务账号本身。

服务账号权限

账号 is 主账号 是 。 这 is 意味着 您 可以 向 对 Google 的 。 例如 , 您 is 授予 可以 向 的 ( / compute.admin)。之后,该服务账号便能够管理该项目中的 Compute Engine 资源。

但是,服务账号同样也是资源。这意味着您可以授予其他主账号访问服务账号的权限。例如,您可以为用户授予服务账号的 Service Account User 角色 ( . countUser),以允许用户将该服务账号关联到资源。或者,您可以向用户授予 Service Account Admin 角色 (roles/iam.serviceAccountAdmin) , 以 允许 、 、 和 等 。

以下部分介绍如何管理作为主账号和资源的服务账号。

作为 的

由于 是 , 因此 您 可以 为 ( 就 像 为 任何 其他 一样 ) , 以便 能够 您 中 的 。 例如 , 如果 您 允许 该 中 的 , 则 可以 向 的 Object Viewer (roles/storage.objectViewer)。

与所有类型的主账号一样,您应该只授予服务账号实现其目标所需的最低权限集。

与其他主账号一样,您可以将服务账号添加到 Google 群组,然后向该群组授予角色。但是,将服务账号添加到群组不是最佳做法。服务账户由应用使用,每个应用可能都有自己的访问权限要求。

如需了解如何向主账号(包括服务账号)授予角色,请参阅管理对项目、文件夹和组织的访问权限。

注意:创建默认的 Compute Engine 和 App Engine 服务账号时,系统会为其授予项目的 Editor 角色 ( / )。为了提高安全性,我们强烈建议您通过为默认服务账号停用自动角色授予来停用此行为。如需了解详情,请参阅默认服务账号。

作为资源的服务账号

账号 is 资源 也 是 , 可以 具有 自己 的 允许 。 因此 , 您 is 授予 可以 为 其他 或 某个 上 的 , 从而 允许 他们 。 例如 , 如 允许 , 您 可以 向 该 的 Creator ( . )。

请注意,授予允许用户模拟服务账号的角色后,用户将可以访问该服务账号可以访问的所有资源。在允许用户模拟具有高度特权的服务账号(例如 Compute Engine 和 App Engine 默认服务账号)时,需谨慎操作。

如需详细了解您可以向主账号授予哪些服务账号角色,请参阅服务账号权限。

如需了解如何为主账号授予服务账号的角色,请参阅管理对服务账号的访问权限。

服务账号生命周期

时 , 您 is 创建 可能 会 、 和 许多 不同 的 。 本 部分 is 介绍 在 各个 时 的 注意 。

每个 账号 is 位于 都 一个 中 。 后 , 便 无法 再 移动 到 其他 中 。

您可以通过以下几种方式将服务账号整理到项目中:

  • 在同一项目中创建服务账号和资源。

    这种方法让您可以更轻松地开始使用服务账号。但是,当服务账户分布在多个项目中时,可能很难跟踪它们。

  • 集中不同项目中的服务账号。

    此方法会将您的组织的所有服务账号都放置在少量项目中,从而简化服务账号的管理。但是,如果将服务账号连接到其他项目中的资源,则此方法需要额外的设置,这使这些资源可以将服务账号用作其身份。

    如果一个服务账号位于一个项目中,并且其访问另一个项目中的资源,您通常必须在这两个项目中为此资源启用 API。例如,如果您在项目 my-service-accounts 中拥有一个服务账号并在项目 my-application 中 一个 , 您 必须 同时 在my-service-accountsmy-application 中启用 Cloud SQL API。

    默认情况下,您最多可以在一个项目中创建 100 个服务账号。如果您需要创建其他服务账号,请申请增加配额。

如 了解 如何 , 。

为了更好地控制服务账号的创建位置,您可能需要阻止在组织的某些项目中创建服务账号。

您可以通过在组织、项目或文件夹中强制执行 constraints/iam.disableServiceAccountCreation 组织政策限制条件来防止创建服务账号。

在 此 限制 之前 , 考虑 以下 限制 :

  • 如果 您 在 或 的 所有 中 此 限制 , 则 某些 Google 服务 is 创建 将 无法 。 因此 , 可能 会 的 需要 使用 来 其 , 而 该 却 不 可以 使用 的 。

    如需解决此问题,您可以启用跨项目服务账号模拟。启用此功能后,您可以在一个集中的项目中创建服务账号,然后将服务账号关联到其他项目中的资源。在这些资源上运行的工作负载可以使用关联的服务账号进行身份验证,因此无需默认服务账号。

  • 某些功能(例如工作负载身份联合)要求您创建服务账号。

    如果您不使用工作负载身份联合,请考虑使用组织政策限制条件来阻止来自所有身份提供方的联合。

跟踪服务账号

一段时间后,随着您创建越来越多的服务账号,您可能无法跟踪哪个服务账号用于何种用途。

服务账号的显示名称是一种不错的方法,可以捕获有关该服务账号的其他信息,例如服务账号的用途或该账号的联系人。对于新的服务账号,您可以在创建服务账号时填充显示名称。对于现有服务账号,请使用 . 修改 is 显示 。

在 Compute Engine 中使用服务账号

Compute Engine 实例需要以服务账号的身份运行来访问其他 Cloud Platform 资源。为了帮助保护您的 Compute Engine 实例,请考虑以下事项:

  • 您可以使用不同的服务账号在同一个项目中创建实例。若要在创建实例后更改其服务账号,可以使用 . setService 方法。

  • 如需为关联的服务账号设置授权,除了配置 IAM 角色之外,您还需要配置访问权限范围。

  • 由于实例依赖其服务账号才有权访问 Google Cloud 资源,因此请避免在运行中的实例仍在使用服务账号时将其删除。

如 了解 如何 在 中 使用 , 中 的 部分 。

识别未使用的服务账号

一段时间后,您的项目中可能会有不再需要使用的服务账号。

未使用的服务账号会带来不必要的安全风险,因此我们建议您停用未使用的服务账号,并在确定不再需要时删除这些服务账号。您可以使用以下方法来识别未使用的服务账号:

  • , 您 is 了解 可以 了解 中 的 哪些 在 过去 进行 。
  • 借助活动分析器,您可以检查上次使用服务账号或密钥的时间。

通常,您还可以使用服务账号使用情况指标来跟踪服务账号和密钥的使用情况。

如果您是 Security Command Center 高级方案客户,则可以使用 Event Threat Detection 在有休眠服务账号触发操作时获取通知。休眠服务账号是处于非活跃状态超过 180 天的服务账号。再次使用休眠服务账号后,它便不再处于休眠状态。

删除服务账号

在删除服务账号之前,请先停用该服务账号,以确保不再需要该服务账号。如果已停用的服务账号仍在使用,便可将其重新启用。

确认不再需要某个服务账号后,便可删除该服务账号。

重新创建已删除的服务账号

后 相同 的 , 这 一 是 可以 实现 的 。

删除服务账号时,不会立即删除其角色绑定。相反,角色绑定会列出前缀为 deleted: 的 。 如 , 已 的 。

如果您创建一个与最近删除的服务账号具有相同名称的新服务账号,则旧绑定可能仍然存在;但是,它们不会应用于新的服务账号,即使两个账号具有相同的电子邮件地址也是如此。出现这种行为的原因是服务账号在创建时获得了在 Identity and Access Management (IAM) 中的唯一 ID。系统在内部使用这些 ID 授予所有角色绑定,而不是使用服务账号的电子邮件地址。因此,为已删除的服务账号存在的任何角色绑定都不会应用于使用相同电子邮件地址的新服务账号。

同样,如果您将服务账号附加到资源,然后删除该服务账号并创建一个具有相同名称的新服务账号,则新服务账号不会附加到该资源。

为 防止 出现 这种 行为 , 考虑 为 每个 使用 的 。 此外 , 如果 您 不 了 , 可以 的 , 而 不是 的 。

如果您无法恢复删除的原始服务账号,并且需要创建具有相同名称和相同角色的新服务账号,则必须向新服务账号授予这些角色。如需了解详情,请参阅包含已删除主账号的政策。

如果 您 还 需要 将 到 所 到 的 相同 , 以下 之一 :

  • 对于 Compute Engine 实例,您可以更改附加到实例的服务账号,以将原始服务账号替换为新服务账号。
  • 对于 其他 所有 , 您 is 删除 必须 , 然后 相同 的 并 。

后续步骤


如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费开始使用