如何逆向导出AWS Web ACL与WAF规则为Terraform配置代码
AWS WAF存量配置迁移Terraform方案
配置生成工具选项
- Terraform官方没有内置一键导出WAF配置生成TF代码的能力,原生
terraform import只负责把线上资源绑定到本地已写好的TF资源块,不会自动生成配置内容,网上能搜到的EC2导入案例也都是基于这个逻辑,不是自动生成代码。 - 不需要全量手动复刻配置,社区成熟的第三方开源Terraform导出工具已经完整支持WAFv2全资源扫描,覆盖Web ACL、自定义规则、托管规则组绑定、IP集、正则匹配集、日志投递配置、关联资源绑定等所有WAF相关配置项,只要指定扫描范围即可直接生成TF基础代码。注意如果是绑定CloudFront的WAF资源属于全局资源,扫描时要指定us-east-1区域,否则会查不到对应资源。
一致性校验规则
不管是工具生成的代码还是手动写的代码,最终都必须通过命令校验确认和线上配置一致,没有捷径:
- 代码准备完成后先执行
terraform init初始化对应版本的AWS Provider - 逐一对每个WAF相关资源执行
terraform import,把线上资源的元数据同步到本地state文件 - 执行
terraform plan,当输出结果显示No changes. Your infrastructure matches the configuration.时,才代表本地代码和线上存量配置完全对齐,没有偏差。
手动编写的优化建议
如果出于安全考虑不使用第三方导出工具,选择手动复刻配置时不用等所有代码全部写完再校验:
- 按资源粒度拆分编写,写完一个资源块就同步做导入、plan校验、调整差异,逐块对齐,比全量写完再集中排查差异效率高很多
- 注意区分WAF Classic和WAFv2的资源类型,两类资源的TF字段定义差异极大,不要写错资源类型导致校验不通过。
内容的提问来源于stack exchange,提问作者User61622
相关产品推荐
相关产品推荐

