
目次
S3の暗号化する方法(仕組み)
S3はKMSを利用した暗号化と、S3独自の暗号化(サーバサイド暗号化)のどちらかの暗号化方式が設定可能となっています。
KMSを利用して暗号化する場合
AWS KMSは、暗号化キーの作成と管理をマネージド型サービスです。
マネージド型サービスですが、ユーザーがKMS上でのキー作成と管理を実施する必要があります。
また、AWS KMSを利用して暗号化した場合は、AWS KMSキーを復号するための権限が必要となります。
サーバーサイド暗号化を利用する場合
サーバーサイド暗号化を有効化すると、
Amazon S3 はオブジェクトをデータセンター内のディスクに保存する前に暗号化し、
オブジェクトをダウンロードするときにS3側で自動で復号します。
アクセスログはどうなる?
S3 バケットに対して、暗号化キーによるサーバーサイド暗号化 を有効化すると、
各アクセスログファイルは、S3 バケットに保存される前に自動的に暗号化され、アクセス時に復号されます。
ログも自動で暗号化されるため、S3バケットの暗号化と別に設定する必要はありません。
S3の暗号化方式
S3のデフォルト暗号化を有効化する際に、SSE-S3とSSE-KMSのどちらかの暗号化方式を選択することが出来ます。
SSE-S3
特徴
- サーバーサイド暗号化をする。
- 256 ビットの Advanced Encryption Standard (AES-256) を使用してデータを暗号化する。
- SSE-S3はS3の暗号化と復号を自動で実施してくれますが、その分、利用状況の監査証跡が取れないことがデメリット
メリット
- 暗号化キーの管理をしなくてもよい
- 追加料金が発生しない
- APIコールの制限を考慮する必要もない
SSE-KMS
KMS に保存されているカスタマーマスターキー (CMK) によるサーバーサイド暗号化です。
追加料金がかかる。
SSE-KMSは、暗号化キーの管理機能をマネージドサービスで提供してくれます。
CMK の利用者をトラッキングしてログを取得することができます。
CloudTrailによりアクティビティの証跡ログが取得可能であり、証跡が必要な場合はSSE-KMSを利用します。
カスタマー管理の CMK を作成および管理したり、ユーザー、サービス、およびリージョンに固有の AWS マネージド CMK を使用できます。
Client Side Encryption(CSE)
ユーザーが暗号化キーの管理を実施することが前提する暗号化方式。
ユーザーが独自の暗号化キーを利用して暗号化したオブジェクトをS3に保存して、暗号化キーの生成・監理はクライアントで実行する形式。
SSE-C
- ユーザー側で独自の暗号化キーを作成して、AWS側にインポートして利用する暗号化方式
- S3 は、ディスクに書き込む際の暗号化とオブジェクトにアクセスする際の復号を管理する
バケットポリシー(バケットの暗号化)
Amazon S3 によってバケットポリシーが評価され適用された後、バケットの暗号化が適用されます。
バケット暗号化設定を有効にしていても、暗号化情報なしの PUT リクエストを拒否するバケットポリシーがある場合、該当PUT リクエストは拒否されてしまうため、S3への暗号化したデータ登録に失敗してしまいます。
デフォルト暗号化を実施すると指定されたバケット全体で登録されるオブジェクトが暗号化されます。バケット内においてデフォルト暗号化で範囲を指定することはできません。
SSE-KMSの暗号化キーの指定を失敗すると、暗号化自体の設定が有効化されません。