2011年10月5日水曜日

S3ってなんじゃ?(サーバー側でファイルのAES256暗号化)

S3がサーバーサイドでのファイル暗号化に対応しました。

ファイルのアップロード時、"x-amz-server-side-encryption"ヘッダに"AES256"を指定することで暗号化が自動的に行われ、配信時に自動的に複合してくれるそうです。 

まずはコンソール上で試してみます。
 AWSコンソールのS3タブで「Upload」ボタンを押し、アップロードダイアログを使って、普通にファイルを選択します。

「Set Details..」で次の画面を表示すると、RSSのチェックボックスの下に、「Use Server Side Encryption」という項目が追加されているのがわかります。


これにチェックを入れて、あとは通常通りアップロードします。
これだけでファイルが暗号化されて保持されます。簡単ですね。

次は、APIを利用して暗号化をしてみます。
ドキュメントを見るかぎり現在のところ、REST、Java、.NETで対応しているようです。
ここではJavaのSDKでの例を紹介します。
AmazonS3 s3client = new AmazonS3Client(
  new BasicAWSCredentials("XXXXXXXXXXX",  "YYYYYYYYYYY"));
 
File file = new File("hoge.txt");
PutObjectRequest putRequest = new PutObjectRequest("hoge-bucket", "hoge.txt", file);
            
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setServerSideEncryption( 
  ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION );     
putRequest.setMetadata(objectMetadata);

PutObjectResult response = s3client.putObject(putRequest);


このように、通常のアップロードリクエストにメタデータを追加してあげるだけです。
本日はここまで。