簡體   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