この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、最近カフェでリモートワークをすることが多く、すっかり定員さんに頼むメニューを当てられてしまうようになってしまった城内です。
はじめに
今回は、先日発表された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"
}
この際、もし事前に暗号化なしのアップロードを拒否するようなバケットポリシーが設定してあった場合、削除するのを忘れないでください。 また、デフォルト暗号化を有効にした際、すでに保存されているファイルは暗号化されませんので、ご注意ください。
さいごに
いかがでしたでしょうか? 些細なアップデートかもしれませんが、セキュリティを担保しつつ利用しやすくなっていると思います。
皆さんも、ぜひデフォルト暗号化を活用してみてください。