相信接触过安全组的同学肯定都知道0.0.0.0/0,这个特殊的地址段代表了所有IPV4地址,当您不能确认目标或来源地址时一般就用它来代替,例如,公网提供HTTP服务的应用就会利用0.0.0.0/0作为公网安全组入规则的来源地址。
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。
内网安全组互通设置方法:
1. 使用IP地址授权
如果内网互联的实例数量较少,建议使用IP地址授权方式。
设置方法:在安全组列表控制台,选择想要互通的实例的安全组,点击“添加安全组规则”,“授权类型”选择“地址段访问”,在“授权对象”中填入想要互通的实例的内网IP地址, 格式例如:a.b.c.d/32。
优点:安全组规则清晰,好理解。
缺点:有可能受到安全组规则条数100条的限制,实例数目发生变化时维护工作量较大。
2. 加入同一安全组
如果您的网络架构比较简单,实例中部署的业务相同,您就可以为所有的实例选择相同的安全组,绑定同一安全组的实例之间不用设置特殊规则、默认是网络互通的。
优点:安全组规则清晰。
缺点:适用于单一的应用架构,网络架构变更时需要做调整。
3. 绑定互通安全组
为需要互通的实例新添加绑定一个专门互通用的安全组,适用于较为复杂的网络架构。
设置方法:新建一个安全组,命名为“互通安全组”,不用给新建的安全组添加任何规则。将需要互通的实例都添加绑定新建的“互通安全组”,利用同一安全组的实例之间默认互通的特性,达到内网实例互通的效果。
优点:操作简单,适用于复杂网络架构。
缺点:安全组规则阅读性较差。
4. 安全组互信授权
如果您的网络架构比较复杂,各实例上部署的应用都有不同的业务角色,您就可以选择使用安全组互相授权方式。
设置方法:在安全组列表控制台,分别选择想要建立互信的实例的安全组,点击“添加安全组规则”,授权类型选择“安全组访问”
在添加经典网络安全组内网入方向规则时,选择“授权策略”为“允许”, “授权类型”为“安全组访问”。您将会看到右侧的两个选择:“本账号授权”,“跨账号授权”,按照您的组网要求,将有互联需求的对端实例的安全组ID填入下方的授权对象中,这样就建立了安全组互信,建立安全组互信后的实例间通信就没有阻碍了。
优点:安全组规则结构清晰、阅读性强、可跨账户互通
缺点:操作稍复杂
适用范围:
- 使用IP地址授权:适用于小规模实例间内网互通场景
- 加入同一安全组:适用于所有实例同属于单一应用架构场景
- 绑定互通安全组:快速达到内网互通效果,适用于多层应用网络架构场景
- 安全组互信授权:规则结构清晰,阅读性强,适合多层应用网络架构场景
推荐的0.0.0.0/0替换流程
如果安全组规则变更操作不当,可能会导致您的实例间通信受到影响,请在修改设置前备份您要操作的安全组规则,以便出现互通问题时及时恢复。
另外,安全组是实例级别防火墙,它映射了所绑定的实例在整个应用网络架构中的业务角色,所以推荐大家按照自己的应用网络架构规划防火墙。例如:常见的三层WEB应用架构就可以规划为三个安全组:1. WEB 层安全组 (开放80端口)2. APP 层安全组(开放8080端口) 3 DB层安全组 (开放3306端口)。