Amazon S3 서버 액세스 로깅 사용 설정
서버 액세스 로깅은 Amazon S3 버킷에 수행된 요청에 대한 상세 레코드를 제공합니다. 서버 액세스 로그는 많은 애플리케이션에 있어 유용합니다. 예를 들어 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 이 정보를 통해 고객 기반을 이해하고 Amazon S3 청구 비용을 파악할 수도 있습니다.
Amazon S3는 기본적으로 서버 액세스 로그를 수집하지 않습니다. 로깅을 활성화하면 Amazon S3는 선택된 대상 버킷에 소스 버킷에 대한 액세스 로그를 전송합니다. 대상 버킷은 소스 버킷과 AWS 리전 및 AWS 계정이 동일해야 합니다.
액세스 로그 레코드에는 버킷에 대한 요청 내역이 자세히 나와 있습니다. 이 정보에는 요청 유형, 요청에 지정된 리소스, 요청을 처리한 날짜 및 시간 등이 포함됩니다. 로깅 기초 사항에 대한 자세한 내용은 서버 액세스 로깅을 사용한 요청 로깅 단원을 참조하십시오.
중요
-
Amazon S3 버킷에서 서버 액세스 로그를 사용하는 데 따른 별도의 요금은 청구되지 않습니다. 단, 시스템이 사용자에게 전달하는 로그 파일에 대해서는 일반적인 스토리지 요금이 발생합니다. (로그 파일은 언제든지 삭제할 수 있습니다.) 로그 파일 전송에 따른 데이터 전송 요금은 발생하지 않지만 로그 파일 액세스에 따른 일반 데이터 전송 요금은 부과됩니다.
-
대상 버킷에는 서버 액세스 로깅을 활성화해서는 안 됩니다. 소스 버킷 자체를 포함하여 소스 버킷과 동일한 리전에 있는 자신의 고유 버킷에 로그를 전달할 수 있습니다. 그러나 원본 버킷에 로그를 전송하면 로그의 무한 루프가 발생하므로 권장되지 않습니다. 로그 관리를 간소화하기 위해서는 액세스 로그를 다른 버킷에 저장하는 것이 좋습니다. 자세한 내용은 로그 전송을 사용 설정하려면 어떻게 해야 합니까? 섹션을 참조하세요.
-
S3 객체 잠금이 활성화된 S3 버킷은 서버 액세스 로그의 대상 버킷으로 사용할 수 없습니다. 대상 버킷에는 기본 보존 기간이 구성되어 있지 않아야 합니다.
-
대상 버킷에는 요청자 지불이 활성화되어 있지 않아야 합니다.
-
256비트 고급 암호화 표준(AES-256)을 사용하는 Amazon S3 관리형 키(SSE-S3)를 통한 서버 측 암호화를 사용할 경우에만 대상 버킷에 기본 버킷 암호화를 사용할 수 있습니다. AWS Key Management Service(AWS KMS) 키(SSE-KMS)를 사용한 기본 서버 측 암호화는 지원되지 않습니다.
Amazon S3 콘솔, Amazon S3 API, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 서버 액세스 로깅을 사용하거나 사용 중지할 수 있습니다.
로그 전달을 위한 권한
Amazon S3는 특별 로그 전달 계정을 사용하여 서버 액세스 로그를 씁니다. 이 쓰기는 일반적인 액세스 제어 제약 조건을 따릅니다. 액세스 로그를 전송하려면 로깅 서비스 보안 주체(logging.s3.amazonaws.com
)에 대상 버킷에 대한 액세스 권한을 부여해야 합니다.
Amazon S3에 로그 전송 권한을 부여하려면 대상 버킷의 S3 객체 소유권 설정에 따라 버킷 정책 또는 버킷 액세스 제어 목록(ACL)을 사용할 수 있습니다. 그러나 ACL 대신 버킷 정책을 사용하는 것이 좋습니다.
S3 객체 소유권에 대한 버킷 소유자 시행 설정
대상 버킷이 객체 소유권에 버킷 소유자 적용 설정을 사용하는 경우 ACL이 비활성화되고 더 이상 권한에 영향을 주지 않습니다. 이 경우, 대상 버킷에서 로깅 서비스 보안 주체에 액세스 권한을 부여하도록 버킷 정책을 업데이트해야 합니다. S3 로그 전달 그룹에 액세스 권한을 부여하기 위해 버킷 ACL을 업데이트할 수 없습니다. 또한 PutBucketLogging 구성에 대상 권한 부여를 포함할 수 없습니다.
버킷 정책으로 액세스 로그 전달을 위해 기존 버킷 ACL을 마이그레이션하는 방법에 대한 자세한 내용은 서버 액세스 로깅을 위해 S3 로그 전송 그룹에 대한 액세스 권한 부여 섹션을 참조하십시오. 객체 소유권에 대한 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 섹션을 참조하십시오. 새 버킷을 만들 때 기본적으로 ACL이 비활성화됩니다.
버킷 정책을 사용하여 액세스 권한 부여
대상 버킷에 대한 버킷 정책을 사용하여 액세스 권한을 부여하려면 로깅 서비스 보안 주체에 s3:PutObject
권한을 부여하도록 버킷 정책을 업데이트합니다. Amazon S3 콘솔을 사용하여 서버 액세스 로깅을 활성화하는 경우 콘솔은 대상 버킷에 대한 버킷 정책을 자동으로 업데이트하여 이 권한을 로깅 서비스 보안 주체에 부여합니다. 프로그래밍 방식으로 서버 액세스 로깅을 활성화하는 경우 대상 버킷에서 로깅 서비스 보안 주체에 액세스 권한을 부여하도록 버킷 정책을 수동으로 업데이트해야 합니다.
로깅 서비스 보안 주체에 액세스 권한을 부여하는 버킷 정책의 예시는 버킷 정책을 사용하여 로깅 서비스 보안 주체에 권한 부여 섹션을 참조하세요.
버킷 ACL을 사용하여 액세스 권한 부여
또는 버킷 ACL을 사용하여 액세스 로그 전달을 위한 액세스 권한을 부여할 수 있습니다. S3 로그 전달 그룹에 WRITE
및 READ_ACP
권한을 부여하는 권한 부여 항목을 버킷 ACL에 추가합니다. 그러나 버킷 ACL을 사용하여 S3 로그 전달 그룹에 액세스 권한을 부여하는 것은 권장되지 않습니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오. 버킷 정책으로 액세스 로그 전달을 위해 기존 버킷 ACL을 마이그레이션하는 방법에 대한 자세한 내용은 서버 액세스 로깅을 위해 S3 로그 전송 그룹에 대한 액세스 권한 부여 섹션을 참조하십시오. 로깅 서비스 보안 주체에 액세스 권한을 부여하는 ACL의 예시는 버킷 ACL을 사용하여 로그 전달 그룹에 권한 부여 섹션을 참조하세요.
버킷 정책을 사용하여 로깅 서비스 보안 주체에 권한 부여
이 예시 버킷 정책은 로깅 서비스 보안 주체(logging.s3.amazonaws.com
)에 s3:PutObject
권한을 부여합니다. 이 버킷 정책을 사용하려면
를 사용자의 정보로 대체합니다. 다음 정책에서 user input placeholders
은 서버 액세스 로그가 전송되는 대상 버킷이고 amzn-s3-demo-destination-bucket
은 소스 버킷입니다. amzn-s3-demo-source-bucket
는 원하는 경우 로그 객체에 선택적으로 사용할 수 있는 대상 접두사입니다. EXAMPLE-LOGGING-PREFIX
는 소스 버킷을 소유한 AWS 계정입니다.SOURCE-ACCOUNT-ID
참고
버킷 정책에 Deny
명령문이 있는 경우 Amazon S3가 액세스 로그를 전송하는 것을 차단하지 않도록 해야 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/EXAMPLE-LOGGING-PREFIX
*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-ACCOUNT-ID
" } } } ] }
버킷 ACL을 사용하여 로그 전달 그룹에 권한 부여
참고
보안 모범 사례로 Amazon S3는 기본적으로 모든 새 버킷에서 액세스 제어 목록(ACL)을 비활성화합니다. Amazon S3 콘솔의 ACL 권한에 대한 자세한 내용은 ACL 구성 단원을 참조하십시오.
권장하지는 않는 방식이지만 버킷 ACL을 사용하여 로그 전송 그룹에 권한을 부여할 수 있습니다. 그러나 대상 버킷이 객체 소유권에 버킷 소유자 적용 설정을 사용하는 경우 버킷 또는 객체 ACL을 설정할 수 없습니다. 또한 PutBucketLogging 구성에 대상 권한 부여를 포함할 수 없습니다. 대신, 로깅 서비스 보안 주체(logging.s3.amazonaws.com
)에 액세스 권한을 부여하려면 버킷 정책을 사용해야 합니다. 자세한 내용은 로그 전달을 위한 권한 단원을 참조하십시오.
버킷 ACL에서 로그 전송 그룹은 다음 URL로 표시됩니다.
http://acs.amazonaws.com/groups/s3/LogDelivery
WRITE
및 READ_ACP
(ACL 읽기) 권한을 부여하려면 대상 버킷 ACL에 다음 권한을 추가합니다.
<Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>WRITE</Permission> </Grant> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/s3/LogDelivery</URI> </Grantee> <Permission>READ_ACP</Permission> </Grant>
프로그래밍 방식으로 ACL 권한을 추가하는 예는 ACL 구성 단원을 참조하십시오.
중요
버킷에서 AWS CloudFormation을 사용하여 Amazon S3 서버 액세스 로깅을 활성화하고 ACL을 사용하여 S3 로그 전달 그룹에 액세스 권한을 부여하는 경우 CloudFormation 템플릿에 "AccessControl": "LogDeliveryWrite"
도 추가해야 합니다. 이것이 중요한 이유는 버킷에 대해 ACL을 생성해야만 이러한 권한을 부여할 수 있지만 CloudFormation에서 버킷에 대한 사용자 지정 ACL을 생성할 수 없기 때문입니다. 미리 준비된 ACL만 CloudFormation에서 사용할 수 있습니다.
서버 액세스 로깅 사용 설정
Amazon S3 콘솔, Amazon S3 REST API, AWS SDK, AWS CLI를 사용하여 서버 액세스 로깅을 활성화하려면 다음 절차를 수행합니다.
AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/
에서 Amazon S3 콘솔을 엽니다. -
버킷 목록에서 서버 액세스 로깅을 사용 설정하려는 버킷의 이름을 선택합니다.
-
[속성(Properties)]을 선택합니다.
-
서버 액세스 로깅 섹션에서 편집을 선택합니다.
-
서버 액세스 로깅에서 활성화를 선택합니다.
-
대상 버킷에서 버킷과 원하는 경우 접두사를 지정합니다. 접두사를 지정하는 경우 로그를 더 쉽게 찾을 수 있도록 접두사 뒤에 슬래시(
/
)를 포함하는 것이 좋습니다.참고
접두사를 슬래시(
/
)와 함께 지정하면 로그 객체를 더 쉽게 구분할 수 있습니다. 예를 들어 접두사 값을logs/
로로 지정할 경우 Amazon S3가 만드는 각 로그 객체의 키는 다음과 같이logs/
접두사로 시작합니다.logs/2013-11-01-21-32-16-E568B2907131C0C0
접두사 값을
logs
로 지정하는 경우 로그 객체는 다음과 같이 나타납니다.logs2013-11-01-21-32-16-E568B2907131C0C0
-
로그 객체 키 형식에서 다음 중 하나를 수행합니다.
-
날짜 기반이 아닌 분할을 선택하려면 [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]을 선택합니다.
-
날짜 기반 분할을 선택하려면 [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString]을 선택한 다음 S3 이벤트 시간 또는 로그 파일 전송 시간을 선택합니다.
-
-
Save changes(변경 사항 저장)를 선택합니다.
버킷에서 서버 액세스 로깅을 활성화하면 콘솔이 소스 버킷에서 로깅을 사용 설정하고 대상 버킷에서 로깅 서비스 보안 주체(
logging.s3.amazonaws.com
)에s3:PutObject
권한을 부여하도록 버킷 정책을 업데이트합니다. 이 버킷 정책에 대한 자세한 내용은 버킷 정책을 사용하여 로깅 서비스 보안 주체에 권한 부여 섹션을 참조하십시오.대상 버킷에서 로그를 볼 수 있습니다. 서버 액세스 로깅을 사용 설정하면 로그가 대상 버킷에 전달되기까지 몇 시간이 소요될 수 있습니다. 로그가 전송되는 방법 및 시기에 대한 자세한 내용은 로그 전송 방법 섹션을 참조하십시오.
자세한 내용은 S3 버킷에 대한 속성 보기 단원을 참조하십시오.
로깅을 활성화하기 위해 소스 버킷에 로깅 구성을 추가하는 PutBucketLogging 요청을 제출합니다. 요청에 대상 버킷, 그리고 선택 사항으로 모든 로그 객체 키에 사용할 접두사를 지정합니다.
다음 예시에서는 대상 버킷으로
을, 접두사로 amzn-s3-demo-destination-bucket
를 지정합니다.logs/
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <LoggingEnabled> <TargetBucket>
amzn-s3-demo-destination-bucket
</TargetBucket> <TargetPrefix>logs/
</TargetPrefix> </LoggingEnabled> </BucketLoggingStatus>
다음 예시에서는 대상 버킷으로
을, 접두사로 amzn-s3-demo-destination-bucket
를, 로그 객체 키 형식으로 logs/
EventTime
을 지정합니다.
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <LoggingEnabled> <TargetBucket>
amzn-s3-demo-destination-bucket
</TargetBucket> <TargetPrefix>logs/
</TargetPrefix> <TargetObjectKeyFormat> <PartitionedPrefix> <PartitionDateSource>EventTime</PartitionDateSource> </PartitionedPrefix> </TargetObjectKeyFormat> </LoggingEnabled> </BucketLoggingStatus>
S3 로그 전달 계정이 로그 객체를 작성하고 소유하며, 버킷 소유자에게는 로그 객체에 대한 모든 권한이 부여됩니다. 필요한 경우 대상 권한 부여를 사용하여 로그에 액세스할 수 있도록 다른 사용자에게 권한을 부여할 수 있습니다. 자세한 내용은 PutBucketLogging 단원을 참조하십시오.
참고
대상 버킷이 객체 소유권에 버킷 소유자 적용 설정을 사용하는 경우 대상 권한 부여를 사용하여 다른 사용자에게 권한을 부여할 수 없습니다. 다른 사용자에게 권한을 부여하기 위해 대상 버킷에서 버킷 정책을 업데이트할 수 있습니다. 자세한 내용은 로그 전달을 위한 권한 단원을 참조하십시오.
버킷의 로깅 구성을 검색하려면 GetBucketLogging API 작업을 사용하세요.
로깅 구성을 삭제하려면 빈 BucketLoggingStatus
로 PutBucketLogging
요청을 보냅니다.
<BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01"> </BucketLoggingStatus>
버킷에서 로깅을 활성화하려면 Amazon S3 API 또는 AWS SDK 래퍼 라이브러리를 사용할 수 있습니다.
다음은 버킷에서 로깅을 활성화하는 예시입니다. 소스 버킷 하나와 대상 버킷 하나를 생성해야 합니다. 예시는 대상 버킷의 버킷 ACL을 먼저 업데이트합니다. 그런 다음, 먼저 대상 버킷에 로그를 쓰는 데 필요한 권한을 로그 전송 그룹에 부여하고 나서 소스 버킷에서 로깅을 활성화합니다.
이 예시는 객체 소유권에 버킷 소유자 적용 설정을 사용하는 대상 버킷에서는 작동하지 않습니다.
대상 버킷이 객체 소유권에 버킷 소유자 강제 설정을 사용하는 경우 버킷 또는 객체 ACL을 설정할 수 없습니다. 또한 PutBucketLogging 구성에 대상 권한 부여를 포함할 수 없습니다. 로깅 서비스 보안 주체(logging.s3.amazonaws.com
)에 액세스 권한을 부여하려면 버킷 정책을 사용해야 합니다. 자세한 내용은 로그 전달을 위한 권한 단원을 참조하십시오.
S3 버킷이 있는 각 AWS 리전에 전용 로깅 버킷을 생성하는 것이 좋습니다. 그런 다음 해당 S3 버킷에 Amazon S3 액세스 로그를 전송하세요. 자세한 내용과 예제는 AWS CLI 참조의 put-bucket-logging
대상 버킷이 객체 소유권에 버킷 소유자 강제 설정을 사용하는 경우 버킷 또는 객체 ACL을 설정할 수 없습니다. 또한 PutBucketLogging 구성에 대상 권한 부여를 포함할 수 없습니다. 로깅 서비스 보안 주체(logging.s3.amazonaws.com
)에 액세스 권한을 부여하려면 버킷 정책을 사용해야 합니다. 자세한 내용은 로그 전달을 위한 권한 단원을 참조하십시오.
예 - 2개 리전에 걸쳐 5개 버킷으로 액세스 로그 사용 설정
이 예제에서는 다음과 같은 다섯 개 버킷이 있습니다.
-
1-amzn-s3-demo-bucket1-us-east-1
-
2-amzn-s3-demo-bucket1-us-east-1
-
3-amzn-s3-demo-bucket1-us-east-1
-
1-amzn-s3-demo-bucket1-us-west-2
-
2-amzn-s3-demo-bucket1-us-west-2
참고
다음 절차의 마지막 단계에서는 로깅 버킷을 생성하고 해당 버킷에서 서버 액세스 로깅을 활성화하는 데 사용할 수 있는 예시 bash 스크립트를 제공합니다. 이러한 스크립트를 사용하려면 다음 절차에 설명된 대로 policy.json
및 logging.json
파일을 만들어야 합니다.
-
미국 서부(오레곤) 및 미국 동부(버지니아 북부) 리전에 로깅 대상 버킷 두 개를 만들고 다음과 같이 이름을 지정합니다.
-
amzn-s3-demo-bucket1-logs-us-east-1
-
amzn-s3-demo-bucket1-logs-us-west-2
-
-
이 단계 후반부에서 다음과 같이 서버 액세스 로깅을 활성화합니다.
-
1-amzn-s3-demo-bucket1-us-east-1
은 접두사가1-amzn-s3-demo-bucket1-us-east-1
인 S3 버킷amzn-s3-demo-bucket1-logs-us-east-1
에 로깅합니다. -
2-amzn-s3-demo-bucket1-us-east-1
은 접두사가2-amzn-s3-demo-bucket1-us-east-1
인 S3 버킷amzn-s3-demo-bucket1-logs-us-east-1
에 로깅합니다. -
3-amzn-s3-demo-bucket1-us-east-1
은 접두사가3-amzn-s3-demo-bucket1-us-east-1
인 S3 버킷amzn-s3-demo-bucket1-logs-us-east-1
에 로깅합니다. -
1-amzn-s3-demo-bucket1-us-west-2
은 접두사가1-amzn-s3-demo-bucket1-us-west-2
인 S3 버킷amzn-s3-demo-bucket1-logs-us-west-2
에 로깅합니다. -
2-amzn-s3-demo-bucket1-us-west-2
는 접두사가2-amzn-s3-demo-bucket1-us-west-2
인 S3 버킷amzn-s3-demo-bucket1-logs-us-west-2
에 로깅합니다.
-
-
대상 로깅 버킷 각각에 대해 버킷 ACL 또는 버킷 정책을 사용하여 서버 액세스 로그 전송에 대한 권한을 부여합니다.
-
버킷 정책 업데이트(권장) - 로깅 서비스 보안 주체에 권한을 부여하려면 다음
put-bucket-policy
명령을 사용합니다.
를 대상 버킷의 이름으로 바꿉니다.amzn-s3-demo-destination-bucket
-logsaws s3api put-bucket-policy --bucket
--policy file://policy.jsonamzn-s3-demo-destination-bucket
-logsPolicy.json
은 다음 버킷 정책이 포함된 현재 폴더의 JSON 문서입니다. 이 버킷 정책을 사용하려면
를 사용자의 정보로 대체합니다. 다음 정책에서user input placeholders
는 서버 액세스 로그가 전송될 대상 버킷이고amzn-s3-demo-destination-bucket
-logs
은 소스 버킷입니다.amzn-s3-demo-source-bucket
는 소스 버킷을 소유한 AWS 계정입니다.SOURCE-ACCOUNT-ID
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3ServerAccessLogsPolicy", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
-logs
/*", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket
" }, "StringEquals": { "aws:SourceAccount": "SOURCE-ACCOUNT-ID
" } } } ] } -
버킷 ACL 업데이트 – S3 로그 전달 그룹에 권한을 부여하려면 다음
put-bucket-acl
명령을 사용합니다.
를 대상 버킷의 이름으로 바꾸세요.amzn-s3-demo-destination-bucket
-logsaws s3api put-bucket-acl --bucket
--grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDeliveryamzn-s3-demo-destination-bucket
-logs
-
-
그런 다음, 아래 세 가지 예시 중 하나를 기반으로 로깅 구성이 포함된
logging.json
파일을 생성합니다.logging.json
파일을 만든 후 다음put-bucket-logging
명령을 사용하여 로깅 구성을 적용할 수 있습니다.
를 대상 버킷의 이름으로 바꾸세요.amzn-s3-demo-destination-bucket
-logsaws s3api put-bucket-logging --bucket
--bucket-logging-status file://logging.jsonamzn-s3-demo-destination-bucket
-logs참고
이
put-bucket-logging
명령을 사용하여 각 대상 버킷에 로깅 구성을 적용하는 대신 다음 단계에서 제공하는 bash 스크립트 중 하나를 사용할 수 있습니다. 이러한 스크립트를 사용하려면 이 절차에 설명된 대로policy.json
및logging.json
파일을 만들어야 합니다.logging.json
파일은 로깅 구성이 포함된 현재 폴더의 JSON 문서입니다. 대상 버킷이 객체 소유권에 버킷 소유자 적용 설정을 사용하는 경우 로깅 구성에 대상 권한 부여가 포함될 수 없습니다. 자세한 내용은 로그 전달을 위한 권한 단원을 참조하십시오.예 - 대상 권한 부여가 없는
logging.json
다음 예시
logging.json
파일에는 대상 권한 부여가 없습니다. 따라서 객체 소유권에 대해 버킷 소유자 적용 설정을 사용하는 대상 버킷에 이 구성을 적용할 수 있습니다.{ "LoggingEnabled": { "TargetBucket": "
amzn-s3-demo-destination-bucket
-logs
", "TargetPrefix": "amzn-s3-demo-destination-bucket
/" } }예 - 대상 권한 부여가 있는
logging.json
다음 예시
logging.json
파일에는 대상 권한 부여가 포함되어 있습니다.대상 버킷이 객체 소유권에 버킷 소유자 적용 설정을 사용하는 경우 PutBucketLogging 구성에 대상 권한 부여를 포함할 수 없습니다. 자세한 내용은 로그 전달을 위한 권한 단원을 참조하십시오.
{ "LoggingEnabled": { "TargetBucket": "
amzn-s3-demo-destination-bucket
-logs
", "TargetPrefix": "amzn-s3-demo-destination-bucket
/", "TargetGrants": [ { "Grantee": { "Type": "AmazonCustomerByEmail", "EmailAddress": "user@example.com
" }, "Permission": "FULL_CONTROL" } ] } }예 - 로그 객체 키 형식이 S3 이벤트 시간으로 설정된
logging.json
다음
logging.json
파일은 로그 객체 키 형식을 S3 이벤트 시간으로 변경합니다. 로그 객체 키 형식 설정에 대한 자세한 내용은 로그 전송을 사용 설정하려면 어떻게 해야 합니까? 섹션을 참조하세요.{ "LoggingEnabled": { "TargetBucket": "
amzn-s3-demo-destination-bucket
-logs
", "TargetPrefix": "amzn-s3-demo-destination-bucket
/", "TargetObjectKeyFormat": { "PartitionedPrefix": { "PartitionDateSource": "EventTime" } } } } -
다음 bash 스크립트 중 하나를 사용하여 계정의 모든 버킷에 대한 액세스 로깅을 추가합니다.
를 대상 버킷의 이름으로 바꾸고,amzn-s3-demo-destination-bucket
-logs
를 버킷이 위치한 리전의 이름으로 바꾸세요.us-west-2
참고
이 스크립트는 모든 버킷이 동일한 리전에 있는 경우에만 작동합니다. 여러 리전에 버킷이 있는 경우 스크립트를 조정해야 합니다.
예 – 버킷 정책으로 액세스 권한 부여 및 계정의 버킷에 대한 로깅 추가
loggingBucket='
amzn-s3-demo-destination-bucket
-logs
' region='us-west-2
' # Create the logging bucket. aws s3 mb s3://$loggingBucket --region $region aws s3api put-bucket-policy --bucket $loggingBucket --policy file://policy.json # List the buckets in this account. buckets="$(aws s3 ls | awk '{print $3}')" # Put a bucket logging configuration on each bucket. for bucket in $buckets do # This if statement excludes the logging bucket. if [ "$bucket" != "$loggingBucket" ] ; then continue; fi printf '{ "LoggingEnabled": { "TargetBucket": "%s", "TargetPrefix": "%s/" } }' "$loggingBucket" "$bucket" > logging.json aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json echo "$bucket done" done rm logging.json echo "Complete"예 – 버킷 ACL로 액세스 권한 부여 및 계정의 버킷에 대한 로깅 추가
loggingBucket='
amzn-s3-demo-destination-bucket
-logs
' region='us-west-2
' # Create the logging bucket. aws s3 mb s3://$loggingBucket --region $region aws s3api put-bucket-acl --bucket $loggingBucket --grant-write URI=http://acs.amazonaws.com/groups/s3/LogDelivery --grant-read-acp URI=http://acs.amazonaws.com/groups/s3/LogDelivery # List the buckets in this account. buckets="$(aws s3 ls | awk '{print $3}')" # Put a bucket logging configuration on each bucket. for bucket in $buckets do # This if statement excludes the logging bucket. if [ "$bucket" != "$loggingBucket" ] ; then continue; fi printf '{ "LoggingEnabled": { "TargetBucket": "%s", "TargetPrefix": "%s/" } }' "$loggingBucket" "$bucket" > logging.json aws s3api put-bucket-logging --bucket $bucket --bucket-logging-status file://logging.json echo "$bucket done" done rm logging.json echo "Complete"
서버 액세스 로그 설정 확인
서버 액세스 로깅을 활성화한 후 다음 단계를 완료합니다.
-
대상 버킷에 액세스하여 로그 파일이 전송되고 있는지 확인합니다. 액세스 로그가 설정되면 Amazon S3는 즉시 요청 캡처 및 로깅을 시작합니다. 하지만 로그가 대상 버킷으로 전송되려면 몇 시간이 소요될 수 있습니다. 자세한 내용은 버킷 로깅 상태 변경 시 일정 기간에 걸쳐 단계적으로 반영됨 및 서버 로그 전송이 항상 보장되지는 않음 단원을 참조하세요.
또한 Amazon S3 요청 지표를 사용하고 이러한 지표에 대한 Amazon CloudWatch 경보를 설정하여 로그 전달을 자동으로 확인할 수 있습니다. 자세한 내용은 Amazon CloudWatch를 사용한 지표 모니터링 단원을 참조하십시오.
-
로그 파일의 내용을 열고 읽을 수 있는지 확인합니다.
서버 액세스 로깅 문제 해결 정보는 서버 액세스 로깅 문제 해결 섹션을 참조하십시오.