从Google Compute Engine到Appengine Standard

时间:2018-05-31 10:12:50

标签: google-app-engine google-compute-engine

是否可以从Google Compute Engine GCE向Google AppEngine GAE发出安全的HTTP请求,而无需使用服务帐户并在GAE服务上启用终端服务(代理)?我们的大多数后端HTTP处理程序不需要启用端点服务代理,因为请求都是内部的而不是来自公共的。我们的公共API使用计算引擎端点服务..

handlers:
- url: /securehandler/.*
  script: main.app
  login: admin

https://cloud.google.com/appengine/docs/standard/go/config/appref#handlers_element

“注意:对于App Engine设置适当的X-Appengine特殊标头的内部请求,也满足管理员登录限制。例如,cron计划任务满足管理限制,因为App Engine设置了HTTP标头X-AppEngine- Cron:对各自的请求都是true。但是,请求不能满足所需的登录限制,因为cron计划任务不是以任何用户身份运行。“

https://cloud.google.com/appengine/docs/standard/go/appidentity/

“向其他App Engine应用程序断言身份

如果您想确定向App Engine应用程序发出请求的App Engine应用程序的身份,您可以使用请求标头X-Appengine-Inbound-Appid。此标头由URLFetch服务添加到请求中,并且不是用户可修改的,因此它可以安全地指示请求应用程序的ID(如果存在)。

在您的应用程序处理程序中,您可以通过读取X-Appengine-Inbound-Appid标头并将其与允许发出请求的ID列表进行比较来检查传入ID。“

显然,在GCE中使用Go客户端发出HTTP请求时,不会设置X-AppEngine和X-Appengine-Inbound-Appid标头。

编辑:

  • url:/securehandler/.* 脚本:_go_app 要求登录 安全:永远

如果登录设置为必需,默认服务帐户是否会进行身份验证?

1 个答案:

答案 0 :(得分:0)

如果您从GCE发出HTTP请求,它将不包含任何凭据,因此不会显示为已登录。 GAE不提供API调用的机制来传递login:required。

GAE确实提供身份验证作为Cloud Endpoints的一部分。您可以使用它来验证来自GCE的请求。