서버 액세스 로깅 문제 해결
다음 주제는 Amazon S3를 사용하여 로깅을 설정할 때 발생할 수 있는 문제를 해결하는 데 도움이 됩니다.
로깅 설정 시 자주 발생하는 오류 메시지
AWS Command Line Interface(AWS CLI) 및 AWS SDK를 통해 로깅을 활성화할 때 다음과 같은 일반적인 오류 메시지가 나타날 수 있습니다.
오류: 크로스 S3 위치 로깅이 허용되지 않음
대상 버킷이 소스 버킷과 다른 리전에 있는 경우 크로스 S3 위치 로깅이 허용되지 않음 오류가 발생합니다. 이 오류를 해결하려면 액세스 로그를 수신하도록 구성된 대상 버킷이 소스 버킷과 동일한 AWS 리전 및 AWS 계정에 있어야 합니다.
오류: 로깅할 버킷의 소유자와 대상 버킷이 동일해야 함
서버 액세스 로깅을 활성화할 때 지정된 대상 버킷이 다른 계정에 속할 경우 이 오류가 발생합니다. 이 오류를 해결하려면 대상 버킷이 소스 버킷과 동일한 AWS 계정에 있어야 합니다.
참고
소스 버킷과 다른 대상 버킷을 선택하는 것이 좋습니다. 소스 버킷과 대상 버킷이 동일하면 버킷에 작성되는 로그에 대해 추가 로그가 생성되어 스토리지 요금이 증가할 수 있습니다. 로그에 대한 이러한 추가 로그로 인해 원하는 특정 로그를 찾기가 어려울 수도 있습니다. 로그 관리를 간소화하기 위해서는 액세스 로그를 다른 버킷에 저장하는 것이 좋습니다. 자세한 내용은 로그 전송을 사용 설정하려면 어떻게 해야 합니까? 섹션을 참조하세요.
오류: 로깅을 위한 대상 버킷이 없음
구성을 설정하기 전에 대상 버킷이 있어야 합니다. 이 오류는 대상 버킷이 존재하지 않거나 찾을 수 없음을 나타냅니다. 버킷 이름의 철자가 정확한지 확인한 다음 다시 시도하세요.
오류: 버킷 소유자 적용 버킷에 대상 부여가 허용되지 않음
이 오류는 대상 버킷이 S3 객체 소유권에 대해 버킷 소유자 적용 설정을 사용함을 나타냅니다. 버킷 소유자 적용 설정은 대상 권한 부여를 지원하지 않습니다. 자세한 내용은 로그 전달을 위한 권한 섹션을 참조하세요.
전달 실패 문제 해결
서버 액세스 로깅 문제를 방지하려면 다음 모범 사례를 따라야 합니다.
S3 로그 전송 그룹에는 대상 버킷에 대한 쓰기 권한이 있어야 함 - S3 로그 전송 그룹은 대상 버킷에 서버 액세스 로그를 전송합니다. 버킷 정책 또는 버킷 액세스 제어 목록(ACL)을 사용하여 대상 버킷에 쓰기 액세스 권한을 부여할 수 있습니다. 그러나 ACL 대신 버킷 정책을 사용하는 것이 좋습니다. 대상 버킷에 액세스 권한을 부여하는 방법에 대한 자세한 내용은 로그 전달을 위한 권한 섹션을 참조하세요.
참고
대상 버킷이 객체 소유권에 대해 버킷 소유자 적용 설정을 사용하는 경우 다음 사항에 유의하세요.
-
ACL이 비활성화되어 더 이상 권한에 영향을 미치지 않습니다. S3 로그 전달 그룹에 액세스 권한을 부여하도록 버킷 ACL을 업데이트할 수 없다는 뜻입니다. 로깅 서비스 보안 주체에 액세스 권한을 부여하려면 대상 버킷에 대한 버킷 정책을 업데이트해야 합니다.
-
PutBucketLogging
구성에 대상 권한 부여를 포함할 수 없습니다.
-
대상 버킷의 버킷 정책이 로그에 대한 액세스를 허용해야 함 - 대상 버킷의 버킷 정책을 확인합니다. 버킷 정책에서
"Effect": "Deny"
를 포함하는 명령문을 검색합니다. 그런 다음,Deny
명령문이 액세스 로그가 버킷에 기록되는 것을 막고 있지 않은지 확인합니다.대상 버킷에서 S3 객체 잠금이 활성화되어 있지 않아야 함 - 대상 버킷에 객체 잠금이 활성화되어 있는지 확인합니다. 오브젝트 잠금은 서버 액세스 로그 전달을 차단합니다. 객체 잠금이 활성화되지 않은 대상 버킷을 선택해야 합니다.
대상 버킷에 기본 암호화가 활성화된 경우 Amazon S3 관리형 키(SSE-S3)를 선택해야 함 - Amazon S3 관리형 키를 통한 서버 측 암호화(SSE-S3)를 사용하는 경우에만 대상 버킷에 기본 버킷 암호화를 사용할 수 있습니다. AWS Key Management Service(AWS KMS) 키를 사용한 기본 서버 측 암호화(SSE-KMS)는 서버 액세스 로깅 대상 버킷에 지원되지 않습니다. 기본 암호화를 활성화하는 방법에 대한 자세한 내용은 기본 암호화 구성 섹션을 참조하세요.
대상 버킷에 요청자 지불이 활성화되어 있지 않아야 함 - 서버 액세스 로깅을 위해 요청자 지불 버킷을 대상 버킷으로 사용하는 것은 지원되지 않습니다. 서버 액세스 로그 전송을 허용하려면 대상 버킷에서 요청자 지불 옵션을 비활성화하세요.
AWS Organizations 서비스 제어 정책 검토 - AWS Organizations를 사용할 때는 서비스 제어 정책을 확인하여 Amazon S3 액세스가 허용되는지 확인하세요. 서비스 제어 정책은 영향을 받는 계정에 대한 최대 권한을 지정합니다. 서비스 제어 정책에
"Effect": "Deny"
가 포함된 명령문을 검색하고Deny
명령문이 버킷에 대한 액세스 로그 쓰기를 방해하지 않는지 확인합니다. 자세한 내용은 AWS Organizations 사용 설명서의 서비스 제어 정책(SCP)을 참조하세요.-
최근 로깅 구성 변경 사항이 적용될 때까지 대기 - 서버 액세스 로깅을 처음으로 활성화하거나 로그의 대상 버킷을 변경하는 경우 완전히 적용되려면 시간이 필요합니다. 모든 요청이 제대로 로깅되고 전달되려면 한 시간 이상 걸릴 수 있습니다.
로그 전달 실패를 확인하려면 Amazon CloudWatch에서 요청 지표를 활성화하세요. 몇 시간 내에 로그가 전송되지 않는 경우 로그 전달 실패를 나타낼 수 있는
4xxErrors
지표를 찾아보세요. 요청 지표 활성화에 대한 자세한 내용은 버킷의 모든 객체에 대한 CloudWatch 지표 구성 생성 섹션을 참조하세요.