はじめに
今回は、S3のバケットキーの機能を紹介します。
有効化することで、コストを大幅に削減できる可能性のある機能です。
S3の暗号化方式
・SSE-S3
・SSE-KMS
・SSE-C
・クライアント暗号化
この4つの方式があります。
SSE-S3
Amazon S3 が管理するキーによるサーバー側の暗号化 (SSE-S3) の方式で、基本的に料金はかかりません。
最近デフォルトでサポートされたので、意識しなければこの方式になるかと思います。
SSE-KMS
KMSの顧客管理型CMKを利用した暗号化方式です。SSE-S3とは違い、キーのライフサイクルを利用者自身が管理できるため、暗号化キーの管理を利用者自身が実施したい場合に有効な方式です。
KMSを利用するため、KMSの利用料金がかかります。
SSE-C
独自のキーを利用した暗号化方式です。
SSE-KMSと似ていますが、顧客管理のキーをKMSではなく、顧客自身が管理してAWSSDK等によりサーバサイドでの暗号化に用います。キーの管理すら、AWSに任せたくない場合などに有効な方式です。
クライアント暗号化
これは単純にS3に送付する前にクライアント側で暗号化してしまう方式です。
クライアント側でしか復号化したくない場合などに有効でしょう。
バケットキーって何?
ここまでが前提の話でした。
バケットキーは、上記で説明したSSE-KMSにおいて、暗号化コストを下げるための仕組みです。
バケットキーを有効化すると、S3はKMSから有効期限の短いバケットキーを生成し、S3に一時保存します。
このキーから、新しいオブジェクトのデータキーを生成し、暗号化に利用するという仕組みです。
このバケットキーを用いることで、S3からKMSへのトラフィックを大幅に削減できるため、コストが下がるという仕組みです。
引用:https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/bucket-key.html
まとめ
とりあえずSSE-KMSを利用している場合は、問答無用で有効化すればよいかと思います。
SSE-S3を使っている場合には特に設定変更の必要はありませんが、CDKを利用する場合は、デフォルト無効だったかと思いますので、設計の際は気をつけてくださいね。
参考:
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/bucket-key.html