메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

.NET용 AWS SDK을 사용하여 서버 측 암호화 지정

.NET용 AWS SDK을 사용하여 객체를 업로드할 때 PutObjectRequestWithServerSideEncryptionMethod 속성을 사용하여 x-amz-server-side-encryption 요청 헤더를 설정할 수 있습니다(REST API를 사용하여 서버 측 암호화 지정 참조). 다음 C# 코드 예제와 같이 AmazonS3 클라이언트의 PutObject 메서드를 호출하면 Amazon S3가 데이터를 암호화하여 저장합니다.

Copy
static AmazonS3 client; client = new AmazonS3Client(accessKeyID, secretAccessKeyID); PutObjectRequest request = new PutObjectRequest(); request.WithContentBody("Object data for simple put.") .WithBucketName(bucketName) .WithKey(keyName) .WithServerSideEncryptionMethod(ServerSideEncryptionMethod.AES256); S3Response response = client.PutObject(request); // Check the response header to determine if the object is encrypted. ServerSideEncryptionMethod destinationObjectEncryptionStatus = response.ServerSideEncryptionMethod;

이에 대한 응답으로 Amazon S3는 객체 데이터 암호화에 사용되는 알고리즘을 반환하며, ServerSideEncryptionMethod 속성을 사용하여 이 알고리즘을 확인할 수 있습니다.

.NET용 AWS SDK를 사용하여 객체 업로드에서 객체를 업로드하는 방법에 대한 실제 예제를 참조할 수 있습니다. 서버 측 암호화의 경우 WithServerSideEncryptionMethod 메서드를 호출하여 ServerSideEncryptionMethod 속성을 설정합니다.

멀티파트 업로드 API를 사용하여 대형 객체를 업로드할 때 업로드할 객체에 대해 서버 측 암호화를 지정할 수 있습니다.

  • 하위 수준의 멀티파트 업로드 API(멀티파트 업로드용 AWS .NET SDK(하위 수준 API) 사용 참조)를 사용하여 대형 객체를 업로드할 경우 InitiateMultipartUpload 요청에 서버 측 암호화를 지정할 수 있습니다. 즉, WithServerSideEncryptionMethod 메서드를 호출하여 InitiateMultipartUploadRequestServerSideEncryptionMethod 속성을 설정합니다.

  • 상위 수준의 멀티파트 업로드 API(멀티파트 업로드용 AWS .NET SDK(상위 수준 API) 사용 참조)를 사용할 경우 TransferUtility 클래스는 객체를 업로드하기 위한 UploadUploadDirectory 메서드를 제공합니다. 이 경우 TransferUtilityUploadRequestTransferUtilityUploadDirectoryRequest 객체를 사용하여 서버 측 암호화를 요청할 수 있습니다.

사용된 암호화 알고리즘 확인

기존 객체의 암호화 상태를 확인하기 위해 다음 C# 코드 예제와 같이 객체 메타데이터를 검색할 수 있습니다.

Copy
AmazonS3 client; client = new AmazonS3Client(accessKeyID, secretAccessKeyID); ServerSideEncryptionMethod objectEncryption; GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest() .WithBucketName(bucketName) .WithKey(keyName); objectEncryption = client.GetObjectMetadata(metadataRequest) .ServerSideEncryptionMethod;

암호화 알고리즘은 열거형으로 지정됩니다. 저장된 객체가 암호화되지 않은 경우(기본 동작) 객체의 ServerSideEncryptionMethod 속성은 기본값인 None으로 설정되어 있습니다.

기존 객체의 서버 측 암호화 변경(복사 작업)

기존 객체의 암호화 상태를 변경하기 위해 객체를 복사한 다음 원본 객체를 삭제할 수 있습니다. 기본적으로 복사 API는 대상을 암호화하지 않으며, 암호화하려면 대상 객체의 서버 측 암호화를 명시적으로 요청해야 합니다. 다음 C# 코드 예제는 객체를 복사합니다. 요청에 명시적으로 대상 객체의 서버 측 암호화가 지정되어 있습니다.

Copy
AmazonS3 client; client = new AmazonS3Client(accessKeyID, secretAccessKeyID); CopyObjectResponse response = client.CopyObject(new CopyObjectRequest() .WithSourceBucket(sourceBucketName) .WithSourceKey(sourceObjetKey) .WithDestinationBucket(targetBucketName) .WithDestinationKey(targetObjectKey) .WithServerSideEncryptionMethod(ServerSideEncryptionMethod.AES256) ); // Check the response header to determine if the object is encrypted. ServerSideEncryptionMethod destinationObjectEncryptionStatus = response.ServerSideEncryptionMethod;

.NET용 AWS SDK를 사용하여 객체 복사에서 객체를 복사하는 방법에 대한 실제 예제를 참조할 수 있습니다. 위에 나온 코드 예제와 같이 CopyObjectRequest 객체에 서버 측 암호화를 지정할 수 있습니다.