はじめに
Amazon S3では、保存するデータを「サーバーサイド暗号化(SSE)」によって保護することができます。
ただ、一口にSSEといっても方式が複数あり、それぞれで仕組みや使い方が異なるため、混乱しやすいポイントで、僕も実際に問題を解く中で何度も間違えました。
この記事では、S3で利用できる3つの暗号化方式について、違いと適した使い方をわかりやすく整理してみました。
- SSE-S3(S3が鍵を管理)
- SSE-KMS(AWS KMSが鍵を管理)
- SSE-C(ユーザーが鍵を提供)
サーバーサイド暗号化(SSE)とは?
サーバーサイド暗号化とは、
S3にアップロードされたオブジェクトをAWS側で自動的に暗号化・復号する仕組みです。
ファイルはアップロード時に暗号化され、ダウンロード時に自動で復号されるため、
アプリケーション側で特別な処理を加える必要はなく、普段通りの使い方でセキュアに利用できます。
3つの方式の比較
項目 | SSE-S3 | SSE-KMS | SSE-C |
---|---|---|---|
鍵の管理 | S3が自動で管理 | AWS KMSで集中管理 | 利用者が鍵を提供 |
暗号化キーの生成 | 自動生成・自動管理 | KMSのCMK(カスタマー管理キー) | ユーザーが毎回リクエストで提供 |
認可管理 | S3のアクセス制御のみ | IAMポリシー+KMSポリシー | 毎回鍵を送る必要あり |
導入の手軽さ | ◎(一番簡単) | ○(KMSとの連携が必要) | △(運用手間あり) |
コスト | 無料 | KMS利用に応じて課金あり | 無料(ただし自己管理) |
使い分けのヒント
✔ SSE-S3
- とにかく簡単に暗号化したいとき
- 鍵の管理はすべてAWSに任せたいとき
- 「S3のデフォルト暗号化」でよく登場する方式
✔ SSE-KMS
- アクセス制御や鍵の操作履歴を厳密に管理したいケース
- セキュリティ要件が厳しい業務システムや企業ユース
- CloudTrailによる操作の記録も行いたい場合に向いています
✔ SSE-C
- 自社ポリシーで暗号鍵を完全にコントロールしたいとき
- 他のAWSサービスとは連携せずに暗号化を独立して運用したいとき
- 毎回鍵を送信する必要があるため、運用の工夫が求められます
試験対策のポイント
- SSE-S3: 設定がシンプル、復号も自動。とりあえず暗号化したいときに。
- SSE-KMS: IAMとKMSの連携が必要で、一段階高度な管理ができる。
- SSE-C: 毎回鍵を提供する手間があり、運用ハードルが高い。特徴的なので逆に問われやすい。
選択肢として提示されたときは、「誰が鍵を管理するか」と運用負荷で判断すると選びやすくなります。
まとめ
- S3のサーバーサイド暗号化には3つの方式があり、それぞれ「鍵の管理者」が異なる。
- 簡単さを重視するならSSE-S3、制御性を求めるならSSE-KMS、自主管理重視ならSSE-C。
- 試験では利用シーンに応じた選択が問われることが多いため、シナリオ判断の練習がおすすめです。
あわせて知っておきたい用語
- AWS KMS(Key Management Service): 鍵をセキュアに管理・運用するサービス
- バージョニング: オブジェクトの世代管理機能。暗号化との併用可
- クライアントサイド暗号化(CSE): アプリ側で暗号化してからアップロードする方式
📘この記事はAWS認定SAP試験の勉強メモとしてまとめたものです。
内容に誤りや補足点があれば、ぜひコメントで教えてください!