기존 데이터에 대한 서버 측 암호화 업데이트
모든 Amazon S3 버킷에는 기본적으로 암호화가 구성되어 있으며, 객체는 Amazon S3 관리형 키(SSE-S3)를 통한 서버 측 암호화를 사용하여 자동으로 암호화됩니다. 이 기본 암호화 설정은 Amazon S3 버킷의 모든 새 객체에 적용됩니다.
UpdateObjectEncryption API 작업을 사용하면 범용 버킷에 있는 기존 암호화된 객체의 서버 측 암호화 유형을 Amazon S3 관리형 암호화를 사용한 서버 측 암호화(SSE-S3)에서 AWS Key Management Service(AWS KMS) 암호화 키를 사용한 서버 측 암호화(SSE-KMS)로 원자적으로 업데이트할 수 있습니다. UpdateObjectEncryption API 작업은 봉투 암호화를 사용하여 새로 지정된 서버 측 암호화 유형으로 객체를 암호화 및 복호화하는 데 사용되는 데이터 키를 다시 암호화합니다.
Amazon S3는 데이터 이동 없이 이 암호화 유형 업데이트를 수행합니다. 즉, UpdateObjectEncryption 작업을 사용하면 데이터가 복사되지 않고, S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive의 아카이브된 객체가 복원되지 않으며, S3 Intelligent-Tiering 스토리지 클래스의 객체가 계층 간에 이동되지 않습니다. 또한 UpdateObjectEncryption 작업은 스토리지 클래스, 생성 날짜, 마지막 수정 날짜, ETag 및 체크섬 속성을 포함한 모든 객체 메타데이터 속성을 보존합니다.
UpdateObjectEncryption 작업은 범용 버킷이 지원하는 모든 S3 스토리지 클래스에서 지원됩니다. UpdateObjectEncryption 작업을 사용하여 다음을 수행할 수 있습니다.
-
암호화된 객체를 Amazon S3 관리형 암호화를 사용한 서버 측 암호화(SSE-S3)에서 AWS Key Management Service(AWS KMS) 암호화 키를 사용한 서버 측 암호화(SSE-KMS)로 변경합니다.
-
Amazon S3에서 AWS KMS로의 AWS KMS 요청 트래픽을 줄이기 위해 S3 버킷 키를 사용하도록 객체 수준 SSE-KMS 암호화된 객체를 업데이트합니다. 자세한 내용은 Amazon S3 버킷 키를 사용하여 SSE-KMS 비용 절감 섹션을 참조하세요.
-
사용자 지정 키 교체 표준을 준수하도록 데이터를 암호화하는 데 사용되는 고객 관리형 KMS 키를 변경합니다.
참고
암호화되지 않은 소스 객체나 AWS KMS keys를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 또는 고객 제공 암호화 키(SSE-C)로 암호화된 소스 객체는 이 작업에서 지원되지 않습니다.
UpdateObjectEncryption 작업은 일반적으로 객체 또는 스토리지 클래스(S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive 등)의 크기에 관계없이 밀리초 단위로 완료됩니다. 이 작업은 S3 Intelligent-Tiering에 대한 액세스로 간주되지 않으므로 객체의 서버 측 암호화 유형을 변경하면 Infrequent Access 계층 또는 Archive Instant Access 계층의 객체가 자동으로 Frequent Access 계층으로 되돌아가지 않습니다.
UpdateObjectEncryption는 Amazon S3 서버 액세스 로그 및 AWS CloudTrail 데이터 이벤트에 로깅되는 객체 수준(데이터 플레인) API 작업입니다. 자세한 내용은 Amazon S3에 대한 로깅 옵션 섹션을 참조하세요.
UpdateObjectEncryption 작업은 PUT, COPY, POST 및 LIST 요청(요청 1,000개당)과 요금이 동일하며 기본 객체의 스토리지 클래스와 관계없이 항상 S3 Standard 스토리지 클래스 요청으로 요금이 부과됩니다. 자세한 내용은 Amazon S3 요금
제한 및 고려 사항
UpdateObjectEncryption 작업을 사용하는 경우 다음과 같은 제한 및 고려 사항이 적용됩니다.
-
UpdateObjectEncryption작업은 암호화되지 않은 객체 또는 AWS KMS keys를 사용한 이중 계층 서버 측 암호화(DSSE-KMS) 또는 고객 제공 암호화 키(SSE-C)로 암호화된 객체를 지원하지 않습니다. 또한 SSE-S3를 요청된 새 암호화 유형UpdateObjectEncryption요청으로 지정할 수 없습니다. -
UpdateObjectEncryption작업을 사용하여 S3 버전 관리가 활성화된 버킷의 객체를 업데이트할 수 있습니다. 특정 버전의 암호화 유형을 업데이트하려면UpdateObjectEncryption요청에 버전 ID를 지정해야 합니다. 버전 ID를 지정하지 않으면UpdateObjectEncryption요청이 객체의 현재 버전에 적용됩니다. S3 버전 관리에 대한 자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 섹션을 참조하십시오. -
S3 Object Lock 보존 모드 또는 법적 보존이 적용된 객체에서는
UpdateObjectEncryption작업이 실패합니다. 객체에 거버넌스 모드 보존 기간 또는 법적 보존이 있는 경우UpdateObjectEncryption요청을 실행하기 전에 먼저 객체의 Object Lock 상태를 해제해야 합니다. Object Lock 규정 준수 모드 보존 기간이 적용된 객체에는UpdateObjectEncryption작업을 사용할 수 없습니다. S3 객체 잠금에 대한 자세한 내용은 Object Lock으로 객체 잠금 섹션을 참조하세요. -
라이브 복제가 활성화된 소스 버킷에 대한
UpdateObjectEncryption요청은 대상 버킷에서 복제본 이벤트를 시작하지 않습니다. 소스 버킷과 대상 버킷 모두에서 객체의 암호화 유형을 변경하려면 소스 버킷과 대상 버킷의 객체에 대해 별도의UpdateObjectEncryption요청을 시작해야 합니다. -
기본적으로 고객 관리형 KMS 키를 지정하는 모든
UpdateObjectEncryption요청은 버킷 소유자의 AWS 계정이 소유한 KMS 키로 제한됩니다. AWS Organizations를 사용하는 경우 AWS Support에 문의하여 조직 내 다른 멤버 계정이 소유한 AWS KMS keys를 사용할 수 있는 기능을 요청할 수 있습니다. -
S3 배치 복제를 사용하여 리전 간 데이터세트를 복제하며 이전에 객체의 서버 측 암호화 유형이 SSE-S3에서 SSE-KMS로 업데이트된 경우 추가 권한이 필요할 수 있습니다. 소스 리전 버킷에는
kms:decrypt권한이 있어야 합니다. 그런 다음 대상 리전의 버킷에 대한kms:decrypt및kms:encrypt권한이 필요합니다. -
UpdateObjectEncryption요청에 전체 KMS 키 ARN을 제공해야 합니다. 별칭 이름이나 별칭 ARN은 사용할 수 없습니다. AWS KMS 콘솔에서 또는 AWS KMSDescribeKeyAPI를 사용하여 전체 KMS 키 ARN을 확인할 수 있습니다.
필수 권한
UpdateObjectEncryption 작업을 수행하려면 다음 권한이 있어야 합니다.
-
s3:PutObject -
s3:UpdateObjectEncryption -
kms:Encrypt -
kms:Decrypt -
kms:GenerateDataKey -
kms:ReEncrypt*
AWS Organizations를 사용하는 경우 조직 내 다른 AWS 계정의 고객 관리형 KMS 키를 통해 작업을 사용하려면 organizations:DescribeAccount 권한이 있어야 합니다. 또한 AWS Support에 문의하여 조직 내 다른 멤버 계정이 소유한 AWS KMS keys를 사용할 수 있는 기능을 요청해야 합니다.
UpdateObjectEncryption 작업을 수행하려면 IAM 역할에 다음 AWS Identity and Access Management(IAM) 정책을 추가합니다. 이 정책을 사용하려면 을 범용 버킷의 이름으로 바꾸고 다른 amzn-s3-demo-bucket를 자체 정보로 바꿉니다.user input
placeholders
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowUpdateObjectEncryption", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:UpdateObjectEncryption", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncrypt*", "organizations:DescribeAccount" ], "Resource": [ "arn:aws:s3:::", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:amzn-s3-demo-bucketus-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }
암호화 일괄 업데이트
단일 요청으로 둘 이상의 Amazon S3 객체의 서버 측 암호화 유형을 업데이트하려면 S3 Batch Operations를 사용합니다. S3 Batch Operations에 작업할 객체 목록을 제공하거나, Batch Operations에 접두사, 스토리지 클래스, 생성 날짜, 암호화 유형, KMS 키 ARN 또는 S3 버킷 키 상태를 포함한 객체 메타데이터를 기반으로 객체 목록을 생성하도록 지시할 수 있습니다. S3 배치 작업은 지정된 작업을 수행하기 위해 각 API 작업을 호출합니다. 단일 Batch Operations 작업으로 페타바이트 규모의 데이터가 포함된 버킷 내 수십억 개의 객체에서 지정된 작업을 수행할 수 있습니다. 배치 작업에 대한 자세한 내용은 Batch Operations를 사용하여 대량으로 객체 작업 수행 섹션을 참조하세요.
S3 배치 작업 기능은 진행 상황을 추적하고 알림을 보내며 모든 작업에 대한 자세한 완료 보고서를 저장하여 감사 가능한 완전관리형 서버리스 환경을 제공합니다. Amazon S3 콘솔, AWS Command Line Interface(AWS CLI) AWS SDK 또는 Amazon S3 REST API를 통해 S3 Batch Operations를 사용할 수 있습니다. 자세한 내용은 객체 암호화 업데이트 섹션을 참조하세요.
객체에 대한 암호화 업데이트
AWS Command Line Interface(AWS CLI) AWS SDK 또는 Amazon S3 REST API를 통해 객체의 서버 측 암호화 유형을 업데이트할 수 있습니다.
객체에 대한 암호화 업데이트
다음 명령을 실행하려면 AWS CLI를 설치하고 구성해야 합니다. AWS CLI를 설치하지 않은 경우 AWS Command Line Interface 사용 설명서에서 최신 버전의 AWS CLI 설치 또는 업데이트를 참조하세요.
또는 AWS CloudShell을 사용하여 콘솔에서 AWS CLI 명령을 실행할 수 있습니다. AWS CloudShell은 브라우저 기반의 사전 인증된 쉘로, AWS Management Console에서 직접 시작할 수 있습니다. 자세한 내용은 AWS CloudShell 사용 설명서에서 CloudShell이란 무엇인가요? 및 AWS CloudShell 시작하기를 참조하세요.
AWS CLI를 사용하여 객체에 대한 암호화를 업데이트하는 방법
다음 예시 명령을 사용하려면 를 실제 정보로 대체하세요.user input
placeholders
-
S3 버킷 키와 함께 SSE-KMS를 사용하려면 다음 명령으로 범용 버킷(예:
)의 단일 객체(index.html)에 대한 암호화를 업데이트합니다.amzn-s3-demo-bucketaws s3api update-object-encryption \ --bucketamzn-s3-demo-bucket\ --keyindex.html\ --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'참고
전체 AWS KMS key Amazon 리소스 이름(ARN)을 지정해야 합니다. KMS 키 ID 및 KMS 키 별칭은 지원되지 않습니다.
-
head-object명령을 실행하여 객체의 업데이트된 암호화 유형을 확인합니다.aws s3api head-object --bucket--keyamzn-s3-demo-bucketindex.html
객체에 대한 암호화를 업데이트하기 위해 REST 요청을 보낼 수 있습니다. 자세한 내용은 UpdateObjectEncryption 단원을 참조하세요.
AWS SDK를 사용하여 객체에 대한 암호화를 업데이트할 수 있습니다. 자세한 내용은 지원되는 SDK 목록을 참조하세요.