AWS 安全组是作用在每一个实例上的网络安全控制单元,相当于传统数据中心的防火墙,它是一个有状态的防火墙,安全组规则可控制允许到达与安全组关联的实例的入站流量以及允许离开实例的出站流量。,一般我们只需要设定它允许的入站协议端口即可。
下面以一个Web服务器(面向Internet,放在公有子网)和数据库服务器(只接受Web服务器的访问,放在私有子网)的安全组设置作为示例。
1、 创建一个Web 服务安全组,命名为“SG-web” 开放80、443、22端口。并把此安全级引用至创建的EC2中

注意上图中的SSH “Source”的下拉框中选择了“My IP”自动会填充为您当前访问AWS控制台所用的公网IP。建议用这样的方式来设置SSH的“Source”这样设置就只有您当前所有的IP地址可以连接这个EC2实例,安全风险更小。
创建完成后在控制台安全组列表中可以看到。

之后再创建Web EC2实例,并在第6步“选择一个现有的安全组”,选中已创建的“SG-Web”此EC2启动后就开放了80.443、和22端口。

2、 创建一个数据库服务器安全组,命名为”SG-DB” 开放3306和22端口(用于数据库的日常管理)。并把此安全组引用到新创建的DB EC2中。

注意下图的“source”都是选择的“custom”并且用“SG-Web”
安全组作为“source”。这样做的原因是DB EC2放置在私有子网,一般在生产环境中,会在公有子网中放置一个堡垒机,DB管理员会先登陆到堡垒机,再登陆DB进行操作。所以如果是在有堡垒机的环境中,此处的“source”可以引用堡垒机的安全组或私有IP地址。

创建安全组完成后可以在控制台安全组列表中看到。

创建DB EC2 实例时,在第6步 “选择一个现有的安全组”,选中SG-DB 安全组,即可只能Web EC2(可堡垒机)开放3306 和22端口。

更多关于AWS 安全组相关的信息请参考:
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2-security-groups.html