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를 참조하세요.

CloudTrail은 계정 생성 시 AWS 계정에서 사용되도록 설정됩니다. 지원되는 이벤트 활동이 Amazon S3에서 발생하면, 해당 활동이 이벤트 기록의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최신 이벤트를 확인, 검색 및 다운로드할 수 있습니다. 자세한 내용은 CloudTrail 이벤트 기록을 사용하여 이벤트 보기를 참조하십시오.

Amazon S3의 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. CloudTrail은 추적을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 콘솔에서 추적을 생성하면 기본적으로 모든 리전에 추적이 적용됩니다. 추적은 AWS 파티션에 있는 모든 리전의 이벤트를 로깅하고 지정된 Amazon S3 버킷으로 로그 파일을 전송합니다. 또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.

모든 이벤트 및 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. 자격 증명 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.

  • 요청을 루트 사용자로 했는지 IAM 사용자 자격 증명으로 했는지 여부

  • 역할 또는 연합된 사용자에 대한 임시 보안 자격 증명을 사용하여 요청이 생성되었는지 여부

  • 다른 AWS 서비스가 요청한 것인지 여부

자세한 내용은 CloudTrail userIdentity 요소를 참조하십시오.

원하는 기간만큼 버킷에 로그 파일을 저장할 수 있습니다. 그러나 Amazon S3 수명 주기 규칙을 정의하여 자동으로 로그 파일을 아카이브하거나 삭제할 수도 있습니다. 기본적으로 로그 파일은 Amazon S3 서버 쪽 암호화(SSE)를 사용하여 암호화합니다.

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 작업 이름과 다릅니다. 예를 들어, PutBucketLifecycleConfiguration은 PutBucketLifecycle입니다.

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

AWS CloudTrail 로깅을 통해 추적되는 Amazon S3 객체 수준 작업

객체 수준 Amazon S3 작업에 대한 CloudTrail 로그를 가져올 수도 있습니다. 이렇게 하려면 S3 버킷 또는 계정의 모든 버킷에 대한 데이터 이벤트를 사용 설정합니다. 사용자의 계정에 객체 수준 작업이 나타나면 CloudTrail이 추적 설정을 평가합니다. 이벤트가 추적에서 지정한 객체와 일치할 경우, 그 이벤트가 기록됩니다. 자세한 내용은 S3 버킷 및 객체에 대한 CloudTrail 이벤트 로깅 사용 설정AWS CloudTrail 사용 설명서추적을 위해 데이터 이벤트 로깅을 참조하세요.

다음 객체 수준 API 작업은 CloudTrail 이벤트로 로깅됩니다.

이러한 작업 이외에, 일부 조건에서는 다음과 같은 버킷 수준 작업을 사용하여 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에 의해 실행되었다는 것입니다.