안녕하세요 에이클라우드입니다.
이번 포스팅에서는 S3 액세스 로깅 설정에 대해 다뤄보도록 하겠습니다.
AWS의 오브젝트 스토리지 서비스인 S3는 뛰어난 확장성과 가용성, 보안을 자랑하며 다양한 규모와 업종에서 사용할 수 있습니다.
위와 같은 이유로 많은 사용자 분들이 사용 중인 S3에는 서버 액세스 로깅이라는 설정이 있습니다.
S3 액세스 로깅은 S3 버킷에 수행된 요청에 대해 상세한 레코드를 제공하는데
여기에는 요청 유형, 리소스, 날짜 및 시간 등의 정보가 포함되어 있어 보안이나 감사 등에 사용할 수도 있습니다.
액세스 로깅을 활성화하면 사용자가 소스 버킷에 어떠한 요청을 하는 경우 이러한 활동에 대한 로그를 대상 버킷에 저장하게 됩니다.
아래 그림은 이에 대한 예시입니다.
주의사항으로는 소스 버킷과 대상 버킷은 동일한 리전과 계정에 있어야하며
대상 버킷에서는 액세스 로깅, 요청자 지불, 객체 잠금 등의 여러 기능이 비활성화 되어있어야 합니다.
그 중 제일 중요한 것은 소스 버킷이 로그를 전달할 대상으로 동일한 버킷을 선택하면 안된다는 점 입니다.
예를 들어 A라는 버킷의 로그를 저장할 대상으로 동일한 A 버킷을 선택하면 로그의 무한 루프가 생기기 때문입니다.
그럼 S3에서 서버 액세스 로깅을 활성화 하는 방법에 대해 알아보겠습니다.
S3 서버 액세스 로깅
1. 요청을 받을 소스 버킷과 로그를 저장할 대상 버킷을 준비했습니다.
2. 소스 버킷에 들어가 ‘속성‘ 탭으로 이동합니다.
아래로 스크롤 하다보면 ‘서버 액세스 로깅‘ 항목이 나타납니다. 우측의 ‘편집‘ 버튼을 클릭합니다.
3. 서버 액세스 로깅은 기본적으로 비활성화 되어있습니다. 이를 ‘활성화‘로 변경합니다.
S3는 로그를 전달하기 위해 특별한 계정을 사용하는데 액세스 로그 전달을 위해서는 이를 서비스 주체로 한 버킷 정책을 업데이트해야 합니다.
콘솔에서 액세스 로깅을 활성화하는 경우 대상 버킷의 정책을 자동으로 업데이트합니다.
(프로그래밍 방식으로 설정하는 경우 수동으로 업데이트 할 수 있습니다.)
4. 아래로 스크롤하면 액세스 로그를 전달할 대상 버킷을 선택하는 항목이 있습니다. ‘S3 찾아보기‘를 클릭합니다.
접두사를 설정하면 모든 로그에 접두사가 붙습니다. 예를 들어 접두사를 logs/로 지정하는 경우 로그 파일은 아래와 같습니다.
logs/2024-01-01-21-32-16-E598B8407131D2Y7
대상 버킷은 같은 리전 내에서만 선택할 수 있기 때문에 소스 버킷과 같은 리전의 버킷들만 나타납니다.
이 중 로그를 전달받을 버킷을 선택한 후 하단의 ‘대상 선택‘ 버튼을 클릭합니다.
(소스 버킷을 대상으로 선택하지 않도록 주의하세요.)
5. 전달받을 로그에 대한 형식을 지정합니다. 원하는 형식을 선택하고 하단의 ‘변경 사항 저장‘을 클릭하면 액세스 로깅이 활성화됩니다.
소스 버킷에서 액세스 로깅을 활성화한 뒤 대상 버킷의 버킷 정책을 확인해보면 아래와 같이 정책이 자동으로 업데이트 된 것을 확인할 수 있습니다.
logging.s3.amazonaws.com은 로깅 서비스 주체이며 대상 버킷에 대한 업로드 작업이 허용됩니다.
6. 테스트를 위해 소스 버킷에 파일 하나를 업로드합니다.
(대상 버킷에 액세스 로그가 저장 되기까지 1시간 이상 소요될 수 있습니다.)
7. 일정 시간이 지난 뒤 대상 버킷을 확인해본 결과 로그가 저장되어 있는 것을 확인할 수 있습니다.
로그 내용을 확인해보면 버킷 이름, 소스 IP, 사용자, 요청 작업, 날짜, 리소스 등 많은 정보가 포함되어 있습니다.
여기까지 S3 서버 액세스 로깅을 활성화하는 방법에 대해 다뤄보았습니다.
사용 시 유의하실 점은 간혹 액세스 로그가 전송되지 않을 수도 있다는 점입니다.
이는 액세스 로깅이 모든 요청을 완벽하게 기록할 목적이 아닌 버킷에 대한 트래픽 파악 용도로 제공되기 때문입니다.
또한 S3 서버 액세스 로깅 활성화에 따른 추가 비용이 발생하지는 않습니다.
다만, 로그를 저장하는 스토리지 비용이나 로그 파일을 사용자가 액세스 할 때 데이터 전달 비용이 발생하게 됩니다.
S3 서버 액세스 로깅에 대한 더 자세한 사항들은 AWS 공식 가이드 문서를 참고해주시길 바랍니다.
감사합니다.
S3 서버 액세스 로깅 참고 가이드
S3 서버 액세스 로깅
S3 서버 액세스 로그 형식
S3 서버 액세스 로깅 설정