객체 암호화 업데이트

객체 암호화 업데이트 (Update object encryption)

기존 객체의 서버 측 암호화 유형을 일괄로 바꿔야 할 때가 있어요. Batch Operations의 UpdateObjectEncryption 작업은 단일 요청으로 여러 Amazon S3 객체의 서버 측 암호화 유형을 갱신해 줍니다.

출처: 문서

본문

Amazon S3 Batch Operations를 쓰면 S3 객체에 대해 대규모 배치 작업을 수행할 수 있어요. Batch Operations의 UpdateObjectEncryption 작업은 단일 요청으로 두 개 이상의 Amazon S3 객체의 서버 측 암호화 유형을 갱신해요. 단일 UpdateObjectEncryption 작업은 최대 200억 개 객체의 매니페스트를 지원할 수 있어요.

UpdateObjectEncryption 작업은 일반 용도(general purpose) 버킷이 지원하는 모든 Amazon S3 스토리지 클래스에 대해 지원돼요. 이 작업을 사용하면 Amazon S3 관리형 키로 암호화된(SSE-S3) 객체를 AWS Key Management Service(AWS KMS) 키로 암호화된(SSE-KMS) 객체로 바꾸거나, S3 Bucket Keys를 적용할 수 있어요. 또 데이터를 암호화하는 데 사용하는 고객 관리형 KMS 키를 바꿔서 사용자 지정 키 교체 표준을 준수하도록 할 수도 있어요.

Batch Operations 작업을 만들 때 지정한 소스 위치와 필터 기준에 기반해 객체 목록을 생성할 수 있어요. MatchAnyObjectEncryption 필터를 사용하면 업데이트하려는 버킷의 객체 목록을 생성해서 매니페스트에 포함할 수 있어요. 생성된 객체 목록에는 지정된 서버 측 암호화 유형을 가진 소스 버킷 객체만 포함돼요. SSE-KMS를 선택했다면 특정 KMS Key ARN과 Bucket Key 활성화 상태를 지정해 결과를 더 좁힐 수도 있어요. 자세한 내용은 Amazon S3 API Reference의 JobManifestGeneratorFilter와 SSEKMSFilter를 참고하세요.

제약 사항과 고려 사항

Batch Operations UpdateObjectEncryption 작업을 사용할 때는 다음 제약 사항과 고려 사항이 적용돼요.

  • UpdateObjectEncryption 작업은 암호화되지 않은 객체나, AWS KMS 키를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 또는 고객 제공 암호화 키(SSE-C)로 암호화된 객체는 지원하지 않아요. 또한 UpdateObjectEncryption 요청에서 SSE-S3 암호화 유형을 지정할 수 없어요.
  • UpdateObjectEncryption 작업으로 S3 버전 관리(Versioning)가 활성화된 버킷의 객체를 갱신할 수 있어요. 특정 버전의 암호화 유형을 갱신하려면 UpdateObjectEncryption 요청에 버전 ID를 지정해야 해요. 버전 ID를 지정하지 않으면 요청은 객체의 현재 버전에 적용돼요. S3 Versioning에 대한 자세한 내용은 Retaining multiple versions of objects with S3 Versioning 문서를 참고하세요.
  • UpdateObjectEncryption 작업은 S3 Object Lock 보존 모드나 법적 보존(legal hold)이 적용된 객체에서는 실패해요. 객체에 거버넌스 모드 보존 기간이나 법적 보존이 있으면, UpdateObjectEncryption 요청을 보내기 전에 먼저 객체의 Object Lock 상태를 제거해야 해요. Object Lock 컴플라이언스 모드 보존 기간이 적용된 객체에는 UpdateObjectEncryption 작업을 사용할 수 없어요. S3 Object Lock에 대한 자세한 내용은 Locking objects with Object Lock 문서를 참고하세요.
  • 라이브 복제(live replication)가 활성화된 소스 버킷에 대한 UpdateObjectEncryption 요청은 대상 버킷에서 복제 이벤트를 시작하지 않아요. 소스 버킷과 대상 버킷 양쪽의 객체 암호화 유형을 모두 바꾸려면, 소스 버킷과 대상 버킷의 객체에 대해 별도의 UpdateObjectEncryption 요청을 시작해야 해요.
  • 기본적으로 고객 관리형 KMS 키를 지정하는 모든 UpdateObjectEncryption 요청은 버킷 소유자의 AWS 계정이 소유한 KMS 키로 제한돼요. AWS Organizations를 사용한다면 AWS Support에 문의해 조직 내 다른 멤버 계정이 소유한 AWS KMS 키를 사용할 수 있게 요청할 수 있어요.
  • S3 Batch Replication으로 데이터셋을 리전 간 복제하는데 객체의 서버 측 암호화 유형을 SSE-S3에서 SSE-KMS로 이미 변경했다면 추가 권한이 필요할 수 있어요. 소스 리전 버킷에는 kms:decrypt 권한이 있어야 하고, 대상 리전의 버킷에는 kms:decrypt와 kms:encrypt 권한이 필요해요.
  • UpdateObjectEncryption 요청에는 전체 KMS key ARN을 제공해야 해요. 별칭 이름(alias name)이나 별칭 ARN은 사용할 수 없어요. 전체 KMS Key ARN은 AWS KMS 콘솔에서 확인하거나 AWS KMS DescribeKey API로 알아낼 수 있어요.
  • KmsKeyArn 필터를 사용할 때 매니페스트 생성 성능을 높이려면, 이 필터를 다른 객체 메타데이터 필터와 함께 사용하세요. 예를 들어 S3 Batch Operations에서 매니페스트를 자동 생성할 때 KmsKeyArn을 MatchAnyPrefix, CreatedAfter, MatchAnyStorageClass와 조합할 수 있어요.

UpdateObjectEncryption에 대한 자세한 내용은 Updating server-side encryption for existing data 문서를 참고하세요.

필요한 권한 (Required permissions)

UpdateObjectEncryption 작업을 수행하려면 IAM 주체(사용자, 역할, 그룹)에 다음 AWS Identity and Access Management(IAM) 정책을 추가해요. 이 정책을 사용하려면 amzn-s3-demo-bucket을 암호화를 갱신할 객체가 들어 있는 버킷 이름으로, amzn-s3-demo-manifest-bucket을 매니페스트가 들어 있는 버킷 이름으로, amzn-s3-demo-completion-report-bucket을 완료 보고서를 저장할 버킷 이름으로 바꾸세요.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}

S3 Batch Operations 서비스 주체가 대신 Batch Operations 작업을 실행할 때 맡는 IAM 역할에 연결해야 하는 신뢰 정책과 권한 정책은 Granting permissions for Batch Operations 문서와 Update object encryption 문서를 참고하세요.