액세스 로그

Prev Next
This content is currently unavailable in English. You are viewing the default (Korean) version.

Classic/VPC 환경에서 이용 가능합니다.

버킷 액세스 로그 기능을 사용하면 버킷과 객체에 대한 요청 정보를 로그 파일로 저장하여 접근 이력을 확인하고 분석할 수 있습니다. 로그는 사용자가 지정한 버킷에 저장되며, 저장된 로그 파일을 통해 요청 시각, 요청 유형, 처리 결과 등의 정보를 확인할 수 있습니다.

버킷 액세스 로그 설정

액세스 로그는 지정한 저장 버킷에 저장되며 저장된 로그 파일의 용량에 따라 스토리지 이용 요금이 발생합니다. 버킷 액세스 로그 설정 방법은 다음과 같습니다.

  1. 버킷 목록에서 버킷을 선택한 후 버킷 액세스 로그 설정 영역의 i-objectstorage_enlargement를 클릭해 주십시오.
  2. 버킷 액세스 로그 설정 팝업 창에서 액세스 로그 설정을 활성화해 주십시오.
  3. 액세스 로그 파일을 저장할 저장 버킷을 선택해 주십시오.
  4. 로그 파일을 구분하여 저장할 경로의 접두사인 로그 파일 Prefix를 입력해 주십시오.
    • <예시> logs/
  5. 작성된 내용을 확인한 후 [확인] 버튼을 클릭해 주십시오.

로그 저장 버킷 설정 조건

로그 저장 버킷은 다음 조건을 충족해야 합니다.

항목 설명
버킷 이미 생성된 버킷만 지정 가능
리전 소스 버킷과 동일한 리전의 버킷만 지정 가능
소유자 소스 버킷과 소유자가 동일한 버킷만 지정 가능
저장 버킷 수 소스 버킷 1개당 로그 저장 버킷 1개만 지정 가능
접근 권한 로그 전달을 위한 별도의 권한 설정 불필요

여러 소스 버킷에서 하나의 로그 저장 버킷을 공통으로 사용할 수 있습니다.

주의
  • 소스 버킷과 로그 저장 버킷을 동일하게 지정하면 로그 파일 저장 요청도 다시 기록되어 로그가 지속적으로 증가할 수 있습니다. 별도의 로그 저장 버킷을 사용하는 것을 권장합니다.
  • 객체 잠금(Object Lock)의 기본 보존 기간이 설정된 버킷은 로그 저장 버킷으로 사용하지 마십시오. 설정이 완료되더라도 로그 파일이 저장되지 않습니다.

로그 파일 저장 방식

액세스 로그는 요청 정보를 수집하여 로그 저장 버킷에 텍스트 파일로 전달합니다. 로그 파일은 UTF-8 형식으로 저장되며 압축되지 않습니다. 하나의 요청 정보는 한 줄로 기록됩니다.

로그 파일 이름 및 저장 경로

로그 파일의 객체 키는 설정한 Prefix와 키 형식에 따라 결정됩니다. 지원하는 키 형식은 다음과 같습니다.

키 형식 설명
SimplePrefix 지정한 Prefix 뒤에 로그 파일 전달 시각과 고유 문자열 추가
PartitionedPrefix - EventTime 요청 발생 날짜를 기준으로 로그 파일의 저장 경로 구분
PartitionedPrefix - DeliveryTime 로그 파일 전달 날짜를 기준으로 저장 경로 구분

SimplePrefix

{Prefix}YYYY-MM-DD-HH-mm-ss-{UniqueString}

PartitionedPrefix - EventTime

{Prefix}{AccountId}/{Region}/{Bucket}/YYYY/MM/DD/YYYY-MM-DD-00-00-00-{UniqueString}

PartitionedPrefix - DeliveryTime

{Prefix}{AccountId}/{Region}/{Bucket}/YYYY/MM/DD/YYYY-MM-DD-HH-mm-ss-{UniqueString}

각 항목의 의미는 다음과 같습니다.

항목 설명
Prefix 사용자가 설정한 로그 파일 Prefix
AccountId 소스 버킷 소유자의 계정 번호
Region 소스 버킷이 속한 리전
Bucket 소스 버킷 이름
YYYY/MM/DD 요청 발생일 또는 로그 전달일
UniqueString 로그 파일을 구분하기 위한 16자리 고유 문자열

로그의 요청 시각과 날짜별 저장 경로는 모두 한국 표준시(KST, UTC+9)를 기준으로 기록됩니다.

참고
  • 로그 파일 Prefix는 최대 512Byte까지 입력할 수 있습니다.
  • Prefix 끝에 슬래시(/)를 입력하지 않으면 Prefix와 파일 이름이 그대로 연결됩니다.
  • PartitionedPrefix에서 날짜 기준을 지정하지 않으면 EventTime이 기본값으로 적용됩니다.

로그 파일 전달

액세스 로그는 실시간으로 저장되지 않으며, 요청 발생 후 일정 시간이 지나면 로그 저장 버킷에 전달됩니다.

  • 로그 파일 전달에는 일반적으로 약 30분이 소요됩니다.
  • 시스템 상태에 따라 로그 전달 시간이 달라질 수 있습니다.
  • 로그 설정을 활성화하거나 변경 또는 해제한 경우 실제 반영까지 시간이 걸릴 수 있습니다.
  • 로그 파일의 전달 순서는 요청 발생 순서와 일치하지 않을 수 있습니다.
주의
  • 액세스 로그는 Best-effort 방식으로 제공되므로 모든 요청에 대한 로그 수집이 보장되지는 않습니다. 일부 로그가 누락되거나 중복 기록될 수 있습니다.
  • 소스 버킷을 삭제하면 액세스 로그 설정도 함께 삭제되며, 아직 전달되지 않은 로그가 누락될 수 있습니다.

로그가 기록되는 요청 범위

버킷 액세스 로그는 해당 버킷이 속한 리전으로 들어온 API 요청과 정적 웹사이트 호스팅 요청을 기록합니다. 요청 유형별 기록 여부는 다음과 같습니다.

요청 유형 기록 여부 설명
REST.* 기록 API 요청
WEBSITE.* 기록 정적 웹사이트 호스팅 요청
BATCH.* 미기록 다중 객체 삭제 시 객체별 처리 기록
S3.* 미기록 수명 주기 만료 및 전환, 비동기 복원 완료 등의 시스템 작업
다른 리전으로 들어온 요청 미기록 다른 리전의 버킷을 대상으로 하는 요청

다음과 같은 요청도 로그에 기록되지 않을 수 있습니다.

  • 버킷을 특정할 수 없는 요청
  • 인증 단계에서 거부되어 버킷을 식별할 수 없는 요청
  • 로그 전달 과정에서 내부적으로 수행되는 GetBucketLogging 요청

DeleteObjects를 호출하면 다중 삭제 요청 자체는 REST.POST.MULTI_OBJECT_DELETE로 기록되지만, 삭제 대상 객체별 BATCH.DELETE.OBJECT 기록은 제공되지 않습니다.

참고

로그 파일을 저장하는 과정에서 발생하는 내부 요청도 기록될 수 있습니다. 로그 저장 버킷에 액세스 로그가 활성화되어 있다면 로그 파일 업로드 요청 등이 해당 버킷의 로그에 포함됩니다.

로그 레코드 형식

로그 파일은 27개 필드로 구성됩니다. 하나의 요청 정보가 한 줄로 기록됩니다. 각 필드는 공백으로 구분되나, 일부 필드 값에는 공백이 포함될 수 있습니다. Time 필드는 []로, Request-URI, Referer, User-Agent 필드는 ""로 묶여 기록됩니다. 로그를 분석할 때는 [] 또는 ""로 묶인 값을 하나의 필드로 처리해야 합니다. 단순히 공백을 기준으로 분리하면 필드 수가 27개와 일치하지 않을 수 있습니다.

로그 필드

로그 레코드를 구성하는 필드는 다음과 같습니다.

번호 필드 설명
1 Bucket Owner 소스 버킷 소유자의 식별자
2 Bucket 요청 대상 버킷 이름
3 Time 요청을 받은 시각(KST)
4 Remote IP 요청자의 IP 주소
5 Requester 요청을 인증한 사용자
6 Request ID 요청별 고유 식별자
7 Operation 요청 작업 유형
8 Key 요청 대상 객체의 키
9 Request-URI HTTP 요청 URI
10 HTTP Status HTTP 응답 상태 코드
11 Error Code 오류 발생 시 반환된 오류 코드
12 Bytes Sent 응답 본문의 크기
13 Object Size 요청 대상 객체의 크기
14 Total Time 요청 수신부터 응답 전송 완료까지 걸린 시간
15 Turn-Around Time 요청 수신 완료부터 응답 전송 시작까지 걸린 시간
16 Referer HTTP Referer 헤더
17 User-Agent HTTP User-Agent 헤더
18 Version Id 객체 버전 ID
19 Host Id 요청을 처리한 서버의 식별자
20 Signature Version 요청에 사용된 서명 버전
21 Cipher Suite TLS 암호화 스위트
22 Authentication Type 요청 인증 방식
23 Host Header HTTP Host 헤더
24 TLS Version TLS 프로토콜 버전
25 Access Point ARN 액세스 포인트 ARN
26 ACL Required ACL 평가 필요 여부
27 Source Region 복제 원본 리전
참고

현재 다음 7개 필드는 기록되지 않으며, 값이 없는 항목을 나타내는 -로 표시됩니다. 로그 파일을 분석할 때는 해당 필드에 실제 값이 포함되지 않는다는 점을 유의해 주십시오.

  • Remote IP
  • Requester
  • User-Agent
  • Host Id
  • Access Point ARN
  • ACL Required
  • Source Region

요청 유형별 Operation

로그 레코드의 Operation 필드에는 수행한 요청에 해당하는 작업 유형이 기록됩니다.

주요 API별 Operation은 다음과 같습니다.

API 또는 요청 Operation
HeadBucket REST.HEAD.BUCKET
ListObjects / ListObjectsV2 REST.GET.BUCKET
PutObject REST.PUT.OBJECT
GetObject REST.GET.OBJECT
HeadObject REST.HEAD.OBJECT
DeleteObject REST.DELETE.OBJECT
DeleteObjects REST.POST.MULTI_OBJECT_DELETE
CopyObject REST.COPY.OBJECT
PutBucketLogging REST.PUT.LOGGING_STATUS
GetBucketLogging REST.GET.LOGGING_STATUS
PutBucketPolicy REST.PUT.BUCKETPOLICY
GetBucketPolicy REST.GET.BUCKETPOLICY
PutBucketWebsite REST.PUT.WEBSITE
GetBucketWebsite REST.GET.WEBSITE
웹사이트 GET WEBSITE.GET.OBJECT
웹사이트 HEAD WEBSITE.HEAD.OBJECT
웹사이트 OPTIONS WEBSITE.OPTIONS.PREFLIGHT

객체 복사 요청은 대상 객체의 쓰기 작업과 원본 객체의 읽기 작업이 각각 기록됩니다. 원본 객체의 읽기 작업은 REST.COPY.OBJECT_GET으로 구분됩니다.

로그 전달 실패 및 주의 사항

버킷 액세스 로그 설정이 활성화되어 있더라도 로그 저장 버킷의 상태에 따라 로그 파일이 정상적으로 전달되지 않을 수 있습니다.

상황 처리 결과
로그 저장 버킷 삭제 설정은 유지되지만 로그 전달 실패
로그 저장에 필요한 권한이 유효하지 않은 경우 로그 전달 실패 가능
로그 저장 버킷에 Object Lock 기본 보존 기간 설정 설정은 가능하지만 로그 전달 실패
소스 버킷 삭제 로그 설정 삭제 및 미전달 로그 누락 가능

로그 전달에 실패하더라도 소스 버킷의 액세스 로그 설정은 자동으로 해제되지 않으며, 별도의 실패 알림도 제공되지 않습니다. 단, 소스 버킷 자체를 삭제하면 로그 설정도 함께 삭제됩니다.

주의
  • 로그 설정이 활성화되어 있다는 사실만으로 로그가 정상적으로 저장되고 있다고 판단할 수 없습니다.
  • 로그 저장 버킷을 삭제하거나 Object Lock 설정을 변경한 경우 로그 파일이 정상적으로 전달되는지 확인해 주십시오. 로그가 생성되지 않는다면 저장 버킷의 상태와 설정을 확인해야 합니다.