首页 > 解决方案 > 将 Node.js 应用(托管在 GAE)的 IP 列入白名单以访问 MongoDB Atlas(托管在 GCP)

问题描述

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

我的理解是谷歌将使用一系列 IP。我也许可以通过不时查询 Google 来访问这些(Google App Engine - IP 地址列表?)。

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

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

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

标签: node.jsmongodbgoogle-app-enginemongodb-atlaswhitelist

解决方案


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

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

  1. 按照这些说明在与您的 GAE 应用程序相同的区域中创建一个连接器。您可以使用 找到您的 GAE-App 的当前区域gcloud app describe。现在只需给连接器指定范围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 中执行此操作


推荐阅读