Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
AWS WAF 로깅을 활성화하고 CloudWatch, Amazon S3 또는 Firehose로 로그를 보내려면 어떻게 해야 합니까?
AWS WAF 로깅을 활성화하고 로그를 Amazon CloudWatch, Amazon Simple Storage Service(Amazon S3) 또는 Amazon Data Firehose로 전송하려고 합니다.
간략한 설명
먼저 AWS WAF 웹 액세스 제어 목록(웹 ACL)에 대해 대상을 선택합니다. AWS WAF 로그를 켜려면 필요한 권한을 설정해야 합니다. AWS WAF는 다음과 같은 로그 대상을 지원합니다.
그런 다음 대상에 대한 AWS WAF 로그를 활성화합니다.
해결 방법
사전 요구 사항:
- 로그 그룹 이름은 aws-waf-logs- 접두사로 시작해야 합니다.
- 로그 그룹은 웹 ACL과 동일한 AWS 계정 및 리전에 있어야 합니다. Amazon CloudFront와 연결된 글로벌 웹 ACL의 경우, 로그 그룹이 미국 동부(버지니아 북부) 리전에 있어야 합니다.
- 준수해야 하는 CloudWatch Logs 로그 그룹 및 Firehose 할당량을 검토합니다.
CloudWatch Logs 로그 그룹의 권한 구성
새 로그 그룹을 생성하거나 기존 로그 그룹을 사용합니다. CloudWatch Logs Insights를 사용하여 AWS WAF 로그를 분석합니다.
로그 그룹에서 생성하는 로그 스트림에는 Region_web-acl-name_log-stream-number 형식을 사용합니다.
CloudWatch Logs에 로그를 게시하는 데 필요한 권한을 구성합니다. 사용자에게 필요한 권한이 있으면 CloudWatch는 AWS WAF가 로그를 보내도록 허용하는 다음과 같은 리소스 기반 정책을 로그 그룹에 자동으로 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite20150319", "Effect": "Allow", "Principal": { "Service": ["delivery.logs.amazonaws.com"] }, "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": ["arn:aws:logs:us-east-1:0123456789:log-group:my-log-group:log-stream:*"], "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }
참고: SourceAccount를 해당 계정 번호로 바꾸고 SourceARN을 해당 Amazon 리소스 이름(ARN)으로 바꾸십시오.
로그 그룹에 로그가 보이지 않는 경우 DescribeResourcePolicies API를 사용하여 리소스 기반 정책에 필요한 권한이 있는지 확인하십시오. 리소스 기반 정책을 편집하려면 PutResourcePolicy API를 사용하십시오.
로깅 권한에 대한 자세한 내용은 AWS 서비스에서 로깅 활성화를 참조하십시오.
Amazon S3 버킷에 대한 권한 구성
AWS WAF 로그를 S3 버킷으로 전송하면 Amazon Athena를 사용하여 AWS WAF 로그를 분석할 수 있습니다.
S3 버킷에 로그를 게시하는 데 필요한 권한을 구성합니다. 사용자에게 필요한 권한이 있으면 AWS는 AWS WAF가 로그를 전송하도록 허용하는 다음 정책을 버킷에 자동으로 추가합니다.
{ "Version": "2012-10-17", "Id": "AWSLogDeliveryWrite20150319", "Statement": [ { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } } ] }
참고: SourceAccount를 해당 계정 번호로 바꾸고 SourceARN을 해당 ARN으로 바꾸십시오.
버킷에서 로그가 보이지 않는 경우 GetBucketPolicy API를 사용하여 버킷 정책에 필요한 권한이 있는지 확인하십시오. 버킷 정책을 편집하려면 PutBucketPolicy API를 사용하십시오.
다른 계정이나 리전으로 로그를 보내려면 중앙 집중식 로깅 계정의 Amazon S3 버킷으로 AWS WAF 로그를 보내려면 어떻게 해야 합니까?를 참조하십시오.
Firehose에 대한 권한 구성
Firehose 전송 스트림을 구성합니다. 데이터 변환 및 레코드 형식 변환 옵션을 꺼진 상태로 유지합니다. 전송 스트림의 대상을 구성하려면 대상 설정 구성을 참조하십시오. 자세한 내용을 보려면 콘솔에서 Firehose 스트림 생성을 참조하십시오.
참고: AWS WAF 로그 하나는 Firehose 레코드 하나와 같습니다.
Firehose 전송 스트림에 로그를 게시하는 데 필요한 권한을 구성합니다. 서비스 연결 역할 및 iam:CreateServiceLinkedRole 권한에 대한 자세한 내용은 AWS WAF에 서비스 연결 역할 사용을 참조하십시오.
AWS WAF 로그 활성화
다음 단계를 완료합니다.
- AWS WAF 콘솔을 엽니다.
- 탐색 창의 AWS WAF에서 리소스 및 보호 팩을 선택합니다.
- 보호 팩을 찾은 다음 로깅 옆에 있는 보기 및 편집을 선택합니다.
- 로깅에서 활성화를 선택합니다.
- 로깅 대상을 선택합니다.
- 로깅 대상의 오른쪽 창에서 대상을 선택합니다.
- 수정된 필드에서는 로그에서 생략할 필드를 선택합니다.
- 로그 필터링에서는 저장하려는 요청에 대한 필터를 추가합니다.
- 저장을 선택합니다.
관련 콘텐츠
- 질문됨 일 년 전
- 질문됨 일 년 전
- 질문됨 일 년 전

