服务账号可分为两类:您管理的服务账号和 Google 管理的服务账号。本页面介绍了如何创建和使用每种类型的服务账号。
用户管理的服务账号
用户管理的服务账号是您在项目中创建的服务账号。您可以自行决定更新、停用、启用和删除这些服务账号。您还可以管理其他主账号对这些服务账号的访问权限。
您可以使用 IAM API、Google Cloud 控制台或 Google Cloud CLI 在项目中创建用户管理的服务账号。
默认情况下,您可以在一个项目中最多创建 100 个用户管理的服务账号。如果此配额不能满足您的需求,您可以使用 Google Cloud 控制台申请增加配额。只有用户创建的服务账号才会计入此配额,默认服务账号和 Google 管理的服务账号不计入。
在项目中创建用户管理的服务账号时,请选择服务账号的名称。此名称显示在用于标识服务账号的电子邮件地址中,该地址采用以下格式:
service-account-name@project-id.iam.gserviceaccount.com
如需了解如何创建服务账号,请参阅创建服务账号。
默认服务账号
默认服务账号是您启用或使用某些 Google Cloud 服务时自动创建的用户管理的服务账号。这些服务账号允许服务部署访问其他 Google Cloud 资源的作业。您负责在创建默认服务账号后对其进行管理。
如果您的应用在具有默认服务账号的 Google Cloud 环境中运行,您的应用可以使用默认服务账号的凭据来调用 Google Cloud API。或者,您可以创建自己的用户管理的服务账号,并使用该账号进行身份验证。如需了解详情,请参阅设置应用默认凭据。
下表列出了可创建默认服务账号的服务:
服务 | 服务账号名称 | 电子邮件地址 |
---|---|---|
App Engine 以及任何使用 App Engine 的 Google Cloud 服务 | App Engine 默认服务账号 | project-id@appspot.gserviceaccount.com |
Compute Engine 以及任何使用 Compute Engine 的 Google Cloud 服务 | Compute Engine 默认服务账号 |
project-number-compute@developer.gserviceaccount.com
|
Google 管理的服务账号
某些 Google Cloud 服务需要访问您的资源才能代表您执行操作。例如,当您使用 Cloud Run 运行容器时,服务需要访问所有可触发容器的 Pub/Sub 主题。
为了满足这一需求,Google 会为许多 Google Cloud 服务创建和管理服务账号。这些服务账号称为 Google 管理的服务账号。您可以在项目的允许政策、审核日志中或 Google Cloud 控制台的 IAM 页面上看到 Google 管理的服务账号。
Google 管理的服务账号不是在您的项目中创建的,因此您在查看项目的服务账号时看不到它们。
Google 有以下类型的 Google 管理的服务账号:
公开范围
Google 管理的服务账号未在 Google Cloud 控制台的服务账号页面中列出。这些服务账号不在您的项目中,您无法直接访问它们。
默认情况下,Google 管理的服务账号也不会在 Google Cloud 控制台的 IAM 页面中列出,即使这些账号已被授予项目的角色也是如此。如需查看 Google 管理的服务账号的角色授予,请选中包括 Google 提供的角色授予复选框。
特定于服务的服务代理
服务代理是 Google 管理的服务账号,它们代表各个服务执行操作。在许多情况下,服务需要这些服务代理才能正常运行。例如,服务代理允许 Cloud Logging 接收器将日志写入 Cloud Storage 存储桶。
每个服务代理都与一个资源相关联。此资源通常是项目、文件夹或组织,但也可以是特定于服务的资源,例如 Cloud SQL 实例。此资源定义了服务代理操作的范围。例如,如果服务代理与项目关联,它将代表服务对项目及其后代资源执行操作。
您可以通过查看服务代理的电子邮件地址来确定它所关联的资源类型:
- 如果服务代理与项目、文件夹或组织相关联,则其电子邮件地址包含该项目、文件夹或组织的数字 ID。
- 如果服务代理与特定于服务的资源相关联,则其电子邮件地址将包含数字项目 ID 和唯一标识符。数字项目 ID 指示哪个项目拥有与服务代理关联的资源。唯一标识符将服务代理与同一项目中的其他类似服务代理区分开来。
服务代理创建
服务代理创建的确切时间取决于与它关联的资源类型。
当您创建特定于服务的资源时,系统会创建与该资源关联的服务代理。如需详细了解如何识别和配置这些服务代理,请参阅关联资源的文档。
与项目、文件夹和组织关联的服务代理会根据需要创建,通常是您首次使用服务时。如有必要,您还可以要求 Google Cloud 在您使用服务之前为服务创建服务代理。如需了解详情,请参阅创建服务代理并授予角色。
服务代理角色
Google Cloud 中的某些操作需要服务代理代表您创建和访问资源。例如,当您创建 Dataproc 集群时,Dataproc 服务代理需要具备在您的项目中创建 Compute Engine 实例的权限才能创建集群。
为了获得此访问权限,服务代理需要特定的 IAM 角色。许多项目级服务代理会自动获得所需的角色。这些自动授予的角色的名称通常以 serviceAgent
或 ServiceAgent
结尾。对于其他服务代理,您需要向其授予角色,以使服务正确运行。如需了解哪些服务代理会自动获得角色,请参阅服务代理参考文档。
如果要求 Google Cloud 在您使用服务之前创建服务代理,您必须向服务代理授予系统通常会自动授予它们的角色。这是因为根据用户请求创建的服务代理不会被自动授予角色。如果您不为服务代理授予这些角色,某些服务可能无法正常运行。如需了解如何向服务代理授予这些角色,请参阅创建服务代理并授予角色。
主要服务代理
在服务代理参考文档中,某些服务代理标识为主要服务代理。当您为服务触发服务代理创建时,系统会返回主要服务代理的电子邮件地址。
Google API 服务代理
项目的允许政策可能引用了名为 Google API 服务代理的服务账号,其电子邮件地址采用以下格式:project-number@cloudservices.gserviceaccount.com
。
该服务账号代表您运行内部 Google 流程。它会自动获得项目的 Editor 角色 (roles/editor
)。
Google 管理的服务账号的角色管理员
您的 IAM 审核日志可能引用了服务账号 service-agent-manager@system.gserviceaccount.com
。
此服务账号管理已授予服务代理的角色。它仅在审核日志中可见。
例如,如果您使用新的 API,Google 可能会自动创建一个新的服务代理,并向其授予您的项目的角色。如果授予这些角色,则系统会生成一个审核日志条目,其中显示 service-agent-manager@system.gserviceaccount.com
为项目设置了允许政策。
后续步骤
- 了解如何创建和管理服务账号。
- 了解如何创建和管理服务账号密钥。
- 获取使用服务账号的最佳实践。
- 查看管理服务账号密钥的最佳实践。