AWS Key Management Service (AWS KMS)
1. サービス概要¶
AWS Key Management Service (AWS KMS)は、データの暗号化およびキー管理を安全かつ簡単に行うためのフルマネージドサービスである。
暗号鍵の作成・保持・ローテーション・廃棄まで一貫して管理し、多くの AWS サービス(Amazon S3、Amazon EBS、AWS Lambda など)とネイティブに連携することで、安全な暗号化機能を提供する。
主なユースケースには、
- データ暗号化の規制・コンプライアンス対応
- 機密情報を含むログやバックアップの保護
- アプリケーションレベルでの機密データ保護
などが挙げられます。
2. 主な特徴と機能¶
2.1 フルマネージド型の暗号鍵管理¶
KMS は暗号鍵(Customer Master Key, CMK)のライフサイクルを AWS が管理・運用し、耐障害性や冗長化も自動で担保する。
ユーザーはキーポリシーを設定するだけで、煩雑なハードウェア保守やソフトウェアパッチ適用から解放される。
- CMK の作成・削除: 数クリックで鍵を作成し、不要になれば安全に削除
- 自動ローテーション: 任意の期間(例: 1 年)で CMK を自動ローテーション可
2.2 多様な暗号化モードをサポート¶
AWS KMS では、用途に応じて主に以下の暗号化モードを提供している:
- SSE-KMS: S3 や EBS など AWS サービスと連携し、サーバサイド暗号化を KMS 管理の鍵で実行
- Client-Side Encryption: SDK などを用いてクライアント側でデータを暗号化し、その鍵を KMS で保護
- Data Keys: KMS がデータ暗号化用の一時鍵(データキー)を生成し、アプリケーションレイヤーでの暗号化を実現
2.3 AWS サービスとのシームレスな統合¶
S3、EBS、RDS、Secrets Manager など、多くの AWS サービスが KMS を暗号化エンジンとして利用可能である。
これにより、暗号化のコード実装を最小限に抑えながら、一貫したセキュリティポリシーを組織全体で適用できる。
2.4 キーポリシーとアクセス制御¶
KMS では「キーポリシー」を通じて詳細なアクセス権限を設定できる。
これにより、特定の IAM ユーザーやロールにだけ鍵操作を許可し、暗号化/復号化の範囲を厳密に制御できる。
また、グラント(Grant)機能で一時的なアクセス権限を付与することも可能である。
2.5 CloudHSM 統合(カスタマー管理キーストア)¶
必要に応じて、CloudHSM を使った Custom Key Store 機能も利用可能である。
これにより、専用 HSM で管理する鍵を KMS から呼び出す構成が組めます。
FIPS 140-2 など厳格なコンプライアンス要件を満たす環境での鍵管理に適している。
3. アーキテクチャおよび技術要素¶
- CMK を作成し、キーポリシーでアクセス可能なプリンシパル(IAM ユーザー/ロール)を指定
- アプリケーションや AWS サービスが KMS に暗号化または復号化リクエストを行う
- KMS はリクエストの署名や権限を検証し、問題がなければ鍵操作を実行
- KMS はデータキーの生成や暗号化を行い、クライアントは実際のデータ暗号化処理を実施
- KMS へのすべてのリクエストは AWS CloudTrail で監査ログが残されるため、セキュリティとトレーサビリティが高まります。
4. セキュリティと認証・認可¶
AWS KMS を利用する際、特に以下のセキュリティ面が重要である:
- キーポリシーの最小権限: CMK に対する暗号化/復号化権限を必要最小限に絞る
- IAM との連携: キーポリシーと IAM ポリシーを組み合わせて、厳密なアクセス制御を実現
- ログ監査: CloudTrail に記録される KMS API 呼び出しログを定期的に分析
- Custom Key Store(CloudHSM): さらに高い管理要件を必要とする場合に専用 HSM でのキーストアを利用
5. 料金形態¶
AWS KMS の料金は以下の要素で構成される:
- キー管理: CMK(カスタマーマネージドキー)の作成数やキー保管料は地域や使用量に応じて変動
- API リクエスト: 暗号化や復号化、キー生成リクエストなど 1 リクエストあたり従量課金
- カスタマー管理キーストア(CloudHSM)利用時: CloudHSM の使用料金が別途発生
6. よくあるアーキテクチャ・設計パターン¶
KMS を活用する代表的なパターンは以下の通りです:
- S3・EBS などの暗号化: SSE-KMS を適用してデータストレージを自動暗号化
- Secrets Manager や Parameter Store: これらが保管するパスワードや API キーを KMS で保護
- アプリケーションレイヤー暗号化: Data Key を取得してクライアントサイドで独自暗号化を実行
- カスタムキー管理ストア: オンプレミスに準拠した鍵管理を必要とする場合、CloudHSM を併用
7. 設定・デプロイ手順(ハンズオン例)¶
- AWS コンソールで「Key Management Service (KMS)」を検索し、サービスを開く
- 「Customer managed keys」から「Create key」を選択し、鍵タイプ(対称/非対称)と用途を指定
- キーポリシーで暗号化/復号化できる IAM ユーザー・ロールを設定
- 例えば S3 バケットを開き、デフォルトの暗号化を「AWS KMS – カスタマーマネージドキー」に変更
- ファイルをアップロードし、暗号化が KMS キーで行われていることを確認
8. 試験で問われやすいポイント¶
8.1 CMK の種類¶
- AWS マネージドキー: AWS サービス専用に自動作成されたキー
- カスタマーマネージドキー: ユーザーが自分で作成し、キーポリシーを設定可能
- AWS オーナーキー: AWS がオーナーとなるキーで、ユーザーが直接管理はしない
8.2 キーポリシーと IAM ポリシーの違い¶
- キーポリシー: どのアカウント・ユーザーが鍵を操作できるか定義
- IAM ポリシー: ユーザーやロールに割り当てるアクセス権限を定義
- 両者の組み合わせ: キーポリシーと IAM ポリシーの両方で許可されている場合に鍵操作が可能
8.3 SSE-KMS vs. SSE-S3¶
- SSE-KMS: マスターキーを KMS が管理、アクセス制御や監査ログが詳細
- SSE-S3: S3 が自動的に暗号化・復号化、KMS より柔軟性は低いが運用が簡易
- 使い分け: きめ細かい権限管理や監査が必要なら SSE-KMS、シンプルな暗号化なら SSE-S3
8.4 CloudHSM 連携¶
- カスタマー管理キーストア: KMS が CloudHSM クラスタと連携し、ユーザー専用 HSM で鍵を保持
- メリット: FIPS 140-2 レベル 3 などの厳格な規制対応をクリア
- 代償: CloudHSM 利用料金や追加の運用管理が発生
8.5 リクエストとコスト¶
- 暗号化リクエスト: 1 リクエストあたり数円程度で従量課金
- キー保管料: 地域やキー数により変動
- 削除スケジューリング: CMK はすぐ削除できず、デフォルト 7 ~ 30 日間の保留期間
8.6 試験で頻出となる具体的な問われ方と答え¶
- Q: AWS KMS を使用するメリットは?
- A: 暗号鍵のライフサイクルをフルマネージドし、AWS 各サービスとシームレスに連携できる。
- Q: SSE-KMS と SSE-S3 の違いは?
- A: SSE-KMS では KMS のマスターキーを利用し詳細なアクセス制御・監査が可能、SSE-S3 は S3 が内部的に鍵を管理。
- Q: キーポリシーと IAM ポリシーのどちらで権限を設定する?
- A: 両方。キーポリシーで鍵へのアクセス範囲を定義し、IAM ポリシーでユーザー/ロールの権限を付与する。
- Q: カスタマー管理キーストアを利用する理由は?
- A: CloudHSM 連携により、ユーザー専用 HSM で厳格に鍵を管理し、コンプライアンス要件を満たすため。
- Q: CMK をすぐに削除できないのはなぜ?
- A: 誤削除によるデータ復号不可を防ぐため、7 ~ 30 日間の保留期間が必要。