Terraform을 사용하여 AWS WAF의 보안 자동화 솔루션 배포 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Terraform을 사용하여 AWS WAF의 보안 자동화 솔루션 배포

작성자: Dr. Rahul Sharad Gaikwad(AWS) 및 Tamilselvan P(AWS)

코드 리포지토리: - 샘플 aws-waf-automation-terraform

환경: PoC 또는 파일럿

기술: 보안, ID, 규정 준수, 인프라, 콘텐츠 제공, DevOps

워크로드: 기타 모든 워크로드

AWS 서비스: AWS WAF

요약

AWS WAF는 웹 액세스 제어 목록(ACL)에서 정의하고 배포하는 사용자 지정 가능한 규칙을 사용하여 일반적인 공격으로부터 애플리케이션을 보호하는 데 도움이 되는 웹 애플리케이션 방화벽입니다. AWS WAF 규칙을 구성하는 것은 어려울 수 있으며, 특히 전담 보안 팀이 없는 조직의 경우 더욱 그렇습니다. 이 프로세스를 단순화하기 위해 Amazon Web Services(AWS)는 AWS WAF의 보안 자동화 솔루션을 제공합니다. 이 솔루션은 웹 기반 공격을 필터링하는 일련의 AWS WAF 규칙을 사용하여 단일 웹 ACL을 자동으로 배포합니다. Terraform 배포 중에 포함할 보호 기능을 지정할 수 있습니다. 이 솔루션을 배포한 후 AWS WAF는 기존 Amazon 배포 또는 애플리케이션 로드 밸런서에 CloudFront 대한 웹 요청을 검사하고 규칙과 일치하지 않는 모든 요청을 차단합니다.

AWS WAF용 보안 자동화 솔루션은 AWS WAF용 보안 자동화 구현 가이드의 지침에 따라 CloudFormation AWS를 사용하여 배포할 수 있습니다. 이 패턴은 HashiCorp Terraform을 선호하는 IaC (코드형 인프라) 도구로 사용하여 클라우드 인프라를 프로비저닝하고 관리하는 조직에 대체 배포 옵션을 제공합니다. 이 솔루션을 배포할 때 Terraform은 클라우드에 변경 사항을 자동으로 적용하고 AWS WAF 설정 및 보호 기능을 배포하고 구성합니다.

사전 조건 및 제한 사항

사전 조건

  • 활성 상태의 AWS 계정.

  • AWS Command Line Interface(AWS CLI)가 설치되고 필요한 권한으로 구성되었습니다. 자세한 내용은 시작하기(AWS CLI 설명서)를 참조하세요.

  • Terraform이 설치 및 구성되어 있습니다. 자세한 내용은 Terraform 설치(Terraform 설명서)를 참조하세요.

제품 버전

  • AWS CLI 버전 2.4.25 이상

  • Terraform 버전 1.1.9 이상

아키텍처

대상 아키텍처

이 패턴은 AWS WAF의 보안 자동화 솔루션을 배포합니다. 대상 아키텍처에 대한 자세한 내용은 AWS WAF의 보안 자동화 구현 가이드아키텍처 개요를 참조하세요. 이 배포에서의 AWS Lambda 자동화, 애플리케이션 로그 파서, AWS WAF 로그 파서, IP 목록 파서, 액세스 핸들러에 대한 자세한 내용은 AWS WAF의 보안 자동화 구현 가이드구성 요소 세부 정보를 참조하세요.

Terraform 배포

terraform apply를 실행하면 Terraform이 다음과 같은 작업을 수행합니다.

  1. Terraform은 testing.tfvars 파일의 입력을 기반으로 IAM 역할 및 Lambda 함수를 생성합니다.

  2. Terraform은 testing.tfvars 파일의 입력을 기반으로 AWS WAF ACL 규칙 및 IP 세트를 생성합니다.

  3. Terraform은 testing.tfvars 파일의 입력을 기반으로 아마존 심플 스토리지 서비스 (Amazon S3) 버킷 EventBridge , 아마존 규칙, AWS Glue 데이터베이스 테이블, 아마존 아테나 작업 그룹을 생성합니다.

  4. Terraform은 AWS CloudFormation 스택을 배포하여 사용자 지정 리소스를 프로비저닝합니다.

  5. Terraform은 testing.tfvars 파일의 지정된 입력을 기반으로 Amazon API Gateway 리소스를 생성합니다.

자동화 및 규모 조정

이 패턴을 사용하여 여러 AWS 계정 및 AWS 리전에 대한 AWS WAF 규칙을 생성하여 AWS 클라우드 환경 전체에 AWS WAF의 보안 자동화 솔루션을 배포할 수 있습니다.

도구

서비스

  • AWS Command Line Interface(AWS CLI)는 명령줄 쉘에서 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다.

  • AWS WAF는 보호되는 웹 애플리케이션 리소스로 전달되는 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 엔지니어

계획을 확인합니다.

계획을 검토하고 대상 AWS 계정에 필요한 아키텍처가 구성되어 있는지 확인합니다.

DevOps 엔지니어

솔루션을 배포합니다.

  1. 다음 명령을 입력하여 계획을 적용합니다.

    terraform apply -var-file="testing.tfvars"
  2. yes를 입력하여 확인합니다. Terraform은 구성 파일에 선언된 목표 상태를 달성하기 위해 인프라를 생성, 업데이트 또는 파괴합니다. 순서에 대한 자세한 내용은 이 패턴의 아키텍처 섹션에서 Terraform 배포를 참조하세요.

DevOps 엔지니어
작업설명필요한 기술

변경 사항을 확인합니다.

  1. Terraform 콘솔에서 출력이 예상 결과와 일치하는지 확인합니다.

  2. Management Console에 로그인합니다.

  3. Terraform 콘솔의 출력이 AWS 계정에 성공적으로 배포되었는지 확인합니다.

DevOps 엔지니어

(선택 사항) 인프라를 정리합니다.

이 솔루션으로 수행한 모든 리소스 및 구성의 변경 내용을 제거하려면 다음을 수행합니다.

  1. Terraform 콘솔에서 다음 명령을 입력합니다.

    terraform destroy -var-file="testing.tfvars”
  2. yes를 입력하여 확인합니다.

DevOps 엔지니어

문제 해결

문제Solution

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