我在实现统一安全组同步逻辑,发现很多问题,求助下 v 友,看有没有更好的设计
现有实现:
- 本地会存储安全组及安全组下的基础规则
- 存储本地安全组和各个云平台(阿里云,腾讯云,华为云,aws, etc...)的安全组 id 映射关系
-
虚拟机创建时会根据虚拟机所在的 vpc 及本地安全组查找对应云平台的安全组映射
- 如果找到直接使用对应云的安全组
- 若没有找到就创建对应云的安全组并和本地安全组 id 做映射,以便下次使用
- 本地安全组规则变更会同步本地安全组规则到各个云平台
其中 1 2 3 步骤其实都没啥大问题,问题主要出现在 4 上
由于各个云实现的安全组规则并不尽相同
- 有的支持目标是安全组的安全组规则
- 有的支持优先级有的不支持,优先级顺序及范围又不尽相同
- 有的仅支持 allow 规则
由于设计时是本地 1 对多个云平台,所以在同步规则时,或多或少会导致规则同步异常
- 本地没支持目标是安全组的安全组规则,若云上刚好有一个这样的规则,在修改本地安全组后,对应的云平台的这条规则可能会被冲掉
- 本地修改一条安全组规则,由于优先级的问题,可能会导致同步修改多条安全组规则
- 同步会导致安全组规则和云上不一致
现打算移除掉步骤 4 ,只第一次创建安全组时同时创建规则,后面的规则维护直接到各个云管理
或者 v 友有没有好的方式去实现步骤 4