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 の背景や設計思想は関連書籍に詳しい。

関連用語