권한 설정 - Amazon Simple Storage Service

권한 설정

복제를 설정할 때 다음과 같이 필요한 권한을 획득해야 합니다.

  • Amazon S3는 사용자를 대신하여 객체를 복제할 수 있는 권한이 필요합니다. IAM 역할을 생성하고 복제 구성에서 이 역할을 지정하여 이러한 권한을 부여합니다.

  • 원본 버킷과 대상 버킷을 동일한 계정에서 소유하지 않는 경우 대상 버킷 소유자는 원본 버킷 소유자에게 복제본을 저장할 권한을 부여해야 합니다.

IAM 역할 생성

기본적으로 Amazon S3 리소스인 버킷, 객체 및 관련 하위 리소스는 모두 비공개이며 리소스 소유자만 리소스에 액세스할 수 있습니다. Amazon S3는 소스 버킷에서 객체를 읽고 복제할 수 있는 권한이 필요합니다. IAM 역할을 생성하고 복제 구성에서 이 역할을 지정하여 이러한 권한을 부여합니다.

이 섹션에서는 신뢰 정책과 필요한 최소한의 권한 정책을 설명합니다. 연습 예제가 IAM 역할을 생성하는 단계별 지침을 제공합니다. 자세한 내용은 연습: 복제 구성 예제 단원을 참조하십시오.

  • 다음 예제는 역할을 맡을 수 있는 서비스 보안 주체로서 Amazon S3를 식별하는 신뢰 정책을 보여줍니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  • 다음 예는 Amazon S3 및 S3 Batch Operations를 서비스 보안 주체로 식별하는 신뢰 정책을 보여줍니다. 이는 배치 복제 작업을 생성할 때 유용합니다. 자세한 내용은 첫 번째 복제 규칙 또는 새 대상에 대한 배치 복제 작업 생성 단원을 참조하십시오.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service": [ "s3.amazonaws.com", "batchoperations.s3.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }

    IAM 역할에 대한 자세한 내용은 IAM 사용 설명서의 IAM 역할 섹션을 참조하세요.

  • 다음 예제는 역할에 사용자 대신 복제 작업을 수행할 권한을 부여하는 액세스 정책을 보여줍니다. Amazon S3가 이 역할을 맡으면 이 정책에 지정된 권한을 보유하게 됩니다. 이 정책에서는 DOC-EXAMPLE-BUCKET1이 소스 버킷이고, DOC-EXAMPLE-BUCKET2가 대상 버킷입니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" } ] }

    액세스 정책은 다음 작업을 수행할 권한을 부여합니다.

    • s3:GetReplicationConfigurations3:ListBucket - DOC-EXAMPLE-BUCKET1 버킷(소스 버킷)에 대한 이러한 작업 권한을 통해 Amazon S3는 복제 구성을 검색하고 버킷 내용을 나열할 수 있습니다. (현재 권한 모델에는 삭제 마커에 액세스할 수 있는 s3:ListBucket 권한이 필요합니다.)

    • s3:GetObjectVersionForReplications3:GetObjectVersionAcl - 모든 객체에 대해 부여되는 이러한 작업 권한을 사용하면 Amazon S3는 특정 객체 버전 및 객체와 연결된 ACL(액세스 제어 목록)을 가져올 수 있습니다.

    • s3:ReplicateObjects3:ReplicateDelete - DOC-EXAMPLE-BUCKET2 버킷(대상 버킷)의 모든 객체에 대한 이러한 작업 권한을 사용하면 Amazon S3는 대상 버킷에 객체 또는 삭제 마커를 복제할 수 있습니다. 삭제 마커에 대한 자세한 내용은 삭제 작업이 복제에 미치는 영향을 참조하십시오.

      참고

      DOC-EXAMPLE-BUCKET2 버킷(대상 버킷)에서의 s3:ReplicateObject 작업에 대한 권한은 객체 태그 및 ACLS와 같은 메타데이터의 복제도 허용합니다. 따라서 s3:ReplicateTags 작업에 대한 권한을 명시적으로 부여할 필요가 없습니다.

    • s3:GetObjectVersionTagging - DOC-EXAMPLE-BUCKET1 버킷(소스 버킷)의 객체에 대해 이 작업 권한을 사용하면 Amazon S3는 복제 대상 객체 태그를 읽을 수 있습니다. 자세한 내용은 태그를 사용하여 스토리지 분류 단원을 참조하십시오. 이러한 권한이 없을 경우 Amazon S3는 객체를 복제하지만 객체 태그(있는 경우)는 복제하지 않습니다.

    Amazon S3 작업 목록에 대해서는 Amazon S3 정책 작업을 참조하십시오.

    중요

    IAM 역할을 소유한 AWS 계정은 해당 IAM 역할에 부여된 작업을 수행할 권한이 있어야 합니다.

    예를 들어, 소스 버킷에 다른 AWS 계정이 소유한 객체가 포함되어 있다고 가정하겠습니다. 객체 소유자는 객체 ACL을 통해 IAM 역할을 소유한 AWS 계정에 필요한 권한을 명시적으로 부여해야 합니다. 그렇지 않으면 Amazon S3는 객체에 액세스할 수 없으므로 객체의 복제가 실패합니다. ACL 권한에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.

    여기에서 설명하는 권한은 최소 복제 구성과 관련됩니다. 선택적 복제 구성을 추가하려면 Amazon S3에 추가 권한을 부여해야 합니다. 자세한 내용은 추가 복제 구성 단원을 참조하십시오.

소스 버킷과 대상 버킷을 서로 다른 AWS 계정에서 소유할 경우 권한 부여

소스 버킷과 대상 버킷을 동일한 계정에서 소유하지 않는 경우, 다음과 같이 대상 버킷 소유자가 소스스 버킷 소유자에게 복제 작업 권한을 부여하는 버킷 정책도 추가해야 합니다. 이 정책에서는 DOC-EXAMPLE-BUCKET2가 대상 버킷입니다.

참고

역할의 ARN 형식이 다르게 보일 수 있습니다. 콘솔을 사용하여 역할을 생성한 경우 ARN 형식은 arn:aws:iam::계정 ID:role/service-role/역할 이름입니다. AWS CLI를 사용하여 역할을 생성한 경우 ARN 형식은 arn:aws:iam::계정 ID:role/역할 이름입니다. 자세한 내용은 IAM 사용 설명서IAM 역할을 참조하세요.

{ "Version":"2012-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"Permissions on objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2" } ] }

예시는 원본 버킷과 대상 버킷을 서로 다른 계정에서 소유한 경우 복제 구성에서 확인하십시오.

원본 버킷에 있는 객체에 태그가 지정된 경우, 다음에 주의하세요.

  • 원본 버킷 소유자가 객체 태그를 복사할 수 있도록 s3:GetObjectVersionTaggings3:ReplicateTags 작업 권한을 (IAM 역할을 통해) Amazon S3에 부여하는 경우, Amazon S3는 해당 객체와 함께 태그를 복제합니다. IAM 역할에 대한 상세 정보는 IAM 역할 생성 단원을 참조하십시오.

  • 대상 버킷 소유자가 태그 복제를 원하지 않는 경우, 소유자는 다음의 명령문을 대상 버킷 정책에 추가해 s3:ReplicateTags 작업에 대한 권한을 명시적으로 거부할 수 있습니다. 이 정책에서는 DOC-EXAMPLE-BUCKET2가 대상 버킷입니다.

    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-account-id:role/service-role/source-account-IAM-role" }, "Action":"s3:ReplicateTags", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" } ] ...

S3 배치 작업에 대한 권한 부여

S3 Batch Replication은 복제 구성이 적용되기 전에 존재했던 객체, 이전에 복제되었던 객체 및 복제에 실패했던 객체를 복제하는 방법을 제공합니다. 새 복제 구성에서 첫 번째 규칙을 만들거나 AWS Management Console을 통해 기존 구성에 새 대상을 추가할 때 일회성 배치 복제 작업을 생성할 수 있습니다. 배치 작업을 생성하여 기존 복제 구성에 대한 배치 복제를 시작할 수도 있습니다.

배치 복제 IAM 역할 및 정책 예제는 배치 복제에 대한 IAM 정책 구성을 참조하세요.

복제본 소유권 변경

서로 다른 AWS 계정이 소스 버킷과 대상 버킷을 소유한 경우, Amazon S3에 복제본 소유권을 대상 버킷을 소유한 AWS 계정으로 변경하도록 지시할 수 있습니다. 소유자 재정의에 대한 자세한 내용은 복제본 소유자 변경 섹션을 참조하세요.

소스 버킷에서 복제된 객체 수신 활성화

AWS Management Console을 통해 소스 버킷에서 복제된 객체를 수신하는 데 필요한 정책을 신속하게 생성할 수 있습니다.

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 버킷(Buckets)을 선택합니다.

  3. 버킷(Buckets) 목록에서 대상 버킷으로 사용할 버킷을 선택합니다.

  4. 관리(Management) 탭을 선택한 다음 아래로 스크롤하여 복제 규칙(Replication rules)으로 이동합니다.

  5. 작업(Actions)으로 복제된 객체 수신(Receive replicated objects)을 선택합니다.

    프롬프트에 따라 소스 버킷 계정의 AWS 계정 ID를 입력하고 정책 생성(Generate policies)을 선택합니다. 그러면 Amazon S3 버킷 정책과 KMS 키 정책이 생성됩니다.

  6. 이 정책을 기존 버킷 정책에 추가하려면 설정 적용(Apply settings)을 선택하거나 복사(Copy)를 선택하여 변경 사항을 수동으로 복사합니다.

  7. (선택 사항) AWS Key Management Service 콘솔에서 원하는 KMS 키 정책에 AWS KMS 정책을 복사합니다.