AWS KMS 完全ガイド|暗号鍵管理サービスとエンベロープ暗号化
KMS は AWS の暗号鍵を作成・管理する中央サービス。S3・EBS・RDS・Lambda 環境変数等、AWS のあらゆる暗号化機能の鍵を提供する。FIPS 140-2 Level 3 認定のハードウェアセキュリティモジュール(HSM)で鍵を保護し、IAM と統合した細か...
AWS マネージドの暗号鍵管理サービス。S3・EBS・RDS など全 AWS サービスの暗号化基盤。
1. 概要(端的に)
KMS は AWS の暗号鍵を作成・管理する中央サービス。S3・EBS・RDS・Lambda 環境変数等、AWS のあらゆる暗号化機能の鍵を提供する。FIPS 140-2 Level 3 認定のハードウェアセキュリティモジュール(HSM)で鍵を保護し、IAM と統合した細かなアクセス制御も提供する。
2. 何ができるか
- CMK(カスタマーマスターキー)作成:対称・非対称鍵
- データ暗号化:直接暗号化(4 KB まで)/ データキー方式(大量データ)
- AWS サービスの暗号化基盤:S3 / EBS / RDS / Aurora / Lambda 等
- 鍵ローテーション:自動年次ローテ
- 鍵ポリシー:誰がどう使えるか定義
- CloudHSM 連携:専用 HSM への鍵保管
- マルチリージョン鍵:リージョンまたぎ暗号化
3. 特徴
| 観点 | 特徴 |
|---|---|
| 追加料金 | カスタム鍵 $1/月 + API リクエスト |
| AWS 管理鍵 | サービスデフォルト鍵 = 無料 |
| 鍵タイプ | 対称(AES-256)/ 非対称(RSA / ECC) |
| 鍵保護 | HSM(FIPS 140-2 Level 3) |
| API | Encrypt / Decrypt / GenerateDataKey 他 |
| 鍵ローテーション | 年 1 回自動 |
CMK の種類
| 種類 | 管理者 | 用途 |
|---|---|---|
| AWS マネージド | AWS | サービスデフォルト(無料) |
| カスタマーマネージド(CMK) | 利用者 | 高度な制御(推奨) |
| AWS 所有 | AWS(不可視) | 内部利用 |
4. 仕組み
KMS の エンベロープ暗号化 が中核:大量データを直接 KMS で暗号化せず、データキーで暗号化 → データキーを CMK で暗号化 する。
エンベロープ暗号化
[大量データ]
↓ データキー(DEK)で AES 暗号化
[暗号化データ + 暗号化データキー(CMK で暗号化)]
↓ S3 等に保存
復号時:
[暗号化データキー] → KMS で復号 → DEK → 暗号化データ復号
GenerateDataKey API
1. アプリが GenerateDataKey 呼び出し
2. KMS が DEK を生成、CMK で暗号化
3. アプリに「平文 DEK + 暗号化 DEK」を返却
4. アプリが平文 DEK でデータを暗号化
5. 平文 DEK は破棄、暗号化 DEK のみデータと一緒に保存
→ CMK は KMS から出ないため安全性が高い。
鍵ポリシー
- ポリシー JSON で「誰がどう使えるか」を定義
- IAM ポリシーと併用
- root 権限の管理が重要
5. ユースケース
ユースケース 1:S3 オブジェクト暗号化
SSE-KMS でオブジェクト暗号化、CMK で鍵管理。
ユースケース 2:EBS / RDS の保存時暗号化
EBS スナップショット・RDS バックアップの透過暗号化。
ユースケース 3:Lambda 環境変数暗号化
機密情報を環境変数に置く時の暗号化。
ユースケース 4:アプリでの暗号化
カード番号・個人情報のフィールド暗号化。
ユースケース 5:マルチリージョン暗号化
Multi-Region Key で複数リージョンの整合性。
6. 関連用語
- IAM — KMS のアクセス制御
- S3 / EBS / RDS — KMS 統合の主要対象
- Secrets-Manager — KMS で機密情報暗号化
- CloudTrail — KMS 操作監査
7. 関連サイト
AWS 公式
参考
🎓 試験での出題傾向
| 試験 | 重要度 | 主な出題パターン |
|---|---|---|
| CLF | 高 | 暗号化の概念、KMS の役割 |
| SAA | 高 | 暗号化設計(頻出)、エンベロープ暗号化 |
| DVA | 高 | アプリでの KMS API 利用 |
| SOA | 高 | 鍵管理運用・ローテ |