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

CloudTrail에 대한 Amazon S3 버킷 정책

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

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

S3 버킷에 로그 파일을 전달하려면 CloudTrail에 필요한 권한이 있어야 하며, 버킷을 요청자 지불 버킷으로 구성할 수 없습니다.

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

  • 허용된 SID

  • 버킷 이름

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

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

보안 모범 사례로 aws:SourceArn 조건 키를 Amazon S3 버킷 정책에 추가합니다. IAM 전역 조건 키 aws:SourceArn는 CloudTrail이 특정 추적(들)에 대해서만 S3 버킷에 쓰도록 합니다. aws:SourceArn의 값은 항상 버킷을 사용하여 로그를 저장하는 추적의 ARN(또는 추적 ARN의 배열)입니다. 기존 추적에 대해 S3 버킷 정책에 aws:SourceArn 조건 키를 추가해야 합니다.

다음 정책은 CloudTrail이 지원되는 리전의 버킷에 로그 파일을 작성하도록 허용합니다. myBucketName, [optionalPrefix]/, myAccountID, region, 및 trailName을 구성에 적절한 값으로 바꿉니다.

S3 버킷 정책

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

AWS 리전에 대한 자세한 정보는 CloudTrail 지원 리전 섹션을 참조하세요.

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

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

참고

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

Amazon S3 버킷에 필요한 CloudTrail 정책을 추가하려면
  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. CloudTrail이 로그 파일을 전송할 버킷을 선택한 다음, 권한(Permissions)을 선택합니다.

  3. 편집(Edit)을 선택합니다.

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

    참고

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

다른 계정의 로그 파일 수신

여러 AWS 계정의 로그 파일을 단일 S3 버킷에 전송하도록 CloudTrail을 구성할 수 있습니다. 자세한 내용은 여러 계정에서 CloudTrail 로그 파일 수신 다른 계정에서 호출한 데이터 이벤트에 대한 버킷 소유자 계정 ID 수정 단원을 참조하세요.

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

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

다음은 myOrganizationBucket이라는 Amazon S3 버킷에 대한 정책 예시입니다. 이 버킷은 조직 추적에 대한 로깅을 허용하며 ID가 o-exampleorgid인 조직의 관리 계정인 AWS 계정(ID: 111111111111)에 있습니다. 또한 추적이 조직 추적에서 111111111111 계정에 대한 추적으로 변경될 경우 해당 계정에 대한 로깅도 허용합니다. myOrganizationBucket, 111111111111, region, 및 trailName을 구성에 적절한 값으로 바꿉니다.

예제 정책에는 Amazon S3 버킷 정책을 위한 aws:SourceArn 조건 키가 포함되어 있습니다. IAM 전역 조건 키 aws:SourceArn는 CloudTrail이 특정 추적(들)에 대해서만 S3 버킷에 쓰도록 합니다. 조직 추적에서 aws:SourceArn의 값은 관리 계정이 소유하고 관리 계정 ID를 사용하는 추적 ARN이어야 합니다.

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

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

Amazon S3 버킷 정책 문제 해결

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

일반적인 Amazon S3 정책 구성 오류

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

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

CloudTrail 서비스 보안 주체와 함께 권한을 사용하도록 정책을 업데이트하는 것이 가장 좋습니다. 이 작업을 수행하려면 계정 ID ARN을 서비스 보안 주체 이름 "cloudtrail.amazonaws.com"으로 바꾸십시오. 이렇게 하면 현재 리전 및 새 리전의 로그를 전송하는 권한이 CloudTrail에 부여됩니다. 보안 모범 사례로 aws:SourceArn 또는 aws:SourceAccount 조건 키를 Amazon S3 버킷 정책에 추가합니다. 이렇게 하면 S3 버킷에 대한 무단 계정 액세스를 방지하는 데 도움이 됩니다. 기존 추적이 있는 경우 하나 이상의 조건 키를 추가해야 합니다. 다음 예시는 권장되는 정책 구성을 보여줍니다. myBucketName, [optionalPrefix]/, myAccountID, region, 및 trailName을 구성에 적절한 값으로 바꿉니다.

예 서비스 보안 주체 이름이 포함된 버킷 정책의 예
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::myBucketName", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/[optionalPrefix]/AWSLogs/myAccountID/*", "Condition": {"StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:trail/trailName" } } } ] }

기존 버킷의 접두사 변경

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

Amazon S3 버킷의 로그 파일 접두사를 업데이트하려면
  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 접두사를 수정할 버킷을 선택한 다음 권한(Permissions)을 선택합니다.

  3. 편집(Edit)을 선택합니다.

  4. 버킷 정책의 s3:PutObject 작업에서 Resource 항목을 편집하여 필요에 따라 로그 파일 prefix/를 추가, 수정 또는 제거합니다.

    "Action": "s3:PutObject", "Resource": "arn:aws:s3:::myBucketName/prefix/AWSLogs/myAccountID/*",
  5. 저장(Save)을 선택합니다.

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

  7. 트레일을 선택하고 스토리지 위치(Storage location)]에서 연필 아이콘을 클릭하여 버킷에 대한 설정을 편집합니다.

  8. S3 버킷(S3 bucket)에서 변경하는 접두사를 포함한 버킷을 선택합니다.

  9. 로그 파일 접두사(Log file prefix)에서 버킷 정책에 입력한 접두사와 일치하도록 접두사를 업데이트합니다.

  10. Save를 선택합니다.

추가 리소스

S3 버킷 및 정책에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서를 참조하세요.