KMS
AWS の暗号鍵管理サービスで、データの暗号化・復号に使う鍵を安全に管理する
AWSセキュリティ
KMS とは
AWS KMS (Key Management Service) は、データの暗号化・復号に使う暗号鍵を安全に管理するマネージドサービスである。S3、DynamoDB、EBS、Lambda 環境変数など、AWS サービスの暗号化に使われる。
暗号化の仕組み
エンベロープ暗号化:
1. KMS がデータキー (平文 + 暗号化済み) を生成
2. 平文のデータキーでデータを暗号化
3. 平文のデータキーを破棄
4. 暗号化済みデータキー + 暗号化データを保存
復号:
1. 暗号化済みデータキーを KMS に送信
2. KMS がマスターキーでデータキーを復号
3. 復号されたデータキーでデータを復号
キーの種類
| 種類 | 管理者 | コスト | 用途 |
|---|---|---|---|
| AWS マネージドキー | AWS | 無料 | S3, DynamoDB のデフォルト暗号化 |
| カスタマーマネージドキー (CMK) | ユーザー | $1/月 + API 呼び出し | キーポリシーの制御が必要な場合 |
| カスタマー提供キー | ユーザー | API 呼び出しのみ | 自前の鍵を使いたい場合 |
Lambda 環境変数の暗号化
Lambda の環境変数はデフォルトで AWS マネージドキーで暗号化される。機密情報は Secrets Manager で管理し、Lambda から動的に取得する方が安全。
自動ローテーションでは、新しいキーマテリアルが生成されるが、古いキーマテリアルも保持されるため、過去に暗号化したデータは引き続き復号できる。
よくある使い方
| サービス | 暗号化対象 |
|---|---|
| S3 | オブジェクト (SSE-KMS) |
| DynamoDB | テーブルデータ |
| EBS | ボリューム |
| RDS | データベース |
| Secrets Manager | シークレット |
| Lambda | 環境変数 |
KMS の背景や設計思想は関連書籍に詳しい。