【问题标题】:Why does MongoDB port 27017 need to be opened in AWS EC2 Security Group?为什么需要在 AWS EC2 安全组中打开 MongoDB 端口 27017?
【发布时间】:2018-03-05 15:10:56
【问题描述】:

(我搜索了 SO、AWS 支持等更广泛的内容,但均未成功。)

我刚刚成功地将 MEANjs 应用程序部署到 EC2 上的 Bitnami MEAN 实例,遵循Ahmed Haque's excellent tutorial on scotch.io。作为教程/部署的一部分,我更改了 AWS 安全组以包含用于 MongoDB 流量的端口 27017。端口 27017 的 CIDR 表示法是 0.0.0.0/0 - AFAIK 的意思是“允许从任何 IP 地址访问”。

问题:为什么AWS EC2中需要开启MongoDB 27017端口 “生产”类型环境的安全组?当然,这直接将数据库暴露给 互联网。唯一应该与 Mongo 交谈的是 “/server/api”代码,在同一个实例上运行 - 所以应该不需要端口开放。

如果我通过关闭 27017 来更改端口 27017 的安全组规则,将源更改为:本地主机、内部 IP 地址、公共 IP 地址,或者将 CIDR 修改为与其中任何一个相同 - 然后是网络应用程序挂起(静态内容返回,但对 db 支持的 api 调用没有响应)。将 SG 规则改回 0.0.0.0/0 几乎可以立即“解决”问题。

我的安装一切都很好。我已经关闭了安全组中的 3000 端口(节点应用程序),并使用 Apache 将 80 端口的流量代理到 3000 端口。像这样设置,安全组中不需要打开 3000 端口;对我来说,这意味着实例上的流量不需要外部暴露端口 - 那么为什么 Mongo 端口不是这样呢?

我在直接与 Mongo 对话的“/client”代码中看不到任何内容。

我错过了什么?

提前致谢 - 约翰

【问题讨论】:

  • 嗯 - 一个没有理由的反对票 - 至少你可以告诉我为什么你不认为这是一个好问题。我知道它就在代码服务器范围的服务器端,但问题直接来自编码教程。我在询问 MEANjs 应用程序的行为,它是 w.r.t 的框架/组件。部署环境。

标签: mongodb amazon-ec2 meanjs bitnami


【解决方案1】:

好的,经过进一步的调查和过夜/红酒的反思,我想我可以按照上述教程(或类似教程)为像我这样的学习者提供答案。遵循“完成”意味着“在生产环境中工作代码”的敏捷原则,我试图理解最后 5 米作为开发人员试图让代码在具有代表性的生产环境中工作(不会打开不必要的端口) -这个答案是从这个角度写的。 (受到更聪明的读者的欢迎。)

发生了什么

教程中的步骤 (a) 将 Mongo 绑定 IP 地址从 127.0.0.1 更改为 0.0.0.0,以及 (b) 指定使用同一实例的外部 IP 地址的连接 URL,似乎有两个效果:

  1. 它使您正在配置的实例上的 MongoDB 可能对其他实例可用(0.0.0.0 告诉 Mongo “侦听所有可用的网络接口”。)
  2. 这意味着来自同一实例上的 MEAN 应用程序/服务器组件的 IP 流量将与 Mongo 通信,就好像它来自非实例一样(即使它位于同一实例上)。因此,安全组需要打开端口 27017 以允许此流量流动。 (这是 MEANjs 堆栈组件交互方面的关键问题。

修复

  • 在单实例 MEANjs 服务器上,如果您将 Mongo 绑定 IP 地址更改回 127.0.0.1 并将 Mongo 连接 URL 更改为 127.0.0.1:27017,那么您可以关闭 EC2 安全组中的端口 27017并且该应用程序仍然有效。

  • 在多个 MEANjs 应用服务器上共享一个 MongoDB(不想误入 serverfault 领域):

    • 修改Mongo绑定IP为0.0.0.0,
    • 在其他应用/实例连接字符串中使用 Mongo 服务器的私有 IP 地址
    • 添加 EC2 安全组 CIDR 规则 private IP address/24, or private IP address/16 以允许跨指定内部 IP 地址范围内的实例进行访问。

以上内容是开发人员的“hack”,不是对良好做法的建议。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 2023-03-16
    • 2018-07-26
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2021-01-05
    相关资源
    最近更新 更多