Amazon S3がファイル格納時のデフォルト暗号化に対応しました
こんにちは、最近カフェでリモートワークをすることが多く、すっかり定員さんに頼むメニューを当てられてしまうようになってしまった城内です。
はじめに
今回は、先日発表されたS3のアップデートの中から、「デフォルト暗号化」について書いてみたいと思います。
- AWS Developer Forums: Amazon S3 Adds New Features for Data Security and Compliance
- New Amazon S3 Encryption & Security Features | AWS News Blog
- 新しい Amazon S3 暗号化 & セキュリティ機能 | Amazon Web Services ブログ
すでに別の機能についても当ブログで紹介していますので、そちらも参考になさってください。
デフォルト暗号化について
従来の方法
従来、S3で格納ファイルの暗号化を徹底させるためには、バケットポリシーにて暗号化しないでアップロードすることを拒否するしかありませんでした。
以下のようなバケットポリシーを設定し、暗号化なしのアップロードをリジェクトします。 ※以下でのバケット名はcm-kiuchi-bucketになります。
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [ { "Sid": "DenyIncorrectEncryptionHeader", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::cm-kiuchi-bucket/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } }, { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::cm-kiuchi-bucket/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } } ] }
以下のように、アップロードの際は暗号化オプションの指定が必要になります。
$ aws s3api put-object --bucket cm-kiuchi-bucket --key test-file.txt --body test-file.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied $ $ aws s3api put-object --bucket cm-kiuchi-bucket --key test-file.txt --body test-file.txt --server-side-encryption AES256 { "ETag": "\"2debfdcf79f03e4a65a667d21ef9de14\"", "ServerSideEncryption": "AES256" }
デフォルト暗号化を有効
しかし、今回のアップデートで、デフォルトで暗号化を有効にできるようになりました。
以下のようにデフォルト暗号化を有効に設定すると、暗号化オプションなしでアップロードしても、ちゃんと暗号化されて保存されます。
$ aws s3api put-object --bucket cm-kiuchi-bucket --key test-file.txt --body test-file.txt { "ETag": "\"2debfdcf79f03e4a65a667d21ef9de14\"", "ServerSideEncryption": "AES256" }
この際、もし事前に暗号化なしのアップロードを拒否するようなバケットポリシーが設定してあった場合、削除するのを忘れないでください。 また、デフォルト暗号化を有効にした際、すでに保存されているファイルは暗号化されませんので、ご注意ください。
さいごに
いかがでしたでしょうか? 些細なアップデートかもしれませんが、セキュリティを担保しつつ利用しやすくなっていると思います。
皆さんも、ぜひデフォルト暗号化を活用してみてください。