【问题标题】:Custom service account for AppEngineAppEngine 的自定义服务帐户
【发布时间】:2019-05-22 13:54:36
【问题描述】:

我想为在 GCP AppEngine 上运行的不同应用设置单独的权限。

我认为,这样做的方法是为每个应用程序使用专门的服务帐户。

据我了解,所有应用程序都使用 AppEngine 默认服务帐户 project@appspot.gserviceaccount.com 运行

有没有办法为在 GCP 中的 AppEngine 上运行的应用程序显式设置服务帐户?然后我就可以创建具有良好访问限制的单独服务帐户。

【问题讨论】:

    标签: google-app-engine google-cloud-platform


    【解决方案1】:

    我假设您的意思是 App Engine 标准。每个项目只有一个 App Engine 标准版。

    您可以在 App Engine 下拥有多个服务。

    您需要创建一个服务帐户,然后在您的代码中加载该服务帐户。然后,您可以更改默认服务帐户以拥有运行所需的最低权限。确保在更改权限之前研究您在做什么。您可能会因为过于严格而破坏 App Engine。

    但是,这会带来有关您如何管理和分发服务帐户密钥的安全问题。

    如果您指的是 App Engine Flexible。 Google 甚至不会在控制台中显示灵活服务帐户,因为 Google 不希望您修改它。

    【讨论】:

    • App Engine flexible 也为应用使用相同的默认服务帐户。它使用的另一个隐藏服务帐户在幕后用于编排。见cloud.google.com/appengine/docs/flexible/java/…
    • @jon_wu - 你为什么在我的回答中发表这条评论?您的链接有很好的信息,但不适用于或改进我的回答。您的评论可能应该移至所提出的问题。
    • 您的回答听起来好像默认服务帐户不适用于 App Engine 灵活,而是使用不同的隐藏帐户。根据我上面的评论,澄清描述两个服务帐户的答案会很有帮助。
    • @jon_wu - 请创建一个新问题。
    【解决方案2】:

    tldr;你可以做gcloud beta app deploy --service-account=<your_service_account> app.yaml

    AppEngine 应用的身份不再局限于 AppEngine 默认服务帐户。您现在可以关注https://cloud.google.com/appengine/docs/standard/python/user-managed-service-accounts#app.yaml,为每个 AppEngine 应用使用自定义服务帐户进行部署。

    这适用于 AppEngine 标准版和灵活版。

    【讨论】:

    • 请注意,您可能需要先更新 gcloud 版本。见the install docs。对我来说,这需要gcloud components update,然后使用 beta 标志:gcloud beta app deploy [app.yaml]。 yaml 中的--service-acount 开关或service_account 参数与beta 一起使用。
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多