[AWS] Web ACL 트래픽 로깅(S3로 로깅)

HYEOB KIM·2022년 6월 21일
1

aws

목록 보기
49/62

이전 내용: [AWS] 특정 IP에 대해 블럭하는 Web ACL 생성

개요

  • Web ACL을 거치는 트래픽에 대해 특정 서비스로 보내 저장하고 분석할 수 있습니다.
  • 로그를 저장할 수 있는 서비스는 CloudWatch Logs, S3 버킷, Kinesis Data Firehose입니다.

웹 ACL 트래픽 정보 로깅에 대한 요금

웹 ACL에서 내보내는 요금은 따로 발생하지 않고, 각 서비스에 저장할 때 그 서비스의 비용 정책에 따릅니다.

사전 작업

저는 S3 버킷에 로그를 전송해보려 합니다. 이 작업을 진행하는 사용자에게는 아래의 정책이 부여되어 있어야 합니다. 아래 정책은 웹 ACL 로깅 설정S3 버킷으로 로그를 전송할 수 있는 권한이 들어있습니다.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Action":[
            "wafv2:PutLoggingConfiguration",
            "wafv2:DeleteLoggingConfiguration"
         ],
         "Resource":[
            "*"
         ],
         "Effect":"Allow",
         "Sid":"LoggingConfigurationAPI"
      },
    {                                                                                                                                                                
       "Sid":"WebACLLogDelivery",                                                                                                                                    
       "Action":[                                                                                                                                                    
          "logs:CreateLogDelivery",                                                                                                                                  
          "logs:DeleteLogDelivery"                                                                                                                                   
       ],                                                                                                                                                            
       "Resource": "*",                                                                                                                                              
       "Effect":"Allow"                                                                                                                                              
    },  
      {
         "Sid":"WebACLLoggingS3",
         "Action":[
            "s3:PutBucketPolicy",
            "s3:GetBucketPolicy"
         ],
         "Resource": [
             "arn:aws:s3:::aws-waf-logs-example-bucket"
         ],
         "Effect":"Allow"
      }
   ]
}              

WAF에서 S3로 트래픽 로그를 전송하는 과정에 대한 자세한 사항은 AWS 공식 문서 - 웹 ACL 트래픽 로깅: S3를 참고하세요.

트래픽 로깅 설정

  1. [WAF 콘솔] > Web ACLs > 웹 ACL 선택 > Logging and metrics 탭 > Logging 활성화(enable)

  2. 저는 S3 버킷을 생성하고 이 버킷에 로그를 저장해보도록 하겠습니다.

  3. 이름 지정 요구 사항 및 구문에 명시된 방법에 따라 네이밍을 진행합니다.

    버킷을 생성합니다.

  4. 생성한 버킷에는 아래의 버킷 정책이 있어야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::<버킷 이름>/AWSLogs/<계정 ID>/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": ["<계정 ID>"]
        },
        "ArnLike": {
          "aws:SourceArn": ["arn:aws:logs:<리전 명>:<계정 ID>:*"]
        }
      }
    },
    {
      "Sid": "AWSLogDeliveryAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::<버킷 이름>",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": ["<계정 ID>"]
        },
        "ArnLike": {
          "aws:SourceArn": ["arn:aws:logs:<리전 명>:<계정 ID>:*"]
        }
      }
    }
  ]
}
  1. 다시 웹 ACL 생성 화면으로 돌아옵니다. 새로고침 버튼을 누르면 앞에 접두사로 aws-waf-logs가 붙은 버킷이 나타나는 것을 확인할 수 있습니다.

  2. Redacted fields에서 로깅하길 원하지 않는 필드를 선택할 수 있습니다.

  3. 로그에 대한 필터를 만들 수 있습니다. 예를 들어, 요청이 Block된 것에 대해서만 로그가 남도록 할 수 있습니다.

  4. 저장 버튼을 누르면 웹 ACL의 로깅이 활성화됩니다.

profile
Devops Engineer

0개의 댓글