繁体   English   中英

从 Google App Engine (flex) 调用(内部流量)HTTP Google Cloud Function

[英]Invoking (internal traffic) HTTP Google Cloud Function from Google App Engine (flex)

所以我有一个简单的烧瓶服务,它位于 GAE flex 实例中。 该实例位于身份感知代理之后。 一旦通过 IAP 进行身份验证,我就可以获取用户的 X-Appengine-* 和 X-Goog-* 标头(包括 iap-jwt)。

所以我的问题是,根据我拥有的所有信息,我如何调用仅限内部的流量 http GCF?

  1. 据我所知,似乎有一种方法可以使用 iap-jwt 作为访问令牌添加到授权标头中,但我似乎无法获得任何工作。
  2. 此外,由于应用引擎与云函数在同一个项目中运行,应用引擎有没有办法使用它的(应用引擎)服务帐户调用云函数? 鉴于应用引擎服务帐户具有调用者权限?

TL; DR:你不能。

事实上,您可以将 App Engine flex 插入您的 VPC 以路由所有内部流量(即路由到私有 IP (RFC1918) 的流量) 但是,Cloud Functions(或 Cloud Run,是同一回事)是公开的。 即使您将入口设置为 internal

内部入口告诉平台添加对流量来源的额外检查:它必须来自项目的 VPC 或来自 VPC SC 边界。 但是访问该服务的流量仍然是公开的

因此,当您使用 App Engine 时(无论是否灵活,问题都是一样的),您不能说“嘿将所有出口路由到 VPC”。 您只能使用 Cloud Functions 和 Cloud Runs 出口控制来做到这一点,而不能使用 App Engine。

因此,您的 Cloud Functions 调用不使用您的 VPC,因此会从 Internet 而非您的 VPC 到达您的 Cloud Functions 内部入口。 然后你得到一个未经授权的 401。


没有网络解决方案,但您有一个 IAM 解决方案。 仅授予 App Engine 服务帐户访问您的 Cloud Functions 的权限,而不授予其他身份。 这样,任何人都可以从 Internet 调用您的 Cloud Functions,但只有经过身份验证和授权的流量才会路由到您的 Cloud Functions。 在调用您的 Cloud Functions 之前,GFE(Google 前端)将丢弃所有不良流量,您无需为此付费。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM