본 문서는 AWS WAF 에서 제공하는 Full Logging 을 설정하는 방법을 설명하기 위한 내용을 다룹니다.
AWS WAF Full Logging 을 사용하기 위해서는 아래와 같은 내용이 설정되어야 합니다.
- Full Log 저장을 위한 S3 Bucket.
- WAF 가 ALB/API Gateway 에 사용된 경우에는 S3 Bucket 을 WAF 와 동일한 Region 에 생성하면 되지만 CloudFront 에 WAF 를 사용하는 경우에는 S3 Bucket 은 반드시 North Virginia Region 으로 선택되어야 합니다.
2. WAF 로부터 Log Stream 을 S3 로 전달하기위한 Kinesis Firehose
- S3 Bucket 과 마찬가지로 WAF 가 ALB/API Gateway 에 사용된 경우에는 Kinesis Firehose를 WAF 와 동일한 Region 에 생성하면 되지만 CloudFront 에 WAF 를 사용하는 경우에는 Kinesis Firehose는 반드시 North Virginia Region 으로 선택되어야 합니다.
- Kinesis Firehose 의 이름은 반드시 “aws-waf-logs-” 로 시작하는 이름이어야 합니다.
3. Kinesis 에서 Log 전달 과정에서 사용할 Role
4. AWS WAF 에서 Full Log 활성화
설정 방법
- Amazon Kinesis 설정
- : Kinesis Firehose 설정을 위하여 AWS Console 화면에서 Kinesis 메뉴로 이동한 후 “Get Started” 버튼을 클릭합니다.
아래와 같은 화면에서 Firehose Stream 생성을 위하여 “Create Delivery Stream” 버튼을 클릭합니다.
Delivery Stream 생성을 위하여 아래와 같이 임의의 이름을 입력합니다. 단, 반드시 “aws-waf-logs-” 로 시작하는 이름이어야 합니다.
“Choose Source” 메뉴에서는 Source 를 “Direct PUT or other sources” 를 선택합니다.
“Process records” 메뉴에서는 “Record Transformation” 을 “Disabled” 로 선택하고 “Record format conversion 도 “Disabled” 로 선택합니다.
이후 “Next” 버튼을 클릭합니다.
아래와 같은 화면에서 “Select Destination” 을 “Amazon S3” 로 선택합니다.
WAF 의 Log Message 를 수신할 S3 Destination 을 사전에 설정해 둔 S3 Bucket 으로 선택합니다.
이후 “Next” 버튼을 클릭합니다.
다음 화면에서 “Configure Settings” 의 “Buffer Interval” 을 60초로 수정합니다.
S3 로 저장되는 Log Message 를 Firehose 에서 압축하여 전달하도록 “S3 Compression” 옵션을 “GZIP” 으로 선택하고 “IAM Role” 에는 Kinesis Firehose 를 위한 IAM Role 을 선택합니다.
*사전에 IAM Role 을 생성하지 않은 경우에는 “Create new or choose” 버튼을 클릭한 후 생성하실 수 있습니다.
“Next” 버튼을 클릭합니다.
Kinesis Firehose 생성을 위한 설정 사항을 확인한 후 “Create delivery stream” 버튼을 클릭합니다.
정상적으로 진행이 되면 Amazon Kinesis 메뉴 중 Data Firehose 세부 항목에 아래와 같이 Delivery Stream 이 생성된 것을 확인하실 수 있습니다.
WAF 메뉴로 이동하여 Full Log 를 활성화할 WEB ACL 을 선택한 후 화면 우측의 “Logging” 메뉴에서 “Enable Logging” 버튼을 클릭합니다.
다음 화면에서 아래와 같이 이전 단계에서 생성하였던 Kinesis Firehose 를 선택한 후 “Create” 버튼을 클릭합니다.
AWS WAF 의 Full Logging 설정이 정상적으로 완료되고 해당 웹 사이트에 접속하여 트래픽을 생성하면 아래와 같이 Log Message 를 수신하는 S3 Bucket 에 Log Message 가 압축 파일 형태로 저장되는 것을 확인하실 수 있습니다.
감사합니다.