【问题标题】:How do I route local Firebase emulator traffic through Cloud NAT Static IP while testing locally?如何在本地测试时通过 Cloud NAT 静态 IP 路由本地 Firebase 模拟器流量?
【发布时间】:2022-01-23 02:30:32
【问题描述】:

背景:

在生产中,我的一些 Firebase 云函数连接到需要列入白名单的 IP 地址的外部 API。

我配置了利用此资源通过无服务器 VPC 路由流量并通过具有白名单静态 IP 的 Cloud NAT 退出的云功能。

我通常在部署函数时在运行时配置中这样指定:

// imports
import { RuntimeOptions } from "firebase-functions";

const runtimeOpts: RuntimeOptions = {
    vpcConnector: "functions-connector",
    vpcConnectorEgressSettings: "ALL_TRAFFIC",
}

// Exports
module.exports = {
    some_http_function: functions.runWith(runtimeOpts).region("us-central1").https.onRequest(someHTTPFunction),
}

问题:在本地测试时如何通过我的 Cloud NAT 路由本地 Firebase 模拟器流量?

【问题讨论】:

  • Cloud NAT 对您的 VPC 来说是私有的。
  • 我明白了。我想在不部署的情况下进行本地测试。这可能吗?
  • 我不使用 Firebase 模拟器,所以不知道您是否可以为其流量指定路由。您对路由、VPN 和转发流量的了解程度如何?当我需要我的流量通过 VPC(带有 NAT 网关的 VPC)发出时,我要么设置 VPN,要么使用 SSH 端口转发。我认为本地测试最简单的方法是将您的家庭公共 IP 地址列入白名单。但是,家庭互联网经常更改地址,因此您将每隔几天更新一次白名单。
  • 好吧,我真的想问 GCP 是否有内置的方式来通过我的 NAT 网关进行本地测试。我确信我可以想出一个使用 VPN 等的解决方法,但如果有官方的方法可以解决这个问题,我会很高兴知道。
  • 您无法将软件配置为使用独立于 VPN、端口转发等的 NAT 网关。该软件没有路由可用于进入您的 VPC。即使我不使用 Firebase 模拟器,该细节也会违反安全规定,会立即被利用。

标签: node.js firebase google-cloud-platform google-cloud-functions


【解决方案1】:

将您的家庭公共 IP 地址列入白名单是进行本地测试的最简单方法。但是,由于您使用家庭互联网会频繁更新白名单,因此地址会经常更改。

在没有 VPN、端口转发或其他安全功能的情况下,无法将应用程序配置为使用 NAT 网关。 Cloud NAT 只能在您的 VPC 内访问。 该软件无法进入您的 VPC,因为它无法进入。这将是一个可能立即被利用的安全漏洞。

【讨论】:

    猜你喜欢
    • 2021-05-14
    • 2020-07-28
    • 2021-04-02
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多