多安全组如何叠加
实例可以同时加入多个安全组,判定取所有规则的并集:任意一个安全组中有匹配的放行规则,流量即可通过。因此「把实例再加进一个严格的安全组」并不能收窄权限,权限只会越并越大。想收紧访问,正确做法是回到已有安全组里删掉或调整那条放行规则,而不是叠加新组。
叠加判定示意
叠加判定示意
实例 ECS-01 同时加入:
sg-web(放行 80/443)
sg-ops(放行 22)
判定结果:80、443、22 全部放行(取并集)
要收紧 22:应从 sg-ops 移除异常来源规则,而不是新增严格安全组基本信息
| 判定规则 | 多组规则取并集,任一放行即通过 |
|---|---|
| 实践建议 | 控制实例关联的安全组数量,规则按角色集中管理 |
| 审计要点 | 定期反查「实例与安全组」绑定关系,清理历史遗留 |
| 数量上限 | 单实例可加入的安全组数量有上限,见厂商文档 |
典型使用场景
- 运维通道独立成组:业务组管业务端口,运维组管管理端口
- 临时授权:把实例加入一个临时组开放调试端口,用完及时移出
- 存量梳理:反查实例关联了哪些组,找出历史遗留的宽放行
- 故障排查:端口不通时穷举实例关联的所有安全组,而不是只看一个
常见误解与事实
| 误解 | 事实 |
|---|---|
| 加一个严格组可以收紧权限 | 规则取并集,权限只增不减 |
| 组内优先级跨组生效 | 优先级只在单个安全组内部比较 |
| 移出组不影响已有实例 | 移出后对应放行立即失效 |
规则叠加不可收窄是高频误解:排查端口问题时要把实例关联的所有安全组过一遍。
治理建议
把「实例与安全组的绑定关系」当作资产来管理:按角色划组(Web、应用、数据、运维),让实例尽量只归属少数职责明确的安全组;临时调试用单独的安全组,用完立即解绑。每隔一段时间做一次反查,把长期未使用的绑定与宽放行条目清理掉,并核对是否存在对 0.0.0.0/0 开放管理端口的实例。规则越少越集中,出问题时越容易在几分钟内定位。