通过 Terraform 部署 Security Automations for AWS WAF 解决方案 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

通过 Terraform 部署 Security Automations for AWS WAF 解决方案

由 Rahul Sharad Gaikwad 博士 (AWS) 和 Tamilselvan P (AWS) 编写

代码存储库:aws-waf-automation-terraform-sam ples

环境:PoC 或试点

技术:安全、身份、合规;基础架构;内容交付; DevOps

工作负载:所有其他工作负载

Amazon Web Services:AWS WAF

Summary

AWS WAF 是一款 Web 应用程序防火墙,通过使用自定义规则(可在 Web 访问控制列表(ACL) 中定义和部署)来帮助保护应用程序免受常见漏洞攻击。配置 AWS WAF 规则可能具有挑战性,对于没有专门安全团队的组织而言更是如此。为简化此流程,Amazon Web Services (AWS) 提供了 Security Automations for AWS WAF 解决方案,该解决方案可自动部署单个 Web ACL,其中包含一组用于过滤 基于 Web 的攻击的 AWS WAF 规则。Terraform 部署期间,您可以指定要纳入的保护功能。部署此解决方案后,AWS WAF 会检查向现有 Amazon CloudFront 分配或应用程序负载均衡器发出的网络请求,并阻止任何不符合规则的请求。

AWS WAF 安全自动化解决方案可按照《AW CloudFormation S WA F 安全自动化实施指南》中的说明使用 AWS 进行部署。这种模式为使用 HashiCorp Terraform作为其首选基础设施即代码 (IaC) 工具来配置和管理其云基础架构的组织提供了另一种部署选项。当您部署此解决方案时,Terraform 会自动将更改应用至云端,部署并配置 AWS WAF 设置和保护功能。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account。

  • 具有所需权限的 AWS 命令行界面(AWS CLI)已安装并配置。有关更多信息,请参阅入门(AWS CLI 文档)。

  • Terraform,已安装并配置。有关更多信息,请参阅安装 Terraform(Terraform 文档)。

产品版本

  • AWS CLI 版本 2.4.25 或更高版本

  • Terraform 版本 1.1.9 或更高版本

架构

目标架构

此模式部署了 Security Automations for AWS WAF 解决方案。有关目标架构的更多信息,请参阅 Security Automations for AWS WAF 实施指南中的架构概述。有关此部署中的 AWS Lambda 自动化、应用程序日志解析器、AWS WAF 日志解析器、IP 列表解析器和访问处理程序的更多信息,请参阅 Security Automations for AWS WAF 实施指南中的组件详细信息

Terraform 部署

当您运行 terraform apply 时,Terraform 会执行以下操作:

  1. Terraform 根据 testing.tfvars 文件中的输入创建 IAM 角色和 Lambda 函数。

  2. Terraform 根据 testing.tfvars 文件中的输入创建 AWS WAF ACL 规则和 IP 集。

  3. Terraform 根据测试.tfvars 文件中的输入创建了亚马逊简单存储服务 (Amazon S3) 存储桶 EventBridge 、亚马逊规则、AWS Glue 数据库表和亚马逊 Athena 工作组。

  4. Terraform 部署 AWS CloudFormation 堆栈来配置自定义资源。

  5. Terraform 根据 testing.tfvars 文件中的指定输入创建 Amazon API Gateway 资源。

自动化和扩缩

您可以使用此模式为多个 Amazon Web Services Account 和 AWS 区域 创建 AWS WAF 规则,以在整个 Amazon Web Services Cloud 环境中部署 Security Automations for AWS WAF 解决方案。

工具

Amazon Web Services

  • AWS 命令行界面(AWS CLI)是一种开源工具,它可帮助您通过命令行 Shell 中的命令与 Amazon Web Services 交互。

  • AWS WAF 是一种 Web 应用程序防火墙,可帮助您监视转发至受保护 Web 应用程序资源的 HTTP 和 HTTPS 请求。

其他服务

  • Git 是开源分布式版本控制系统。

  • HashiCorp Terraform 是一款命令行界面应用程序,可帮助您使用代码来配置和管理云基础架构和资源。

代码存储库

此模式的代码可在使用 Terraform 的 GitHub AWS WAF 自动化存储库中找到。

最佳实践

  • 将静态文件置于单独的 S3 存储桶。

  • 避免对变量执行硬编码。

  • 限制自定义脚本的使用。

  • 采用副本命名约定。

操作说明

任务描述所需技能

安装 Git。

按照入门(Git 网站)中的说明在本地工作站上安装 Git。

DevOps 工程师

克隆存储库。

在您的本地工作站上,输入以下命令以克隆代码存储库。若要复制完整命令(包括存储库 URL),请参阅此模式的其他信息部分。

git clone <repo-URL>.git
DevOps 工程师

更新变量。

  1. 通过输入以下命令导航到克隆的目录。

    cd terraform-aws-waf-automation
  2. 在任何文本编辑器中,打开 testing.tfvars文件。

  3. 更新 testing.tfvars 文件中变量的值。

  4. 保存并关闭文件。

DevOps 工程师
任务描述所需技能

初始化 Terraform 配置。

输入以下命令,以初始化包含 Terraform 配置文件的工作目录。

terraform init
DevOps 工程师

预览 Terraform 计划。

输入以下 命令。Terraform 会评估配置文件,以确定已声明资源的目标状态。然后,其将比较目标状态与当前状态,并创建计划。

terraform plan -var-file="testing.tfvars"
DevOps 工程师

验证计划。

查看计划,并确认它已在您的目标 Amazon Web Services Account 中配置了所需架构。

DevOps 工程师

部署解决方案。

  1. 输入以下命令,以应用计划。

    terraform apply -var-file="testing.tfvars"
  2. 输入 yes以确认。Terraform 创建、更新或销毁基础设施,以实现配置文件中声明的目标状态。有关序列的更多信息,请参阅此模式的架构部分中的 Terraform 部署

DevOps 工程师
任务描述所需技能

验证更改。

  1. 在 Terraform 控制台中,验证输出是否与预期结果相符。

  2. 登录 AWS 管理控制台。

  3. 验证 Terraform 控制台中的输出是否已成功部署至您的 Amazon Web Services Account。

DevOps 工程师

(可选)清理 基础架构。

如果想删除此解决方案所执行的所有资源和配置更改,请执行以下操作:

  1. 在 Terraform 控制台中,输入以下命令。

    terraform destroy -var-file="testing.tfvars”
  2. 输入 yes以确认。

DevOps 工程师

故障排除

问题解决方案

WAFV2 IPSet: WAFOptimisticLockException 错误

如果运行 terraform destroy 命令时收到此错误,则必须手动删除 IP 集。有关说明,请参阅删除 IP 集(AWS WAF 文档)。

相关资源

AWS 参考

Terraform 参考

其他信息

以下命令克隆此模式的 GitHub 存储库。

git clone https://github.com/aws-samples/aws-waf-automation-terraform-samples.git