내용으로 건너뛰기

Amazon S3 서버 액세스 로그가 버킷으로 전송되지 않는 이유는 무엇입니까?

3분 분량
0

Amazon Simple Storage Service(Amazon S3) 서버 액세스 로깅을 설정했습니다. 하지만 Amazon S3에서 서버 액세스 로그를 Amazon S3 대상 버킷으로 전송하지 않았습니다.

간략한 설명

서버 액세스 로깅을 처음으로 켜거나 로그의 대상 버킷을 변경하는 경우 변경 사항을 구현하는 데 시간이 걸립니다. 로깅을 켠 이후 처음 1시간 이내에 Amazon S3에서 전송 요청을 기록하지 않을 수 있습니다. 또한 Amazon S3는 대상 버킷을 변경한 후 첫 1시간 이내에 이전 대상 버킷에 로그를 전송할 수 있습니다.

로깅 구성을 변경한 후 1시간 이상 기다린 다음 로그를 확인하십시오. 자세한 내용은 최선의 서버 로그 전송을 참조하십시오.

소스 및 대상 버킷이 동일한 AWS 리전에 있고 동일한 AWS 계정이 버킷을 소유하고 있어야 합니다. 또한 대상 버킷에 대해 요청자 지불을 활성화한 경우 비활성화하십시오.

참고: Amazon S3는 범용 버킷에 대해서만 서버 액세스 로깅을 제공합니다. 디렉터리 버킷과 S3 Express One Zone 디렉터리 버킷은 이 기능을 지원하지 않습니다.

로그가 여전히 대상 버킷에 표시되지 않는 경우 다음 해결 방법을 사용하여 문제를 해결하십시오.

해결 방법

로그 전송 그룹에 대상 버킷에 대한 액세스 권한이 있는지 확인

Amazon S3는 로그 전송 그룹을 사용하여 서버 액세스 로그를 대상 버킷에 전송합니다. 서버 액세스 로그를 수신하려면 대상 버킷에 대한 로깅 서비스 위탁자 액세스 권한을 부여해야 합니다.

대상 버킷에 대한 액세스 권한을 부여하려면 S3 버킷 정책을 만드십시오. 액세스 제어 목록(ACL)을 사용하여 대상 버킷에 대한 액세스 권한을 부여할 수 있습니다. 그러나 각 객체에 대한 액세스를 개별적으로 제어해야 하는 경우에만 ACL을 사용하는 것이 좋습니다. ACL을 사용해야 하는 경우에는 객체 소유권버킷 소유자 적용으로 설정하지 마십시오.

버킷 정책을 통해 액세스 권한 부여

로깅 서비스 위탁자에게 s3:PutObject 권한을 부여하도록 버킷 정책을 업데이트합니다.

정책 예시:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3ServerAccessLogsPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/EXAMPLE-LOGGING-PREFIX*",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET"
                },
                "StringEquals": {
                    "aws:SourceAccount": "SOURCE-ACCOUNT-ID"
                }
            }
        }
    ]
}

버킷 ACL을 통해 액세스 권한 부여

S3 로그 전송 그룹에 쓰기 권한을 부여하는 권한 부여 항목을 버킷 ACL에 추가합니다.

대상 버킷의 ACL을 수정하려면 다음 단계를 완료합니다.

  1. Amazon S3 콘솔을 엽니다.
  2. 탐색 창에서 버킷을 선택한 다음, 대상 범용 버킷을 선택합니다.
  3. 권한 탭을 선택합니다.
  4. 액세스 제어 목록(ACL) 섹션에서 편집을 선택합니다.
  5. S3 로그 전송 그룹에서 객체 - 쓰기버킷 ACL - 쓰기를 선택합니다.
  6. 변경 사항 저장을 선택합니다.

대상 버킷의 정책이 로그에 대한 액세스를 거부하지 않는지 확인

대상 버킷의 정책을 확인하여 **“Effect”: “Deny”**가 포함된 문을 찾습니다. 정책에 Deny 문이 있는 경우 Deny 문이 버킷에 대한 쓰기 액세스를 막지 않는지 확인합니다.

참고: 서버 액세스 로그에 별도의 버킷을 사용하는 것이 좋습니다. 버킷은 기본적으로 비공개이므로 버킷에 대한 무단 액세스를 방지하기 위해 버킷 정책에 Deny 문을 사용할 필요가 없습니다.

대상 버킷에서 Amazon S3 Object Lock을 껐는지 확인

대상 버킷의 Object Lock이 꺼졌는지 확인합니다. Object Lock을 켜면 Amazon S3는 서버 액세스 로그를 전송할 수 없습니다.

암호화 키로 SSE-S3를 선택했는지 확인

대상 버킷에서 기본 암호화를 사용하는 경우 암호화에 Amazon S3 관리형 키(SSE-S3)를 사용한 서버 측 암호화를 선택했는지 확인하십시오. 서버 로그 전송은 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화를 지원하지 않습니다. 기본 암호화를 구성하려면 기본 암호화 구성을 참조하십시오.

관련 정보

Amazon S3 서버 액세스 로깅 사용

AWS 공식업데이트됨 6달 전