Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

CRR 추가 구성: AWS KMS 관리형 암호화 키를 사용하는 서버 측 암호화(SSE)로 생성된 객체 복제

기본적으로 Amazon S3는 AWS KMS 관리형 키를 사용하는 서버 측 암호화를 사용하여 저장된 객체를 복제하지 않습니다. 이 단원에서는 Amazon S3에 이러한 객체를 복제하도록 지시하기 위해 추가하는 구성을 설명합니다.

단계별 지침이 포함된 예제는 예제 4: 암호화된 객체 복제 단원을 참조하십시오. 복제 구성 생성에 대한 자세한 내용은 리전 간 복제 단원을 참조하십시오.

복제 구성에서 추가 정보 지정

복제 구성에서 다음을 수행합니다.

  • 대상 구성에서 Amazon S3가 객체 복제본을 암호화하는 사용할 AWS KMS 키를 추가합니다.

  • SourceSelectionCriteria 요소를 추가하여 AWS KMS 키를 사용하는 암호화된 객체 복제를 활성화함으로써 명시적으로 옵트인합니다.

<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID for the AWS region of the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>

중요

AWS KMS 키는 대상 버킷과 동일한 AWS 리전에서 생성되어야 합니다.

AWS KMS 키가 유효해야 합니다. PUT 버킷 복제 API는 AWS KMS 키가 유효한지 확인하지 않습니다. 잘못된 키를 사용할 경우 응답에서 200 OK 상태 코드를 받지만 복제는 실패합니다.

다음은 선택적 구성 요소가 포함된 교차 리전 복제 구성의 예입니다.

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>The AWS KMS key ID for the AWS region of the destination bucket (S3 uses it to encrypt object replicas).</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

이 복제 구성에는 한 가지 규칙이 있습니다. 이 규칙은 키 접두사가 Tax인 객체에 적용됩니다. Amazon S3는 AWS KMS 키 ID를 사용해 이러한 객체 복제본을 암호화합니다.

IAM 역할에 추가 권한 부여

AWS KMS 관리형 키를 사용하는 서버 측 암호화를 사용하여 생성된 객체를 복제하려면 복제 구성에 지정하는 IAM 역할에 다음의 추가 권한을 부여합니다. IAM 역할과 연결된 권한 정책을 업데이트하여 다음 권한을 부여합니다.

  • 원본 객체에 대한 s3:GetObjectVersionForReplication 작업 권한. 이 작업 권한은 Amazon S3가 암호화되지 않은 객체와 Amazon S3 관리형 암호화(S3-SSE) 키 또는 AWS KMS 관리형 암호화(SSE-KMS) 키를 사용하는 서버 측 암호화로 생성된 객체를 복제할 수 있도록 허용합니다.

    참고

    Amazon S3에 교차 리전 복제에 필요한 최소한의 권한만 제공하므로 s3:GetObjectVersion 작업 대신 s3:GetObjectVersionForReplication 작업을 사용하는 것이 좋습니다. 또한 s3:GetObjectVersion 작업 권한은 암호화되지 않은 객체와 SSE-S3 암호화 객체의 복제를 허용하지만, AWS KMS 관리형 암호화 키를 사용하여 생성된 객체의 복제는 허용하지 않습니다.

  • 다음 AWS KMS 작업에 대한 권한:

    • 원본 객체를 암호화하는 데 사용된 AWS KMS 키에 대한 kms:Decrypt 권한.

    • 객체 복제본을 암호화하는 데 사용된 AWS KMS 키에 대한 kms:Encrypt 권한

    다음 예제 정책 설명과 같이 이러한 권한을 AWS KMS 조건 키를 사용하는 특정 버킷 및 객체로 제한하는 것이 좋습니다.

    { "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::source-bucket-name/key-prefix1*", ] } }, "Resource": [ "List of AWS KMS key IDs used to encrypt source objects.", ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-name/key-prefix1*", ] } }, "Resource": [ "AWS KMS key IDs (for the AWS region of the destination bucket). S3 uses it to encrypt object replicas", ] }

    IAM 역할을 소유한 AWS 계정은 정책에 나열된 AWS KMS 키의 이러한 AWS KMS 작업(kms:Encryptkms:Decrypt)에 대한 권한이 있어야 합니다. 다른 AWS 계정이 AWS KMS 키를 소유한 경우 키 소유자는 IAM 역할을 소유한 AWS 계정에 이러한 권한을 부여해야 합니다. 이러한 키에 대한 액세스를 관리하는 방법에 대한 자세한 내용은 AWS Key Management Service Developer GuideAWS KMS에서 IAM 정책 사용 단원을 참조하십시오.

    다음은 암호화되지 않은 객체, Amazon S3 관리형 암호화 키 및 AWS KMS 관리형 암호화 키를 사용하는 서버 측 암호화로 생성된 객체를 복제하는 데 필요한 권한을 부여하는 완전한 IAM 정책입니다.

    참고

    고객 제공 암호화 키를 사용하는 서버 측 암호화(SSE-C)로 생성된 객체는 복제되지 않습니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::destination-bucket/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::source-bucket-name/key-prefix1*" ] } }, "Resource":[ "List of AWS KMS key IDs used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::destination-bucket-name/prefix1*" ] } }, "Resource":[ "AWS KMS key IDs (for the AWS region of the destination bucket) to use for encrypting object replicas" ] } ] }

교차 계정 시나리오를 위한 추가 권한 부여

원본 버킷과 대상 버킷을 서로 다른 AWS 계정에서 소유한 교차 계정 시나리오에서는 객체 복제본을 암호화할 AWS KMS 키가 고객 마스터 키(CMK)여야 합니다. 키 소유자가 원본 버킷 소유자에게 키를 사용할 수 있는 권한을 부여합니다.

원본 버킷 소유자에게 키 사용 권한을 부여하려면(IAM 콘솔)

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. Encryption keys(암호화 키)를 선택합니다.

  3. AWS KMS 키를 선택합니다.

  4. Key Policy(키 정책), Key Users(키 사용자), 외부 계정에서 Add External Account(외부 계정 추가)를 선택합니다.

  5. arn:aws:iam::에서 원본 버킷 계정 ID를 입력합니다.

  6. [Save Changes]를 선택합니다.

원본 버킷 소유자에게 키 사용 권한을 부여하려면(AWS CLI)

AWS KMS 트랜잭션 제한 고려 사항

교차 리전 복제(CRR)을 활성화한 후, AWS KMS 암호화로 많은 수의 새 객체를 추가할 때 조절(HTTP 503 속도 하락 오류)가 발생할 수 있습니다. 조절은 초당 KMS 트랜잭션 수가 현재 제한을 초과할 경우 발생합니다. 자세한 내용은 AWS Key Management Service Developer Guide제한 단원을 참조하십시오.

AWS 지원 센터에서 사례를 생성하여 AWS KMS API 속도 제한 증가를 요청하는 것이 좋습니다. 자세한 내용은 https://console.aws.amazon.com/support/home#/ 단원을 참조하십시오.