AWS WAF 로그를 다른 계정 또는 AWS 리전의 Amazon Simple Storage Service(S3) 버킷으로 전송하려면 어떻게 해야 합니까?
간략한 설명
AWS WAF 로그를 중앙 집중식 로깅 계정의 Amazon S3 버킷으로 전송하려면 다음을 수행하십시오.
- 중앙 집중식 로깅 계정에 S3 버킷을 생성하십시오. 이 버킷은 선택한 AWS 리전에서 **aws-waf-logs-**로 시작하는 버킷 이름을 가지고 있습니다.
- 소스 계정에서 로그를 전송할 수 있는 S3 버킷으로 버킷 정책을 생성 및 추가합니다.
- AWS CLI 명령 put-logging-configuration을 사용하여 중앙 집중식 로깅 계정의 S3 버킷으로 로그를 전송하도록 웹 액세스 제어 목록(웹 ACL)을 구성합니다.
해결 방법
선택한 리전의 중앙 집중식 로깅 계정에 S3 버킷을 생성
- 선택한 AWS 리전의 중앙 집중식 로깅 계정에 S3 버킷을 생성합니다.
- 접두사 **aws-waf-logs-**로 시작하는 버킷 이름을 입력합니다.
예: aws-waf-logs-example-bucket
S3 버킷에 버킷 정책을 생성 및 추가
S3 버킷에 다음 S3 버킷 정책을 추가
중요:
- aws:SourceAccount의 계정 ID를, 이 버킷으로 로그를 전송할 소스 계정의 계정 ID 목록으로 바꿉니다.
- aws:SourceArn의 ARN을 이 버킷에 arn:aws:logs:*:source-account-id:* 형식으로 로그를 게시할 소스 리소스의 ARN 목록으로 바꿉니다.
- 리소스의 S3 버킷 이름 aws-waf-logs-example-bucket을 S3 버킷의 이름으로 바꿉니다.
{
"Version": "2012-10-17",
"Id": "AWSLogDeliveryWrite20150319",
"Statement": [
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::aws-waf-logs-example-bucket/AWSLogs/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceAccount": [
"111111111111",
"222222222222"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:*:111111111111:*",
"arn:aws:logs:*:222222222222:*"
]
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::aws-waf-logs-example-bucket",
"Condition": {
"StringEquals": {
"aws:SourceAccount": [
"111111111111",
"222222222222"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:*:111111111111:*",
"arn:aws:logs:*:222222222222:*"
]
}
}
}
]
}
원하는 S3 버킷으로 로그를 전송하도록 웹 ACL을 구성
AWS WAF 로그를 중앙 집중식 로깅 계정의 S3 버킷으로 전송하도록 웹 ACL을 구성해야 합니다. 웹 ACL을 구성하려면, 웹 ACL을 소유한 계정에서 다음 AWS CLI 명령을 실행합니다.
중요:
- ResourceArn 값을 웹 ACL ARN으로 바꿉니다.
- LogDestinationConfigs 값을 중앙 집중식 로깅 계정에 있는 S3 버킷의 ARN으로 변경합니다.
- region을 web API이 위치한 AWS 리전으로 바꿉니다.
aws wafv2 put-logging-configuration --logging-configuration ResourceArn=arn:aws:wafv2:eu-west-1: 111111111111:regional/webacl/testing/b4a768c9-4895-4f35-9354-3049ab8acc29,LogDestinationConfigs=arn:aws:s3:::aws-waf-logs-example-bucket --region eu-west-1
참고: CloudFront(전역) 리전의 웹 ACL이라면 이전 명령에서 us-east-1을 AWS 리전으로 사용하십시오.
각 웹 ACL에 대해 앞의 put-logging-configuration 명령을 반복합니다.
관련 정보
Amazon Simple Storage Service 로깅 대상