Amazon S3 CloudTrail 이벤트 - Amazon Simple Storage Service

Amazon S3 CloudTrail 이벤트

중요

이제 Amazon S3가 Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3)를 Amazon S3 내 모든 버킷 암호화의 기본 수준으로 적용합니다. 2023년 1월 5일부터 Amazon S3로의 모든 새 객체 업로드는 추가 비용 없이 성능에 영향을 미치지 않고 자동으로 암호화됩니다. S3 버킷 기본 암호화 구성에 및 신규 객체 업로드에 대한 자동 암호화 상태는 AWS CloudTrail 로그, S3 인벤토리, S3 스토리지 렌즈, Amazon S3 콘솔에서 사용할 수 있으며, AWS Command Line Interface 및 AWS SDK에서 추가 Amazon S3 API 응답 헤더로도 사용할 수 있습니다. 자세한 내용은 기본 암호화 관련 FAQ를 참조하십시오.

이 섹션에서는 S3가 CloudTrail에 기록하는 이벤트에 대한 정보를 제공합니다.

CloudTrail의 Amazon S3 데이터 이벤트

데이터 이벤트는 리소스 기반 또는 리소스에서 수행된 리소스 작업에 대한 정보를 제공합니다(예: Amazon S3 객체 읽기 또는 쓰기). 이를 데이터 영역 작업이라고도 합니다. 데이터 이벤트가 대량 활동인 경우도 있습니다. 기본적으로 CloudTrail은 데이터 이벤트를 로깅하지 않습니다. CloudTrail 이벤트 기록은 데이터 이벤트를 기록하지 않습니다.

데이터 이벤트에는 추가 요금이 적용됩니다. CloudTrail 요금에 대한 자세한 내용은 AWS CloudTrail 요금을 참조하세요.

CloudTrail 콘솔, AWS CLI 또는 CloudTrail API 작업을 사용하여 Amazon S3 리소스 유형에 대한 데이터 이벤트를 로깅할 수 있습니다. 데이터 이벤트를 로깅하는 방법에 대한 자세한 내용은 AWS CloudTrail 사용 설명서의 Logging data events with the AWS Management ConsoleLogging data events with the AWS Command Line Interface를 참조하세요.

다음 테이블에는 데이터 이벤트를 로깅할 수 있는 Amazon S3 유형이 나열되어 있습니다. 데이터 이벤트 유형(콘솔) 열에는 CloudTrail 콘솔의 데이터 이벤트 유형 목록에서 선택할 값이 표시됩니다. resources.type 값 열에는 AWS CLI 또는 CloudTrail API를 사용하여 고급 이벤트 선택기를 구성할 때 지정하는 resources.type 값이 표시됩니다. CloudTrail에 로깅되는 데이터 API 열에는 리소스 유형에 대해 CloudTrail에 로깅된 API 호출이 표시됩니다.

데이터 이벤트 유형(콘솔) resources.type 값 CloudTrail에 로깅되는 데이터 API
S3 AWS::S3::Object
S3 Express One Zone AWS::S3Express::Object
S3 액세스 포인트 AWS::S3::Access Point
S3 객체 Lambda AWS::S3ObjectLambda::AccessPoint
S3 Outposts AWS::S3Outposts::Object

eventName, readOnlyresources.ARN 필드를 필터링하여 중요한 이벤트만 로깅하도록 고급 이벤트 선택기를 구성할 수 있습니다. 이러한 필드에 대한 자세한 내용은 AWS CloudTrail API 참조의 AdvancedFieldSelector 섹션을 참조하세요.

CloudTrail의 Amazon S3 관리 이벤트

Amazon S3는 모든 컨트롤 플레인 작업을 관리 이벤트로 로깅합니다. S3 API 작업에 대한 자세한 내용은 Amazon S3 API 참조를 참조하세요.

CloudTrail이 Amazon S3에 대한 요청을 캡처하는 방법

기본적으로 CloudTrail은 최근 90일 동안의 S3 버킷 수준 API 호출을 기록하지만 객체에 대한 로그 요청은 기록하지 않습니다. 버킷 수준 호출에는 CreateBucket, DeleteBucket, PutBucketLifecycle, PutBucketPolicy 등의 이벤트가 포함됩니다. CloudTrail 콘솔에서 버킷 수준 이벤트를 볼 수 있습니다. 그러나 데이터 이벤트(Amazon S3 객체 수준 호출)는 볼 수 없으므로 CloudTrail 로그를 구문 분석하거나 쿼리해야 합니다.

CloudTrail 로깅을 통해 추적되는 Amazon S3 계정 수준 작업

CloudTrail은 계정 수준 작업을 기록합니다. Amazon S3 레코드가 다른 AWS 서비스 레코드와 함께 로그 파일에 기록됩니다. CloudTrail은 기간 및 파일 크기를 기준으로 새 파일을 만들고 기록하는 시점을 결정합니다.

이 섹션의 표에는 CloudTrail 로깅이 지원되는 Amazon S3 계정 수준 작업이 나와 있습니다.

CloudTrail 로깅을 통해 추적되는 Amazon S3 계정 수준 API 작업은 다음 이벤트 이름으로 표시됩니다. CloudTrail 이벤트 이름은 API 작업 이름과 다릅니다. 예를 들어 DeletePublicAccessBlock은 DeleteAccountPublicAccessBlock입니다.

CloudTrail 로깅을 통해 추적되는 Amazon S3 버킷 수준 작업

기본적으로 CloudTrail은 범용 버킷의 버킷 수준 작업을 로깅합니다. Amazon S3 레코드가 다른 AWS 서비스 레코드와 함께 로그 파일에 기록됩니다. CloudTrail은 기간 및 파일 크기를 기준으로 새 파일을 만들고 기록하는 시점을 결정합니다.

이 섹션에는 CloudTrail 로깅이 지원되는 Amazon S3 버킷 수준 작업이 나와 있습니다.

CloudTrail 로깅을 통해 추적되는 Amazon S3 버킷 수준 API 작업은 다음 이벤트 이름으로 표시됩니다. 경우에 따라 CloudTrail 이벤트 이름은 API 작업 이름과 다릅니다. 예를 들어 PutBucketLifecycleConfigurationPutBucketLifecycle입니다.

이러한 API 작업 이외에 OPTIONS 객체 객체 수준 작업을 사용할 수도 있습니다. 이 작업은 버킷의 CORS 구성을 확인하므로 CloudTrail 로깅에서 버킷 수준 작업처럼 간주됩니다.

CloudTrail 로깅으로 추적되는 Amazon S3 Express One Zone 버킷 수준(리전 API 엔드포인트) 작업

기본적으로 CloudTrail은 디렉터리 버킷에 대한 버킷 수준 작업을 관리 이벤트로 로깅합니다. S3 Express One Zone의 CloudTrail 관리 이벤트용 eventsources3express.amazonaws.com입니다.

다음과 같은 리전 엔드포인트 API 작업이 CloudTrail에 로깅됩니다.

자세한 내용은 S3 Express One Zone에 대한 AWS CloudTrail 로깅을 참조하세요.

크로스 계정 시나리오에서의 Amazon S3 객체 수준 작업

다음은 교차 계정 시나리오에서의 객체 수준 API 호출과 관련한 특별한 사용 사례로, CloudTrail 로그가 어떻게 보고되는지 보여줍니다. CloudTrail은 로그 항목이 삭제되거나 생략되어 액세스가 거부되는 일부 경우를 제외하고 요청자(API 호출을 수행한 계정)에게 로그를 전달합니다. 교차 계정 액세스를 설정할 때, 이 섹션의 예시들을 고려하십시오.

참고

이 예에서는 CloudTrail 로그가 올바르게 구성되어 있다고 가정합니다.

예 1: CloudTrail이 버킷 소유자에게 로그를 전송함

버킷 소유자가 동일한 객체 API 작업에 대한 권한을 가지지 못한 경우에라도 CloudTrail이 버킷 소유자에게 액세스 로그를 전송합니다. 다음 교차 계정 시나리오를 고려해 보십시오.

  • 계정 A가 버킷을 소유하고 있습니다.

  • 계정 B(요청자)가 그 버킷의 객체에 액세스하려고 시도합니다.

  • 계정 C가 객체를 소유하고 있습니다. 계정 C가 계정 A와 동일한 계정일 수도, 아닐 수도 있습니다.

참고

CloudTrail은 항상 객체 수준 API 로그를 요청자(계정 B)에게 전송합니다. 또한, 버킷 소유자가 객체를 소유하지 않았거나(계정 C) 또는 해당 객체에 동일한 API 작업 권한을 가지지 않은 경우에도 CloudTrail이 버킷 소유자(계정 A)에게 동일한 로그를 전송합니다.

예 2: CloudTrail이 객체 ACL 설정에 사용된 이메일 주소들을 확산시키지 않음

다음 교차 계정 시나리오를 고려해 보십시오.

  • 계정 A가 버킷을 소유하고 있습니다.

  • 계정 B(요청자)가 이메일 주소를 사용하여 객체 ACL 권한 부여를 설정하는 요청을 전송합니다. ACL에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.

이 요청자는 이메일 정보와 함께 로그를 가져옵니다. 그러나 버킷 소유자는 예 1에서와 같이 로그를 수신할 자격이 있는 경우 이벤트를 보고하는 CloudTrail 로그를 가져옵니다. 그러나 버킷 소유자는 ACL 구성 정보, 특히 피부여자 이메일 주소와 권한 부여를 가져오지 않습니다. 로그가 버킷 소유자에게 제공하는 유일한 정보는 ACL API 호출이 계정 B에 의해 실행되었다는 것입니다.