

# 서버 액세스 로깅 문제 해결
<a name="troubleshooting-server-access-logging"></a>

다음 주제는 Amazon S3를 사용하여 로깅을 설정할 때 발생할 수 있는 문제를 해결하는 데 도움이 됩니다.

**Topics**
+ [로깅 설정 시 자주 발생하는 오류 메시지](#common-errors)
+ [전달 실패 문제 해결](#delivery-failures)

## 로깅 설정 시 자주 발생하는 오류 메시지
<a name="common-errors"></a>

AWS Command Line Interface(AWS CLI) 및 AWS SDK를 통해 로깅을 활성화할 때 다음과 같은 일반적인 오류 메시지가 나타날 수 있습니다.

오류: 크로스 S3 위치 로깅이 허용되지 않음

대상 버킷이 소스 버킷과 다른 리전에 있는 경우 크로스 S3 위치 로깅이 허용되지 않음 오류가 발생합니다.** 이 오류를 해결하려면 액세스 로그를 수신하도록 구성된 대상 버킷이 소스 버킷과 동일한 AWS 리전 및 AWS 계정에 있어야 합니다.

오류: 로깅할 버킷의 소유자와 대상 버킷이 동일해야 함

서버 액세스 로깅을 활성화할 때 지정된 대상 버킷이 다른 계정에 속할 경우 이 오류가 발생합니다. 이 오류를 해결하려면 대상 버킷이 소스 버킷과 동일한 AWS 계정에 있어야 합니다.

**참고**  
소스 버킷과 다른 대상 버킷을 선택하는 것이 좋습니다. 소스 버킷과 대상 버킷이 동일하면 버킷에 작성되는 로그에 대해 추가 로그가 생성되어 스토리지 요금이 증가할 수 있습니다. 로그에 대한 이러한 추가 로그로 인해 원하는 특정 로그를 찾기가 어려울 수도 있습니다. 로그 관리를 간소화하기 위해서는 액세스 로그를 다른 버킷에 저장하는 것이 좋습니다. 자세한 내용은 [로그 전송을 사용 설정하려면 어떻게 해야 합니까?](ServerLogs.md#server-access-logging-overview) 섹션을 참조하세요.

오류: 로깅을 위한 대상 버킷이 없음

구성을 설정하기 전에 대상 버킷이 있어야 합니다. 이 오류는 대상 버킷이 존재하지 않거나 찾을 수 없음을 나타냅니다. 버킷 이름의 철자가 정확한지 확인한 다음 다시 시도하세요.

오류: 버킷 소유자 적용 버킷에 대상 부여가 허용되지 않음

이 오류는 대상 버킷이 S3 객체 소유권에 대해 버킷 소유자 적용 설정을 사용함을 나타냅니다. 버킷 소유자 적용 설정은 대상 권한 부여를 지원하지 않습니다. 자세한 내용은 [로그 전달을 위한 권한](enable-server-access-logging.md#grant-log-delivery-permissions-general) 섹션을 참조하세요.

## 전달 실패 문제 해결
<a name="delivery-failures"></a>

서버 액세스 로깅 문제를 방지하려면 다음 모범 사례를 따라야 합니다.
+ **S3 로그 전송 그룹에는 대상 버킷에 대한 쓰기 권한이 있어야 함** - S3 로그 전송 그룹은 대상 버킷에 서버 액세스 로그를 전송합니다. 버킷 정책 또는 버킷 액세스 제어 목록(ACL)을 사용하여 대상 버킷에 쓰기 액세스 권한을 부여할 수 있습니다. 그러나 ACL 대신 버킷 정책을 사용하는 것이 좋습니다. 대상 버킷에 액세스 권한을 부여하는 방법에 대한 자세한 내용은 [로그 전달을 위한 권한](enable-server-access-logging.md#grant-log-delivery-permissions-general) 섹션을 참조하세요.
**참고**  
대상 버킷이 객체 소유권에 대해 버킷 소유자 적용 설정을 사용하는 경우 다음 사항에 유의하세요.  
ACL이 비활성화되어 더 이상 권한에 영향을 미치지 않습니다. S3 로그 전달 그룹에 액세스 권한을 부여하도록 버킷 ACL을 업데이트할 수 없다는 뜻입니다. 로깅 서비스 보안 주체에 액세스 권한을 부여하려면 대상 버킷에 대한 버킷 정책을 업데이트해야 합니다.
`PutBucketLogging` 구성에 대상 권한 부여를 포함할 수 없습니다.
+ **대상 버킷의 버킷 정책이 로그에 대한 액세스를 허용해야 함** - 대상 버킷의 버킷 정책을 확인합니다. 버킷 정책에서 `"Effect": "Deny"`를 포함하는 명령문을 검색합니다. 그런 다음, `Deny` 명령문이 액세스 로그가 버킷에 기록되는 것을 막고 있지 않은지 확인합니다.
+ **대상 버킷에서 S3 객체 잠금이 활성화되어 있지 않아야 함** - 대상 버킷에 객체 잠금이 활성화되어 있는지 확인합니다. 오브젝트 잠금은 서버 액세스 로그 전달을 차단합니다. 객체 잠금이 활성화되지 않은 대상 버킷을 선택해야 합니다.
+ **대상 버킷이 Amazon S3 관리형 키(SSE-S3)를 사용해야 함** - 대상 버킷이 SSE-KMS 기본 암호화를 사용하는 경우 로그 객체가 생성되지만 액세스할 수 없는 키로 암호화될 수 있습니다.
+ **대상 버킷에 요청자 지불이 활성화되어 있지 않아야 함** - 서버 액세스 로깅을 위해 요청자 지불 버킷을 대상 버킷으로 사용하는 것은 지원되지 않습니다. 서버 액세스 로그 전송을 허용하려면 대상 버킷에서 요청자 지불 옵션을 비활성화하세요.
+ **AWS Organizations 서비스 제어 정책(SCP) 및 리소스 제어 정책(RCP) 검토** – AWS Organizations를 사용할 때는 서비스 제어 정책과 리소스 제어 정책을 확인하여 Amazon S3 액세스가 허용되는지 확인하세요. 해당 정책은 영향을 받는 계정의 보안 주체 및 리소스에 대한 최대 권한을 지정합니다. 정책에 `"Effect": "Deny"`가 포함된 명령문을 검색하고 `Deny` 명령문이 버킷에 대한 액세스 로그 쓰기를 방해하지 않는지 확인합니다. 자세한 내용은 *AWS Organizations 사용 설명서*에서 [AWS Organizations의 권한 부여 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_authorization_policies.html)을 참조하세요.
+ **최근 로깅 구성 변경 사항이 적용될 때까지 대기** - 서버 액세스 로깅을 처음으로 활성화하거나 로그의 대상 버킷을 변경하는 경우 완전히 적용되려면 시간이 필요합니다. 모든 요청이 제대로 로깅되고 전달되려면 한 시간 이상 걸릴 수 있습니다.

  로그 전달 실패를 확인하려면 Amazon CloudWatch에서 요청 지표를 활성화하세요. 몇 시간 내에 로그가 전송되지 않는 경우 로그 전달 실패를 나타낼 수 있는 `4xxErrors` 지표를 찾아보세요. 요청 지표 활성화에 대한 자세한 내용은 [버킷의 모든 객체에 대한 CloudWatch 지표 구성 생성](configure-request-metrics-bucket.md) 섹션을 참조하세요.