メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for .NET を使用したサーバー側の暗号化の指定

AWS SDK for .NET を使用してオブジェクトをアップロードするときに、PutObjectRequestWithServerSideEncryptionMethod プロパティを使用してリクエストの x-amz-server-side-encryption ヘッダーを設定できます(「REST API を使用したサーバー側の暗号化の指定」を参照)。次の C# コード例に示すように、Amazon S3 クライアントの 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 プロパティで確認できます。

オブジェクトのアップロード方法を示す作業サンプルについては、「AWS SDK for .NET を使用したオブジェクトのアップロード」を参照してください。サーバー側の暗号化の場合、WithServerSideEncryptionMethod メソッドを呼び出して ServerSideEncryptionMethod プロパティを設定します。

マルチパートアップロード API を使用して大容量のオブジェクトをアップロードするときに、アップロード中のオブジェクトに対してサーバー側の暗号化を指定できます。

  • 低レベルマルチパートアップロード API を使用して大容量オブジェクトをアップロードする場合(「AWS .NET SDK を使用したマルチパートアップロード (低レベル API)」を参照)は、 リクエストでサーバー側の暗号化を指定できます。InitiateMultipartUploadつまり、ServerSideEncryptionMethod メソッドを呼び出して InitiateMultipartUploadRequest プロパティを WithServerSideEncryptionMethod に設定します。

  • 高レベルマルチパートアップロード API を使用する場合(AWS .NET SDK を使用したマルチパートアップロード (高レベル API) を参照)は、TransferUtility クラスのメソッド(Upload およびUploadDirectory)でオブジェクトをアップロードします。この場合、TransferUtilityUploadRequest オブジェクトと TransferUtilityUploadDirectoryRequest オブジェクトを使用してサーバー側の暗号化を要求できます。

使用された暗号化アルゴリズムの確認

次の 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;

オブジェクトのコピー方法を示す作業サンプルについては、「AWS SDK for .NET を使用したオブジェクトのコピー」を参照してください。前のコード例に示されているように、CopyObjectRequest オブジェクトでサーバー側の暗号を指定できます。