服务帐号

本页面介绍如何分配用户创建的服务帐号,而不是使用为 Cloud Run 服务自动创建的默认服务帐号和权限。如需详细了解 Cloud Run 使用的默认服务帐号,请参阅运行时服务帐号

设置和更新服务身份

Google 建议您为各项服务指定一个专属身份,方法是为其分配用户创建的服务帐号,而不是使用默认服务帐号。通过用户创建的服务帐号,您可以使用 Identity and Access Management 授予一组最低权限来控制访问权限。您只能使用与 Cloud Run(全代管式)服务在同一个项目中的服务帐号。

用户创建的服务帐号所需的权限

如需使用用户创建的服务帐号部署服务,部署服务的用户必须具有该服务帐号的 iam.serviceAccounts.actAs 权限。

用户创建服务帐号时,系统会自动为用户授予此权限。否则,具有正确权限的用户必须为部署服务的用户授予 iam.serviceAccounts.actAs 权限。如需了解如何授予权限,请参阅授予、更改和撤消对资源的访问权限

使用用户创建的服务帐号部署新服务

如果您还没有要使用的用户创建的服务帐号,请了解如何创建和管理服务帐号

您可以在创建新服务部署新修订版本时使用 Cloud Console 或 gcloud 命令行设置环境变量。请使用与新身份关联的服务帐号电子邮件地址更新服务帐号:

控制台

  1. 转到 Cloud Run

  2. 如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本

  3. 在“高级设置”下,点击容器

    image

  4. 点击服务帐号下拉列表,然后选择所需的服务帐号。

  5. 点击创建部署

gcloud

您可以使用以下命令更新现有服务以拥有新的运行时服务帐号:

gcloud run services update SERVICE --service-account SERVICE_ACCOUNT

替换:

  • SERVICE 替换为您的服务名称。
  • SERVICE_ACCOUNT 替换为与新身份关联的服务帐号:此值是服务帐号的电子邮件地址,例如 example@myproject.iam.gserviceaccount.com

您还可以在部署期间使用以下命令设置服务帐号:

gcloud run deploy --image IMAGE_URL --service-account SERVICE_ACCOUNT

替换:

  • IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/myproject/my-image:latest
  • SERVICE_ACCOUNT 替换为与新身份关联的服务帐号:此值是服务帐号的电子邮件地址,例如 example@myservice.iam.gserviceaccount.com

YAML

您可以使用 gcloud run services describe --format export 命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后,您可以使用 gcloud beta run services replace 命令修改下述字段并上传修改后的 YAML。请务必仅修改记录的字段。

  1. 要查看和下载配置,请运行以下命令:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 serviceAccountName: 特性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          serviceAccountName: SERVICE_ACCOUNT

    替换

    • SERVICE 替换为您的 Cloud Run 服务的名称。
    • SERVICE_ACCOUNT 替换为与新身份关联的服务帐号:此值是服务帐号的电子邮件地址,例如 example@myproject.iam.gserviceaccount.com
  3. 使用以下命令将服务替换为其新配置:

    gcloud beta run services replace service.yaml