설명
AWS WAF를 연결하지 않은 API Gateway REST API 스테이지에는 WAF 웹 ACL의 요청 검사와 차단이 적용되지 않습니다. 웹 요청의 악용을 줄이는 통제가 필요하다면 API의 용도와 기존 보호에 맞는 WAF 구성을 검토해야 합니다.
WAF는 규칙에 따라 요청을 처리하며 호출자 인증, 애플리케이션 권한 검사나 취약점 수정을 대신하지 않습니다. 웹 ACL을 연결하는 것만으로 모든 공격이 차단되는 것은 아닙니다.
잠재적 영향
- 필요한 요청 필터링이 없으면 악성 입력이나 반복 요청이 애플리케이션에 도달할 수 있습니다.
- 부적절한 차단 규칙은 정상 고객의 요청을 거부할 수 있습니다.
해결 방법
보호가 필요한 REST API 스테이지에 같은 리전의 REGIONAL 웹 ACL을 연결하세요. API 동작에 맞는 관리형·사용자 지정 규칙을 선택하고 먼저 Count 동작 등으로 영향을 확인한 뒤 필요한 차단을 적용하세요. 실제 연결 대상, 요청 기록과 정상 트래픽을 확인하고 인증과 애플리케이션 보안도 유지하세요.
예시
REST API와 배포, 웹 ACL은 별도 입력입니다. ApiWebAclArn에는 같은 리전의 REGIONAL 웹 ACL ARN을 제공하세요. 규칙 정의와 로그 구성은 생략했습니다.
변경 전
yaml
Resources:
ProdStage:
Type: AWS::ApiGateway::Stage
Properties:
StageName: Prod
RestApiId: !Ref MyRestApi
DeploymentId: !Ref ApiDeployment
이 발췌에는 스테이지와 웹 ACL의 연결이 없습니다. 별도로 적용 중인 보호와 실제 연결 상태를 확인하세요.
변경 후
yaml
Resources:
ProdStage:
Type: AWS::ApiGateway::Stage
Properties:
StageName: Prod
RestApiId: !Ref MyRestApi
DeploymentId: !Ref ApiDeployment
ProdStageWebAclAssociation:
Type: AWS::WAFv2::WebACLAssociation
Properties:
WebACLArn: !Ref ApiWebAclArn
ResourceArn: !Sub arn:${AWS::Partition}:apigateway:${AWS::Region}::/restapis/${MyRestApi}/stages/${ProdStage}
현재 리전의 MyRestApi와 ProdStage를 참조해 웹 ACL을 연결합니다. 웹 ACL의 규칙과 동작을 구성하고 정상·악성 요청에 대한 결과를 확인하세요.