【问题标题】:Changing app engine service account roles not effecting access更改应用引擎服务帐号角色不影响访问
【发布时间】:2017-11-01 21:23:05
【问题描述】:

我的目标是运行一个谷歌应用引擎应用程序,并以最少的资源访问它所需的资源。在我的情况下,应用程序将访问项目中的数据存储(这是使用来自https://github.com/GoogleCloudPlatform/appengine-guestbook-go.git 的源代码 git checkout origin/part4-usingdatastore 的 golang 示例教程)

我做了以下

  • 创建一个新项目,foobarproject3
  • 在项目中创建了一个新应用(使用 golang)
  • 在项目 IAM/IAM 注意到 foob​​arproject3@appspot.gserviceaccount.com,假设这是服务帐户,因此将其角色更改为 BigQuery 用户。请注意,未配置任何数据存储角色(UI 强制我提供对某些内容的访问权限,因此我选择了 BQ)
  • 按照使用数据存储区 golang 应用程序(留言簿应用程序)的教程说明并部署该应用程序。
  • 打开了我的应用程序的链接:https://foobarproject3.appspot.com/ 它失败了(这很好,这是我所期望的,因为服务帐户没有授予应用程序读取/写入数据存储的权限)
  • 刷新https://foobarproject3.appspot.com/,它开始工作了

关于应用引擎中的服务帐户,我有一些基本的东西我不了解。应用引擎不是使用这些服务帐号访问项目资源吗?当服务帐户没有允许访问数据存储的策略时,为什么应用可以访问数据存储?

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    “我的目标是运行一个谷歌应用引擎应用程序,并尽可能少地访问它所需的资源。”

    在没有更多上下文的情况下解压是很冒险的。除了 App Engine 的默认行为之外,您还试图实现什么?

    我的经验是,如果一个人在不了解基础知识的情况下开始改变角色,事情就会横向发展(或南、西或梨形,取决于你所在的位置)。所以我怀疑你的第三颗子弹射中了自己的脚。

    【讨论】:

    • 我正在尝试了解应用引擎服务帐户的价值。我认为服务帐户可用于启用或限制正在运行的应用引擎应用程序对项目资源的访问。但是,在从服务凭据中删除数据存储策略后,应用引擎应用程序仍然具有对数据存储的读写访问权限。
    • “项目资源”是广泛的。我只需要在与不属于标准 App Engine 集的 Google 提供的 API 交互时处理服务帐户。
    【解决方案2】:

    当您从浏览器访问您的应用时,您使用的是您自己的用户凭据,而不是应用的服务帐户。如果您使用这些凭据创建应用,您的用户凭据可能正是应用所有者/管理员的凭据。例如,请参阅app.yaml handler login: admin option not effective on standard env python GAE app?

    确保您从应用程序中注销,或尝试从隐身浏览器窗口访问应用程序,或使用哑(er) 实用程序来防止意外/不需要的凭据泄漏。

    应用的服务帐号是为了让您的应用在与其他服务/应用交互时识别自己。来自Understanding Service Accounts

    服务帐户是一种特殊类型的 Google 帐户,属于 您的应用程序或虚拟机 (VM),而不是 个人最终用户。您的应用程序assumes the identity of the service account to call Google APIs,这样用户就不会 直接参与。服务帐户可以有零对或多对 服务帐号密钥,用于向 Google 进行身份验证。

    【讨论】:

    • 我从 diff 浏览器和 curl 中尝试过。我正在尝试使用服务帐户来限制正在运行的应用引擎应用程序的访问。也许我错过了服务帐户的意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2020-09-04
    • 2011-10-23
    相关资源
    最近更新 更多