【问题标题】:Whitelisting IPs of a Node.js App (hosted on GAE) to access MongoDB Atlas (hosted on GCP)将 Node.js 应用(托管在 GAE)的 IP 列入白名单以访问 MongoDB Atlas(托管在 GCP)
【发布时间】:2020-05-16 18:36:43
【问题描述】:

我希望我的后端服务器(Node.js,托管在 Google App Engine 上,灵活的环境,如果这很重要)能够从我的数据库(MongoDB,通过 Atlas,也托管在 Google Cloud 平台上,在与我的后端服务器相同的区域)。理想情况下,我想保留一份可以访问我的数据库的 IP 的严格白名单,但我不确定如何识别它们。

我的理解是 Google 将使用一系列 IP。我可能可以通过不时查询 Google (Google App Engine - list of IP addresses?) 来访问这些内容。

我还从 Google 找到了一个关于如何将 App Engine 连接到 MongoDB Atlas 的不错的教程,但他们很方便地忽略了如何将正确的 IP 列入白名单 (https://cloud.google.com/community/tutorials/mongodb-atlas-appengineflex-nodejs-app)。

我还从 Atlas 中找到了一些关于在 GCP 中使用网络对等互连的说明(我符合条件?请参阅链接:https://docs.atlas.mongodb.com/security-vpc-peering/),但存在重大限制,包括不允许使用其他 IP?我很难理解他们的文档。

关键问题:有没有比上面的第一个链接更简单的方法?还是我经常查询这个并手动更改它?

【问题讨论】:

    标签: node.js mongodb google-app-engine mongodb-atlas whitelist


    【解决方案1】:

    如果您在 Atlas 上运行 M10-Cluster(或更高版本),VPC-Peering 是您的理想之选。正如您所说,您很难阅读文档。我建议尝试this tutorial。他们正在解释将哪些 CIDR 范围(您称为 IP)列入白名单。

    这里需要注意的一点是,他们使用的是 GCP Kubernetes Engine。使用 App Engine 需要付出一些额外的努力,因为它是 GCP 的“无服务器”解决方案之一,这就是为什么您不应该使用静态 IP 或类似的东西的原因。您需要通过连接器将您的应用程序连接到 VPC 网络:

    1. these instructions 之后在与您的 GAE 应用程序相同的区域中创建一个连接器。您可以通过gcloud app describe 找到您的 GAE-App 的当前区域。现在只需给连接器10.8.0.0 范围(/28 会自动添加)。记住你给它起的名字。

    2. 您的 app.yaml 必须像这样指向该连接器

    runtime: nodejs10
    
    vpc_access_connector:
      name: projects/GCLOUD_PROJECT_ID/locations/REGION_WHERE_GAE_RUNS/connectors/NAME_YOU_ENTERED_IN_STEP_1
    
    1. 转到您的 Atlas 项目,导航到 网络访问 并将您在第 1 步中为连接器设置的 CIDR 范围列入白名单

    2. 您可能还需要将第 1 步中的 CIDR 范围列入 VPC 网络的白名单。您可以通过导航到 VPC-Network -> Firewall

      在 GCP 中执行此操作

    【讨论】:

    • 感谢您的回复。自从我发布这个以来已经有一段时间了。最后,我托管在 Google Compute Engine 上,这让我可以更方便地访问静态 IP。后来我将我的一些后端卸载到 Firebase 上的 Express“功能”,在那里我完全使用了您设置对等网络的解决方案。再次感谢,很抱歉我之前没有提供更新。
    • 老兄!就是这样。我已经为我的 VPC 添加了 CIDR 范围,但我需要为我的 VPC 连接器添加 CIDR 范围,这对我来说不是很明显(我认为由于 GAE 应用程序可以通过连接器访问 VPC,它会通过连接器与 Atlas 通信VPC 子网中指定范围内的私有 IP。)。不会想到这一点。谢谢!!
    • 不客气。有点挣扎自己,所以认为这可能会有所帮助。我真的认为这应该是公认的答案。试图避免预期的方式并在没有连接器的情况下保留静态 IP 对我来说似乎不合适。
    【解决方案2】:

    我相信 Google App 引擎有不同的帐户。很难准确找到GAE IP连接到MongoDB Atlas。

    所以,确切地说,我建议您使用 mongoDB Atlas 的 VPC 对等功能。

    【讨论】:

    • VPC 对等互连是要走的路——我花了五分钟来设置。方向非常简单。注意:这仅适用于 M10 及更高版本。
    【解决方案3】:

    在 App Engine 中使用 IP 不是很容易,也不是很好。对于这样的情况,我会说在 GCE 上使用 VM - 您可以配置外部和内部静态 IP 地址 - 并使用代理。

    如果您认为这是一种对您有帮助的方法,您可以找到有关Reserving a static external IP addressReserving a Static Internal IP Address 的更多信息。

    有一个功能请求开放,供您检查静态 IP 并可能由 Google 实施,您可以在此处访问:

    除此之外,您还可以访问文档Static IP Addresses and App Engine apps,了解有关 App Engine 上已有选项的更多信息。

    如果这些信息对您有帮助,请告诉我。

    【讨论】:

    • 是的,这基本上是我的假设。感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2019-07-20
    • 1970-01-01
    • 2022-10-08
    • 2020-10-19
    相关资源
    最近更新 更多