Amazon 심플 스토리지 서비스 버킷으로 웹 ACL 트래픽 로그 전송 - AWS WAF, AWS Firewall Manager, 및 AWS Shield Advanced

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon 심플 스토리지 서비스 버킷으로 웹 ACL 트래픽 로그 전송

이 주제에서는 Amazon S3 버킷으로 웹 ACL 트래픽 로그를 전송하는 데 필요한 정보를 제공합니다.

참고

사용 요금에 추가로 로그인 요금이 부과됩니다. AWS WAF자세한 정보는 웹 ACL 트래픽 정보 로깅 요금 단원을 참조하십시오.

웹 ACL 트래픽 로그를 Amazon S3로 보내려면 웹 ACL 관리에 사용하는 것과 동일한 계정에서 Amazon S3 버킷을 설정하고 버킷 이름을 로 시작합니다aws-waf-logs-. 로그인을 활성화한 경우 AWS WAF버킷 이름을 입력합니다. 로깅 버킷 생성에 대한 자세한 내용을 알아보려면 Amazon Simple Storage Service 사용 설명서버킷 생성을 참조하세요.

Amazon Athena 대화형 쿼리 서비스를 사용하여 Amazon S3 로그에 액세스하고 분석할 수 있습니다. Athena를 사용하면 표준을 사용하여 Amazon S3에서 직접 데이터를 쉽게 분석할 수 있습니다. SQL 몇 가지 작업을 수행하면 AWS Management Console Athena에게 Amazon S3에 저장된 데이터를 알려주고 빠르게 표준을 사용하여 임시 SQL 쿼리를 실행하고 결과를 얻을 수 있습니다. 자세한 내용은 쿼리를 참조하십시오. AWS WAFAmazon Athena 사용 설명서에 로그인합니다. 추가 샘플 Amazon Athena 쿼리는 웹 사이트의 waf-log-sample-athenaaws-samples/ -query를 참조하십시오. GitHub

참고

AWS WAF 키 유형, Amazon S3 키 (SSE-S3) 등에 대해 Amazon S3 버킷을 사용한 암호화를 지원합니다. AWS Key Management Service (SSE-KMS) AWS KMS keys. AWS WAF 에 대한 암호화는 지원하지 않습니다. AWS Key Management Service 에서 관리하는 키 AWS.

웹은 5분 간격으로 Amazon S3 버킷에 로그 파일을 ACLs 게시합니다. 각 로그 파일에는 이전 5분 동안 기록된 트래픽에 대한 로그 레코드가 포함됩니다.

로그 파일의 최대 크기는 75MB입니다. 로그 파일이 5분 내에 파일 크기 한도에 도달하는 경우, 로그는 레코드의 로그 파일로의 추가를 중단하고 Amazon S3 버킷에 게시한 다음 새로운 로그 파일을 생성합니다.

로그 파일은 압축된 상태입니다. Amazon S3 콘솔을 사용해 파일을 열면 Amazon S3에서 로그 레코드의 압축을 해제하고 이를 표시합니다. 로그 파일을 다운로드하는 경우, 압축을 해제해야 레코드를 볼 수 있습니다.

단일 로그 파일에는 여러 레코드와 함께 인터리브 항목이 포함되어 있습니다. 웹의 모든 로그 파일을 보려면 웹 ACL 이름ACL, 지역 및 계정 ID별로 집계된 항목을 찾으십시오.

요구 사항 및 구문 이름 지정

버킷 이름은 다음과 같습니다. AWS WAF 로깅은 원하는 접미사로 aws-waf-logs- 시작하고 원하는 접미사로 끝날 수 있습니다. 예: aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX.

버킷 위치

버킷 위치에서는 다음 구문이 사용됩니다.

s3://aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX/
버킷 ARN

Amazon 리소스 이름 (ARN) 버킷의 형식은 다음과 같습니다.

arn:aws:s3:::aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX
접두사가 있는 버킷 위치

객체 키 이름에 접두사를 사용하여 버킷에 저장하는 데이터를 구성하는 경우 로깅 버킷 이름에 접두사를 제공할 수 있습니다.

참고

콘솔에서는 이 옵션을 사용할 수 없습니다. 다음을 사용하십시오. AWS WAF APIs,CLI, 또는 AWS CloudFormation.

Amazon S3에서 접두어 사용에 대한 자세한 내용을 알아보려면 Amazon Simple Storage Service 사용 설명서접두어를 사용한 객체 구성을 참조하세요.

접두사가 있는 버킷 위치에는 다음 구문이 사용됩니다.

s3://aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX/DOC-EXAMPLE-KEY-NAME-PREFIX/
버킷 폴더 및 파일 이름

버킷 내에서, 그리고 사용자가 제공한 접두사에 따라 AWS WAF 로그는 계정 ID, 지역, 웹 ACL 이름, 날짜 및 시간에 따라 결정되는 폴더 구조 아래에 기록됩니다.

AWSLogs/account-id/WAFLogs/Region/web-acl-name/YYYY/MM/dd/HH/mm

폴더 안에 있는 로그 파일 이름은 비슷한 형식을 따릅니다.

account-id_waflogs_Region_web-acl-name_timestamp_hash.log.gz

폴더 구조 및 로그 파일 이름에 사용되는 시간 지정은 타임스탬프 형식 사양인 YYYYMMddTHHmmZ를 준수합니다.

다음은 이름이 DOC-EXAMPLE-BUCKET인 Amazon S3 버킷의 로그 파일 예제를 보여줍니다. The AWS 계정 11111111111입니다. ACL웹은TEST-WEBACL, 지역은 그렇습니다us-east-1.

s3://DOC-EXAMPLE-BUCKET/AWSLogs/11111111111/WAFLogs/us-east-1/TEST-WEBACL/2021/10/28/19/50/11111111111_waflogs_us-east-1_TEST-WEBACL_20211028T1950Z_e0ca43b5.log.gz
참고

버킷 이름: AWS WAF 로깅은 원하는 접미사로 aws-waf-logs- 시작하고 원하는 접미사로 끝날 수 있습니다.

Amazon S3에 로그를 게시하는 데 필요한 권한

Amazon S3 버킷에 대한 웹 ACL 트래픽 로깅을 구성하려면 다음 권한 설정이 필요합니다. 이러한 권한은 다음 중 하나를 사용할 때 자동으로 설정됩니다. AWS WAF 전체 액세스 관리형 정책 AWSWAFConsoleFullAccess 또는AWSWAFFullAccess. 로깅에 대한 보다 세밀한 액세스를 관리하고 싶은 경우 AWS WAF 리소스, 이러한 권한을 직접 설정할 수 있습니다. 권한 관리에 대한 자세한 내용은 액세스 관리를 참조하십시오. AWSIAM사용 설명서의 리소스. 에 대한 자세한 내용은 AWS WAF 관리형 정책은 을 참조하십시오AWS 에 대한 관리형 정책 AWS WAF.

다음 권한을 통해 웹 ACL 로깅 구성을 변경하고 Amazon S3 버킷으로 로그를 전송하도록 구성할 수 있습니다. 이러한 권한은 관리에 사용하는 사용자에게 연결되어야 합니다. AWS WAF.

참고

아래 나열된 권한을 설정할 때 다음과 같은 오류가 발생할 수 있습니다. AWS CloudTrail 액세스가 거부되었음을 나타내지만 권한이 올바른 경우 로그입니다. AWS WAF 로깅.

{ "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-amzn-s3-demo-bucket" ], "Effect":"Allow" } ] }

모든 사용자에게 조치가 허용되는 경우 AWS 리소스는 정책에 "Resource" 설정으로 표시됩니다"*". 즉, 모든 작업에 대해 해당 작업이 허용됩니다. AWS 각 작업이 지원하는 리소스. 예를 들어 wafv2:PutLoggingConfiguration 작업은 wafv2 로깅 구성 리소스에서만 지원됩니다.

기본적으로 Amazon S3 버킷과 버킷에 포함된 객체는 비공개입니다. 버킷 소유자만이 해당 버킷과 그 안에 저장된 객체에 액세스할 수 있습니다. 그러나 버킷 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스를 허용할 수 있습니다.

로그를 생성하는 사용자가 버킷을 소유한 경우, 해당 서비스에서는 다음 정책을 해당 버킷에 자동으로 연결하여 로그를 버킷에 게시할 로그 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket/AWSLogs/account-id/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } } ] }
참고

버킷 이름: AWS WAF 로깅은 원하는 접미사로 aws-waf-logs- 시작하고 원하는 접미사로 끝날 수 있습니다.

로그를 생성하는 사용자가 버킷을 소유하지 않거나 해당 버킷에 대한 GetBucketPolicyPutBucketPolicy가 없는 경우, 로그 생성이 실패합니다. 이 경우 버킷 소유자는 이전 정책을 수동으로 버킷에 추가하고 로그 생성자의 정책을 지정해야 합니다. AWS 계정 ID. 자세한 내용은 Amazon Simple Storage Service Console 사용 설명서S3 버킷 정책을 추가하려면 어떻게 해야 합니까?를 참조하세요. 버킷이 여러 계정으로부터 로그를 수신하는 경우, Resource 요소 입력 내용을 각 계정의 AWSLogDeliveryWrite 정책 설명에 추가합니다.

예를 들어, 다음 버킷 정책은 다음을 허용합니다. AWS 계정 111122223333라는 버킷에 로그를 게시하려면aws-waf-logs-amzn-s3-demo-bucket:

{ "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-amzn-s3-demo-bucket/AWSLogs/111122223333/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } } ] }

사용 권한 AWS Key Management Service KMS키 포함

로깅 대상에서 키가 저장되어 있는 서버 측 암호화를 사용하는 경우 AWS Key Management Service (SSE-KMS) 고객 관리 키 (KMS키) 를 사용하는 경우 다음을 제공해야 합니다. AWS WAF KMS키 사용 권한. 이렇게 하려면 선택한 대상의 키에 KMS 키 정책을 추가합니다. 이는 다음을 허용합니다. AWS WAF 로깅을 통해 목적지에 로그 파일을 기록할 수 있습니다.

허용하려면 다음 키 정책을 KMS 키에 추가하십시오. AWS WAF Amazon S3 버킷에 로그인할 수 있습니다.

{ "Sid": "Allow AWS WAF to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": "kms:GenerateDataKey*", "Resource": "*" }

Amazon S3 로그 파일에 액세스하는 데 필요한 권한

Amazon S3는 액세스 제어 목록 (ACLs) 을 사용하여 관리자가 생성한 로그 파일에 대한 액세스를 관리합니다. AWS WAF 로그. 기본적으로 버킷 소유자는 각 로그 파일에 대한 FULL_CONTROL 권한을 보유합니다. 로그 전송 소유자가 버킷 소유자와 다른 경우에는 권한이 없습니다. 로그 전송 계정에는 READWRITE 권한이 부여됩니다. 자세한 내용은 Amazon 심플 스토리지 서비스 사용 설명서의 액세스 제어 목록 (ACL) 개요를 참조하십시오.