将 Node.js 应用程序(托管在 GAE 上)的 IP 列入白名单以访问 MongoDB Atlas(托管在 GCP 上)

Mat*_*tPM 7 google-app-engine whitelist mongodb node.js mongodb-atlas

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

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

我还从 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?我很难理解他们的文档。

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

And*_*dyW 5

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

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

  1. 按照这些说明在与 GAE-App 相同的区域中创建连接器。您可以使用 找到 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
Run Code Online (Sandbox Code Playgroud)
  1. 转到您的 Atlas 项目,导航到网络访问并将您在步骤 1 中为连接器设置的 CIDR 范围列入白名单

  2. 您可能还需要将步骤 1 中 VPC 网络的 CIDR 范围列入白名单。您可以通过导航到VPC-Network -> Firewall在 GCP 中执行此操作


gso*_*iel 0

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

如果您认为这种方法对您有帮助,您可以找到有关保留静态外部 IP 地址保留静态内部 IP 地址 的更多信息。

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

除此之外,您还可以访问文档静态 IP 地址和 App Engine 应用程序,以了解有关 App Engine 上已有选项的更多信息。

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