我目前有以下设置:
- 使用 Elastic Beanstalk 运行的 API (Node.JS),目前仅运行一个 EC2 实例
- 在单独的 EC2 实例上运行的 MongoDB 实例
目前,我有两个安全组,一个用于数据库,我们称之为sg-db,另一个由 Elastic Beanstalk 生成,称为awseb-e-wwbtetapaa-stack-AWSEBSecurityGroup-xx。
在sg-db上,我将端口 27017 打开到 0.0.0.0/0。我正在尝试关闭该端口,以便只有我的 Elastic Beanstalk 应用程序可以访问它。我已经尝试为awseb-e-wwbtetapaa-stack-AWSEBSecurityGroup-xx打开 27017 ,但它没有用,我仍然无法访问它。
出于测试目的,我尝试连接运行 API 的 EC2 实例,然后尝试在我的数据库实例上打开端口 22,我尝试在awseb-e-wwbtetapaa-stack-AWSEBSecurityGroup-xx和amazon-elb上打开端口 22 -sg。两者都不起作用。
任何人都知道如何关闭 MongoDB 端口?现在将它开放到 0.0.0.0/0 是一个相当大的安全漏洞。
编辑
我弄清楚了发生的问题。显然,在指定 Elastic Beanstalk 应用程序的安全组时,您不能使用公共 IP。使用私有 IP 似乎工作得很好。所以现在我只需要找到一种方法来设置“静态”私有 IP 或类似的解决方案。
编辑 2
似乎在 EC2 实例中使用公共 DNS 时会返回私有 IP。
我弄清楚了发生的问题。显然,在指定 Elastic Beanstalk 应用程序的安全组时,您不能使用公共 IP。使用私有 IP 似乎工作得很好。似乎在 EC2 实例中使用公共 DNS 时会返回私有 IP。因此,我现在没有尝试连接到弹性 IP,而是连接到公共 DNS,它工作得很好。