AWS建议使用私有子网作为私有资源。
如果您的实例不应该直接从internet访问,请使用私有子网。使用堡垒主机或NAT网关从私有子网中的实例访问互联网。
但是,我想了解如何更好地放置资源的基本原理,比如说在公共子网上的EC2实例。然后添加一些非常严格的安全组来阻止公共访问。这是一种不太安全的方法吗?还是从安全角度来看,技术上的结果是一样的?
我从未听说过安全组出现故障,因此如果使用IP地址/端口的受限列表正确配置安全组,则应该是安全的。
但是
在典型的云部署应用程序中,您没有或想要严格控制的访问。相反,典型的云部署应用程序是一个向世界公开端口80的web应用程序。
一旦你向世界公开了任何端口,你的安全性就完全取决于监听该端口的内容。你的网络服务器中有漏洞吗?您现在已经让攻击者能够访问网络内部的资源。如果你的服务器有AWS访问密钥,那么攻击者也有。
将服务器放在专用子网中,并在其前面设置负载均衡器,目的是减少攻击面。据推测,攻击者在ALB中发现漏洞的可能性较小(与Apache、nginx或您正在使用的任何软件相比(,AWS更有可能以比您更快的速度缓解任何此类漏洞(因为他们不需要等待外部维护人员提供补丁(。
当然,您编写的代码可能存在由标准HTTP(s(请求触发的漏洞。然而,即使在这种情况下,您也可以通过控制应用程序可以访问的内容来减少爆炸半径。具有公共IP的实例可以访问互联网上的任何,除非您严格控制其安全组中的出口规则。在私有子网中,只能访问专有网络内的东西。
因此,归根结底,这是一个简单的问题:是的,你可以创建一个安全的环境,让每个主机都在互联网上。事实上,这就是AWS在引入VPC之前的工作方式。但依赖VPC提供基本安全级别更容易(就像在非云部署中,您依赖公司防火墙提供基本安全等级一样(。