Amazon S3 Express One Zone, 고객용 암호화 키를 위한 AWS KMS 지원 시작

고성능 단일 가용 영역(AZ) S3 스토리지 클래스인 Amazon S3 Express One Zone은 이제 AWS Key Management Service(KMS)(SSE-KMS)를 사용한 서버 측 암호화를 지원합니다. S3 Express One Zone은 기본적으로 Amazon S3 관리형 키(SSE-S3)를 사용하여 S3 디렉터리 버킷에 저장된 모든 객체를 이미 암호화합니다. 오늘부터 AWS KMS 고객 관리형 키를 사용하여 성능에 영향을 주지 않고 저장 데이터를 암호화할 수 있습니다. 이 새로운 암호화 기능은 S3 Express One Zone을 사용할 때 규정 준수 및 규제 요구 사항을 충족할 수 있는 추가 옵션을 제공합니다. S3 Express One Zone은 가장 자주 액세스하는 데이터와 지연 시간에 민감한 애플리케이션에 대해 일관된 10밀리초 이하의 데이터 액세스를 제공하도록 설계되었습니다.

S3 디렉터리 버킷을 사용하면 SSE-KMS 암호화에 버킷당 하나의 고객 관리형 키만 지정할 수 있습니다. 고객 관리형 키를 추가한 후에는 새 키를 사용하도록 편집할 수 없습니다. 반면, S3 범용 버킷의 경우 버킷의 기본 암호화 구성을 변경하거나 S3 PUT 요청 중에 여러 KMS 키를 사용할 수 있습니다. SSE-KMS를 S3 Express One Zone과 함께 사용하는 경우 S3 버킷 키는 항상 활성화됩니다. S3 버킷 키는 무료이며 AWS KMS에 대한 요청 수를 최대 99% 줄여 성능과 비용을 모두 최적화합니다.

Amazon S3 Express One Zone과 함께 SSE-KMS 사용
이 새로운 기능을 실제로 보여드리기 위해 S3 디렉터리 버킷을 생성하고 apne1-az4를 가용 영역으로 사용하는 단계에 따라 먼저 Amazon S3 콘솔에서 S3 디렉터리 버킷을 생성합니다 기본 이름에 s3express-kms를 입력하면 가용 영역 ID가 포함된 접미사가 자동으로 추가되어 최종 이름이 생성됩니다. 그런 다음 확인란을 선택하여 데이터가 단일 가용 영역에 저장되었음을 확인한 후 버킷 생성을 선택합니다.

이제 AWS Command Line Interface(AWS CLI)를 사용하여 방금 생성한 버킷에 암호화를 설정하는 방법을 살펴보겠습니다.

AWS CLI를 통해 S3 Express One Zone과 함께 SSE-KMS를 사용하려면 다음 정책을 준수하는 AWS Identity and Access Management(IAM) 사용자 또는 역할이 필요합니다. 이 정책은 암호화된 파일을 S3 디렉터리 버킷에 업로드하고 다운로드하는 데 필요한 CreateSession API 작업을 허용합니다.

{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3express:CreateSession”
],
“Resource”: [
“arn:aws:s3express:*:<account>:bucket/s3express-kms–apne1-az4–x-s3”
]
},
{
“Effect”: “Allow”,
“Action”: [
“kms:Decrypt”,
“kms:GenerateDataKey”
],
“Resource”: [
“arn:aws:kms:*:<account>:key/<keyId>”
]
}
]
}

PutBucketEncryption API를 사용하여 기본 버킷 암호화를 SSE-KMS로 설정하겠습니다. 다음은 AWS CLI의 예입니다.

aws s3api put-bucket-encryption
–bucket s3express-kms–apne1-az4–x-s3
–server-side-encryption-configuration
‘{“Rules”: [{“ApplyServerSideEncryptionByDefault”:
{“SSEAlgorithm”: “aws:kms”,
“KMSMasterKeyID”: “1234abcd-12ab-34cd-56ef-1234567890ab”
},
“BucketKeyEnabled”:true}]}’

이 S3 디렉터리 버킷에 업로드하는 모든 새 객체는 AWS KMS 키를 사용하여 자동으로 암호화됩니다. PutObject 명령을 사용하여 S3 디렉터리 버킷에 confidential-doc.txt라는 새 파일을 업로드합니다

aws s3api put-object –bucket s3express-kms–apne1-az4–x-s3
–key confidential-doc.txt
–body confidential-doc.txt

이전 명령이 성공하면 다음과 같은 결과가 출력됩니다.

{
“ETag”: “”664469eeb92c4218bbdcf92ca559d03b””,
“ChecksumCRC32”: “0duteA==”,
“ServerSideEncryption”: “aws:kms”,
“SSEKMSKeyId”: “arn:aws:kms:ap-northeast-1:<accountId>:key/<keyId>”,
“BucketKeyEnabled”: true
}

HeadObject 명령으로 객체의 속성을 확인하면 이전에 생성한 키로 SSE-KMS를 사용하여 암호화된 것을 볼 수 있습니다.

aws s3api head-object –bucket s3express-kms–apne1-az4–x-s3
–key confidential-doc.txt

다음 출력이 반환됩니다.

 
{
“AcceptRanges”: “bytes”,
“LastModified”: “2024-08-21T15:29:22+00:00”,
“ContentLength”: 5,
“ETag”: “”664469eeb92c4218bbdcf92ca559d03b””,
“ContentType”: “binary/octet-stream”,
“ServerSideEncryption”: “aws:kms”,
“Metadata”: {},
“SSEKMSKeyId”: “arn:aws:kms:ap-northeast-1:<accountId>:key/<keyId>”,
“BucketKeyEnabled”: true,
“StorageClass”: “EXPRESS_ONEZONE”
}

GetObject를 사용하여 암호화된 객체를 다운로드합니다.

aws s3api get-object –bucket s3express-kms–apne1-az4–x-s3
–key confidential-doc.txt output-confidential-doc.txt

내 세션에 필요한 권한이 있으므로 객체가 자동으로 다운로드되고 복호화됩니다.

{
“AcceptRanges”: “bytes”,
“LastModified”: “2024-08-21T15:29:22+00:00”,
“ContentLength”: 5,
“ETag”: “”664469eeb92c4218bbdcf92ca559d03b””,
“ContentType”: “binary/octet-stream”,
“ServerSideEncryption”: “aws:kms”,
“Metadata”: {},
“SSEKMSKeyId”: “arn:aws:kms:ap-northeast-1:<accountId>:key/<keyId>”,
“BucketKeyEnabled”: true,
“StorageClass”: “EXPRESS_ONEZONE”
}

이 두 번째 테스트에서는 다른 IAM 사용자를 사용합니다. 이 IAM 사용자는 객체를 다운로드하는 데 필요한 KMS 키 권한이 부여되지 않은 정책을 사용합니다. 이 시도는 AccessDenied 오류와 함께 실패하며, 이는 SSE-KMS 암호화가 의도한 대로 작동하고 있음을 나타냅니다.

CreateSession 작업을 직접적으로 호출하는 동안 오류가 발생했습니다(액세스 거부). 액세스가 거부되었습니다.

이 데모에서는 SSE-KMS가 S3 Express One Zone과 원활하게 작동하여 인증된 사용자에게 사용 편의성을 유지하면서 추가 보안 계층을 제공하는 방법을 보여줍니다.

알아야 할 사항
시작하기 – AWS CLI 또는 AWS SDK를 사용하여 S3 Express One Zone에 SSE-KMS를 활성화할 수 있습니다. S3 디렉터리 버킷의 기본 암호화 구성을 SSE-KMS로 설정하고 AWS KMS 키를 지정합니다. 수명 기간 동안 S3 디렉터리 버킷당 하나의 고객 관리형 키만 사용할 수 있다는 점을 기억하세요.

리전 – 고객 관리형 키를 사용하는 SSE-KMS에 대한 S3 Express One Zone 지원은 현재 S3 Express One Zone을 사용할 수 있는 모든 AWS 리전에서 제공됩니다.

성능 – SSE-KMS를 S3 Express One Zone과 함께 사용해도 요청 지연 시간에는 영향을 주지 않습니다. 10밀리초 미만으로 데이터에 지속적으로 액세스할 수 있습니다.

요금 – 암호화 및 복호화에 사용되는 데이터 키를 생성하고 검색하는 데 발생한 AWS KMS 요금을 지불해야 합니다. 자세한 내용은 AWS KMS 요금 페이지를 참조하세요. 또한 SSE-KMS를 S3 Express One Zone과 함께 사용하는 경우 CopyObjectUploadPartCopy를 제외한 모든 데이터 플레인 작업에 대해 S3 버킷 키가 기본적으로 활성화되며 이 키는 비활성화할 수 없습니다. 이를 통해 AWS KMS에 대한 요청 수가 최대 99% 감소하여 성능과 비용을 모두 최적화합니다.

AWS CloudTrail 통합AWS CloudTrail을 사용하여 S3 Express One Zone 객체에서 SSE-KMS 작업을 감사할 수 있습니다. 이에 대한 자세한 내용은 이전 블로그 게시물에서 확인하세요.

– Eli.

2024년 9월 19일 업데이트 – 콘솔 대신 기존 버킷의 기본 암호화를 구성하도록 CLI 예제를 업데이트했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다