こんにちは! JQです。
前回は『Amazon IAM編~MFA~』ということで、IAMでMFAを利用した承認を紹介してみました。
今回は『Amazon S3編~Server Side Encryption~』と題して、S3でServer Side Encryptionを利用してみたいと思います。
S3 Server Side Encryptionとは
S3 Server Side Encryptionとは、S3に対してデータを暗号化した状態で保存する為の機能です。
暗号化、復号化(復号)、鍵管理の全てをAWS側で行なってくれます。
それでは実際に利用してみたいと思います!
WEBコンソールからの利用
1. まずはWEBコンソールでファイルをアップする際にServer Side Encryptionを利用してみます。
アップロード画面で「Set Details」を選択します。
2. Use Server Side Encryption にチェックを付けて「Start Upload」をクリックします。
実際にアップしたファイルを確認してみます。
アップしたファイルの「Details」で「Server Side Encryption:」の項目が「AES-256」になっているのが確認出来ます。
Ruby SDK からの利用
次にRuby SDKから利用してみたいと思います。
3. AWS公式ドキュメントを参考にServer Side Encryptionのオプションを指定してファイルをアップします。
その後に暗号化が掛かっているかを取得するスクリプトになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/usr/bin/env ruby require 'rubygems' require 'aws-sdk' AWS.config( :access_key_id => ' access key’, :secret_access_key => 'secret key' ) s3=AWS::S3.new bucket_name=" bucket_name" file_name=" file_name " key_name = File.basename(file_name) s3.buckets[bucket_name].objects[key_name].write(:file => file_name, :server_side_encryption => :aes256) enc = s3.buckets[bucket_name].objects[key_name].server_side_encryption enc_state = (enc != nil) ? enc : "not set" puts "Encryption of #{key_name} is #{enc_state}." |
4. 成功すれば下記の様に出力されます。
1 |
Encryption of 「ファイル名」 is aes256. |
バケットポリシーでの利用
5. 最後に、バケットポリシーを利用して「Server Side Encryption: AES256」のオプションが指定されていない場合に、許可しない事が可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "Version":"2008-10-17", "Id":"PutObjPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":{ "AWS":"*" }, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::YourBucket/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"AES256" } } } ] } |
いかがでしたでしょうか?
暗号化、復号化(復号)、鍵管理をAWS側で行なってくれる為、意識せず暗号化を利用する事が可能です!
次回は『Amazon S3編 ~Client Side Encryption~』ということで、クライアント側で暗号化をしてみます。お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————