App Engine 应用需要服务账号才能访问其他 Google Cloud服务并执行任务。默认情况下,App Engine 默认服务账号用作 App Engine 应用的身份。您还可以指定不同的用户管理的服务账号,以用作特定 App Engine 应用版本的身份。这样,您可以根据每个版本所执行的特定任务来为其授予不同的权限,同时可避免授予超出需求的权限。
本指南介绍了如何在部署新版本时指定不同的用户管理的服务账号。如果您在部署特定版本的应用时不需要创建不同的服务账号,则可以继续使用默认服务账号,而无需指定服务账号。
创建用户管理的服务账号
如需创建用户管理的服务账号,请参阅这些说明。定义要为服务账号授予的 Identity and Access Management (IAM) 角色时,您可以参考授予 App Engine 访问权限的角色。
如果您需要在创建服务账号之前查看 IAM 概念,请参阅 IAM 概念概览和服务账号指南。
创建用户管理的服务账号后,您可以使用以下方法之一更新应用的应用级默认服务账号:
gcloud
运行 gcloud app update
命令。
gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
您需要进行如下替换:
- 将
SERVICE_ACCOUNT_NAME
替换为您创建的服务账号的名称。 - 将
PROJECT_ID
替换为要在其中分配服务账号的 Google Cloud 项目的 ID。
您在此更新后部署的每个新版本都会使用新的应用级默认服务账号,除非您明确分配了版本特定服务账号。
控制台
前往控制台中的 App Engine 应用设置标签页,然后点击修改应用设置。
从选择服务账号中选择应用级默认服务账号,然后点击保存。
系统会将您重定向到应用设置标签页,您可以在其中查看更新后的应用级默认服务账号的电子邮件地址。示例:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
。您在此更新后部署的每个新版本都会使用新的应用级默认服务账号,除非您明确分配了版本特定服务账号。
部署应用时指定服务账号
gcloud
运行 gcloud app deploy
命令并指定您的服务账号:
gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
app.yaml
在 app.yaml
文件中,通过添加 service_account
元素来指定您的服务账号:
service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
后续步骤
遵循使用服务账号的最佳实践。