AWS Key Management Service
# AWS Key Management Service
https://d1.awsstatic.com/webinars/jp/pdf/services/20181121_AWS-BlackBelt-KMS.pdf
## KMS 概要
- 暗号の鍵管理において考慮すべき問題
- 鍵の保存先
- 鍵はどこで扱われるのか
- 誰が鍵を使えるのか
- Key Management Infrastructure
- AWS Key Management Service
- KMSで登場する用語
- Customer Master Key(CMK)
- 暗号鍵のヒエラルキーの頂点に位置するKMS上のAWS256ビットの鍵
- 暗号化された状態で保存
- KMS内部のHSM上でのみ平文で存在する
- この鍵を利用して個別データの鍵を暗号化する
- Enveloper Encryption
- マスターキーで暗号した暗号キーで対象オブジェクトを暗号化・復号する
- 暗号化したデータと、CMKで暗号化されたデータキーを一緒に保管する。コンテンツに対する封筒
- 大量データの暗号化を実現
- 管理性の向上
- Customer Data Key(CDK)
- 実際の暗号化対象オブジェクトの暗号化・復号化に使用されるAWS256ビットの鍵
- KMSで生成され、CMKで暗号化された状態で保存
- AWS KMS でできること
- できること
- 暗号鍵の生成と保管
- 鍵利用の権限管理
- 鍵利用の監査
- 対象鍵暗号
- 最大4KBのデータ暗号化
- 他のAWSサービスとのインテグレーション
- 鍵のインポート
- できないこと
- シングルテナント
- 非対称鍵暗号
- 鍵のエクスポート
- AWS KMSの暗号鍵管理機能
- 鍵の生成
- 鍵のアクセス管理
- IAMユーザおよびロールの定義
- キーポリシーによるリソースベースの管理
- CMKの無効化・有効化・削除
- 自動キーローテーションの有効化
- ライフサイクルは利用者が管理
- CMKのインポート
- KMSの認可・監査
- AWS KMSの鍵を使用した暗号化・復号化
## ベストプラクティス
- 認証と認可
- IAMポリシーとキーポリシーでデザイン
- 最小権限の原則
- MFAの利用と検討
- 発見的統制
- CloudTrail の利用
- パフォーマンスとサービス制限
- インフラストラクチャのセキュリティ
- インシデント対応の明確化と自動化
- AWS KMSセキリティの自動化
- CMKの無効化と削除
- 他のAWSサービスとの連携
- 暗号化オプションはONにする必要がある
- 暗号化されたバックアップは共有が可能(リージョン間で渡すことはできない)。その場合はCMKの共有もしないと復号できない
- 対応しているインスタンスタイプ(RDS, EBSなど)注意が必要
- 暗号化しているものを途中で暗号化しないに変更することはできない
- KMSのセキュリティ
- 鍵の管理はユーザーが行う
- マスターキーには誰もアクセスできない
- KMSサービス内でアクセスする方法を限定する
- キーは指定されたリージョンにのみ保存され、他のリージョンに移動できない
- キーの1年毎の自動ローテーション。インポートされたキーは対応していない
- CloudTrail による監査
## 雑感
混乱しやすいHSMとKMSのKMSの方。サーバーサイドの暗号化は他のAWSサービスにインテグレーションしやすくなっている。
マスターキーとコンテンツを復号するキー、コンテンツの3つの要素から成り立っていて、マスターキーはコンテンツを暗号化した暗号鍵の暗号化のみに利用される。暗号化された暗号鍵を暗号化したコンテンツと一緒に管理することにより、管理をシンプルにしている(Enverope)。
暗号化されたデータはコピーや共有に制限があったり、CMKの共有が必要であったりするので利用する際には制限の部分に注意する必要がある。
基本的には仕組みに乗っかれれば、キーの管理も自動で行ってくれるので良きサービス。