【问题标题】:HTTP requests from Google Compute Engine to Appengine Standard从 Google Compute Engine 到 Appengine Standard 的 HTTP 请求
【发布时间】:2018-11-10 07:43:58
【问题描述】:

是否可以从 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 标头。

编辑:

  • 网址:/securehandler/.* 脚本:_go_app 需要登录 安全:始终

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2017-12-19
    相关资源
    最近更新 更多