更改不会影响访问权限的应用引擎服务帐户角色

时间:2017-11-01 21:23:05

标签: google-app-engine

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

我做了以下

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

我不了解app引擎中的服务帐户。使用这些服务帐户的应用引擎是不是可以访问项目资源?当服务帐户没有允许访问数据存储的策略时,为什么应用程序可以访问数据存储?

2 个答案:

答案 0 :(得分:0)

"我的目标是运行谷歌应用引擎应用程序,只需极少量访问所需的资源。"

在没有更多上下文的情况下解压缩是很冒险的。您尝试实现的目标是什么,超出了App Engine的默认行为?

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

答案 1 :(得分:0)

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

确保您从应用中退出,或尝试从隐身浏览器窗口或使用哑(呃)实用程序访问该应用,以防止意外/不需要的凭据泄露。

该应用的服务帐户可让您的应用在与其他服务/应用互动时识别自己。来自Understanding Service Accounts

  

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