CloudTrail에 대한 Amazon S3 버킷 정책 - AWS CloudTrail

CloudTrail에 대한 Amazon S3 버킷 정책

기본적으로 Amazon S3 버킷 및 객체는 프라이빗입니다. 리소스 소유자(버킷을 생성한 AWS 계정)만 버킷과 버킷에 포함된 객체에 액세스할 수 있습니다. 리소스 소유자는 액세스 정책을 작성하여 다른 리소스 및 사용자에게 액세스 권한을 부여할 수 있습니다.

조직 추적에 대한 로그 파일을 수신하도록 Amazon S3 버킷을 생성하거나 수정하려는 경우 버킷 정책을 추가로 수정해야 합니다. 자세한 내용은 AWS Command Line Interface를 사용하여 조직에 대한 추적 생성 단원을 참조하십시오.

로그 파일을 S3 버킷으로 전송하려면 CloudTrail은 필요한 권한을 가지고 있어야 하며, 이 설정을 요청자 지불 버킷으로 구성할 수 없습니다. CloudTrail 콘솔에서 추적을 생성 또는 업데이트하는 과정의 일부로 Amazon S3 버킷을 생성할 때 CloudTrail은 자동으로 필요한 권한을 버킷에 연결합니다.

CloudTrail은 정책에 다음 필드를 자동으로 추가합니다.

  • 허용된 SID

  • 버킷 이름

  • CloudTrail에 대한 서비스 보안 주체 이름

  • 로그 파일이 저장되는 폴더의 이름(버킷 이름, 접두사(지정된 경우), AWS 계정 ID 포함)

다음 정책은 CloudTrail이 지원되는 리전의 버킷에 로그 파일을 작성하도록 허용합니다. 자세한 내용은 CloudTrail 지원되는 리전 섹션을 참조하십시오.

S3 버킷 정책

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::myBucketName" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/[optional prefix]/AWSLogs/myAccountID/*", "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} } ] }

CloudTrail 로그 전송 시 기존 버킷 지정

로그 파일 전송 시 스토리지 위치로 기존 S3 버킷을 지정한 경우 CloudTrail이 버킷에 작성하도록 허용하는 정책을 해당 버킷에 연결해야 합니다.

참고

CloudTrail 로그 전용 S3 버킷을 사용하는 것이 가장 좋습니다.

Amazon S3 버킷에 필요한 CloudTrail 정책을 추가하려면

  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. CloudTrail이 로그 파일을 전송할 버킷을 선택한 다음 속성을 선택합니다.

  3. Permissions를 선택합니다.

  4. [Edit Bucket Policy]를 선택합니다.

  5. S3 버킷 정책를 [Bucket Policy Editor] 창으로 복사합니다. 기울임꼴로 표시된 자리 표시자를 버킷 이름, 접두사, 계정 번호로 바꿉니다. 추적을 생성했을 때 접두사를 지정한 경우 여기에 포함합니다. 접두사는 버킷 안에 폴더 같은 조직을 생성한 S3 객체 키에 선택적으로 추가할 수 있습니다.

    참고

    기존 버킷에 이미 하나 이상의 정책이 연결되어 있는 경우 CloudTrail 액세스용 명령문을 해당 정책에 추가합니다. 버킷에 액세스하는 사용자에게 적절한지 발생한 권한 집합을 평가합니다.

다른 계정의 로그 파일 수신

여러 AWS 계정의 로그 파일을 단일 S3 버킷으로 전송하도록 CloudTrail을 구성할 수 있습니다. 자세한 내용은 여러 계정에서 CloudTrail 로그 파일 수신를 참조하십시오.

조직 추적에 대한 로그 파일을 저장하는 데 사용할 Amazon S3 버킷을 생성하거나 업데이트합니다.

조직 추적에 대한 로그 파일을 수신할 Amazon S3 버킷을 지정해야 합니다. 이 버킷에는 CloudTrail이 조직에 대한 로그 파일을 버킷에 저장할 수 있도록 허용하는 정책이 있어야 합니다.

다음은 my-organization-bucket이라는 Amazon S3 버킷에 대한 정책 예제입니다. 이 버킷은 ID가 111111111111인 AWS 계정에 있습니다. 이 계정은 조직 추적에 대한 로깅을 허용하는 ID가 o-exampleorgid인 조직의 마스터 계정입니다. 또한 추적이 조직 추적에서 111111111111 계정에 대한 추적으로 변경될 경우 해당 계정에 대한 로깅도 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::my-organization-bucket" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-organization-bucket/AWSLogs/111111111111/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::my-organization-bucket/AWSLogs/o-exampleorgid/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

이 정책 예제에서는 멤버 계정의 사용자가 조직에 대해 생성된 로그 파일에 액세스하는 것을 허용하지 않습니다. 기본적으로 마스터 계정만 조직 로그 파일에 액세스할 수 있습니다. 멤버 계정의 IAM 사용자에게 Amazon S3 버킷에 대한 읽기 액세스를 허용하는 방법에 대한 자세한 내용은 AWS 계정 간 CloudTrail 로그 파일 공유를 참조하십시오.

S3 버킷 정책 문제 해결

다음 섹션에서는 S3 버킷 정책 문제를 해결하는 방법을 설명합니다.

일반적인 S3 정책 구성 오류

추적을 생성 또는 업데이트하는 동안 새 버킷을 생성하면 CloudTrail은 필요한 권한을 해당 버킷에 연결합니다. 버킷 정책은 서비스 보안 주체 이름 "cloudtrail.amazonaws.com"을 사용합니다. 이는 CloudTrail이 모든 리전에 대한 로그를 전송하도록 허용합니다.

CloudTrail이 리전에 대한 로그를 전송하지 않으면 각 리전에 대해 CloudTrail 계정 ID를 지정하는 이전 정책이 버킷에 연결된 것일 수 있습니다. 이 정책은 지정된 리전에 대한 로그만 전송하는 권한을 CloudTrail에 부여합니다.

CloudTrail 서비스 보안 주체와 함께 권한을 사용하도록 정책을 업데이트하는 것이 가장 좋습니다. 이 작업을 수행하려면 계정 ID ARN을 서비스 보안 주체 이름 "cloudtrail.amazonaws.com"으로 바꾸십시오. 이렇게 하면 현재 리전 및 새 리전에 대한 로그를 전송하는 권한이 CloudTrail에 부여됩니다. 다음은 권장되는 정책 구성의 예입니다.

예 서비스 보안 주체 이름이 포함된 버킷 정책의 예

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::bucket-1" }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::bucket-1/my-prefix/AWSLogs/123456789012/*", "Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}} } ] }

기존 버킷의 접두사 변경

추적에서 로그를 수신하는 S3 버킷에 대한 로그 파일 접두사를 추가, 수정 또는 제거할 경우 There is a problem with the bucket policy라는 오류가 표시될 수 있습니다. 잘못된 접두사를 가진 버킷 정책을 사용할 경우 추적이 버킷으로 로그를 전송하지 못할 수 있습니다. 이 문제를 해결하려면 Amazon S3 콘솔을 사용하여 버킷 정책의 접두사를 업데이트한 후 CloudTrail 콘솔을 사용하여 추적의 버킷에 동일한 접두사를 지정하십시오.

S3 버킷에 대한 로그 파일 접두사를 업데이트하려면

  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 접두사를 수정할 버킷을 선택한 다음 [Properties]를 선택합니다.

  3. Permissions를 선택합니다.

  4. [Edit Bucket Policy]를 선택합니다.

  5. 버킷 정책의 s3:PutObject 작업 아래에서 필요에 따라 로그 파일 접두사를 추가, 수정 또는 제거하도록 Resource 항목을 편집합니다.

    "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/prefix/AWSLogs/myAccountID/*",
  6. Save를 선택합니다.

  7. https://console.aws.amazon.com/cloudtrail/에서 CloudTrail 콘솔을 엽니다.

  8. 추적을 선택하고 [Storage location]의 경우 연필 아이콘을 클릭하여 버킷에 대한 설정을 편집합니다.

  9. [S3 bucket]의 경우 변경하는 접두사를 포함한 버킷을 선택합니다.

  10. [Log file prefix]의 경우 버킷 정책에 입력한 접두사와 일치하도록 접두사를 업데이트합니다.

  11. Save를 선택합니다.

추가 리소스

S3 버킷 및 정책에 대한 자세한 내용은 Amazon Simple Storage Service 개발자 가이드를 참조하십시오.