我不擅长网络管理,所以我需要一些帮助才能在 AWS 上做一些非常基本的事情。基本上,我在 vpc 上有一个 RDS 数据库,我们称之为 VPC1。该数据库还与 VPC 安全组“默认:sg1”相关联
我有一个 API 服务器,需要使用 ECS 访问作为 Docker 映像(服务)运行的数据库。此 API 服务器与同一 VPC ID VPC1 上的负载均衡器相关联。该任务具有外部 IP XXX.XXX.XXX.XXX 和内部 IP YYY.YYY.YYY.YYY
我想要做的就是允许 ECS 服务访问数据库,但禁用所有其他外部访问。
我尝试了以下方法:
- 将私有 IP 添加到入站 SG 规则
- 将公共 IP 添加到入站 SG 规则
- 将任务所属网络的安全组添加到 SG 规则中,为了进行测试,协议设置为“全部”
这些似乎都不起作用。我在这里遗漏了什么?
答案1
我通常使用安全组引用而不是 IP 来执行此操作。确保每个资源(DB、ECS)都分配有一个不用于其他用途的安全组 - 即不是默认 SG。默认可行,但这不是好的做法,而且更难跟踪。
您需要输入匹配的安全组规则以允许流量从 ECS 流出到 DB,并从 ECS 流入 DB:
- ECS SG:允许出站连接到所需端口上的 DB SG。
- DB SG:允许入站连接从所需端口上的 DB SG。
由于安全组是有状态的,因此您不需要允许进入 ECS 或从 DB 传出。
如果出于某种原因您需要使用 IP 执行此操作,请确保使用私有 IP 而不是公共 IP。在 AWS 中,公共 IP 仅在互联网网关中进行转换,不会在 VPC 中使用。