📝
AWS Key Management Service (KMS)ってなんだろ?
AWS Key Management Service(マネージド型の暗号化キー作成と管理)| AWS
概要
- 暗号化キーを簡単に作成・管理
- AWSのサービスやアプリケーションでの使用
- セキュアで弾力性が高い
- FIPS 140-2の検証済みまたは検証段階のハードウェアセキュリティモジュールを使用
- CloudTrailと統合してキーの使用ログを表示
メリット
- フルマネージド型
- キーの使用制御はユーザー
- 耐久性や物理的なセキュリティへの対処はAWS
- 一元キー管理
- AWS のサービスの暗号化の管理
- アプリケーションのデータの暗号化
- データのデジタル署名
- 低コスト
- 作成したキーの保存は1USD/月
- AWS管理キーは無料
- セキュア
- コンプライアンス
- 組み込み型の監査
ポイント
- 暗号化キーを作成・管理するサービス
- AWSサービスやアプリ使用するキーの一元管理が可能
- CloudTrailでキーの使用ログを確認可能
よくある質問 - AWS Key Management Service | AWS
Q: AWS Key Management Service (KMS) とは何ですか?
- 暗号化操作に使用されるキーを簡単に作成および管理できるマネージドサービス
Q: なぜ AWS KMS を使用すべきですか?
- スケーラブルなキー管理インフラストラクチャでライセンスコストと運用の負担を軽減
- データが一貫して保護されていることを容易に証明できる
- 広範囲にわたる業種および地域的なコンプライアンス体制にも対応
Q: AWS KMS の使用を開始するにはどのようにすればよいですか?
- 各サービスで自動的に作成されるAWS管理のマスターキーを使用して、サービス内のデータを暗号化
- キーの管理を完全にコントロールする必要がある場合は、独自のカスタマーマスターキー (CMK)を作成
- マネジメントコンソール
- CLI
- SDK
- KMS APIはAWS Encryption SDKを使用して、ユーザー独自のアプリケーション内のデータを暗号化するために間接的に使用することも可能
Q: AWS KMS ではどのようなキー管理機能を利用できますか?
- キーの作成
- キーのインポート
- キーの管理権限設定
- キーの使用権限設定
- 自動更新設定
- 無効化設定
- 削除
- CloudTrailでログを調査してキーの使用を監査
Q: AWS KMS はどのように機能しますか?
- エンベロープ暗号化という方法を使用してデータを保護
- KMSがAWSのサービスまたはアプリケーションでローカルに暗号化するために使用されるデータキーを生成
- データキー自体は、ユーザーが定義した CMK で暗号化
- KMS によるデータキーの保持や管理は行われない
- AWS のサービスでは、データが暗号化され、暗号化されたデータキーのコピーと暗号化されたデータが一緒に保存される
- サービスでデータを復号化する必要がある場合は、CMK を使用してデータキーを復号化するように AWS KMS にリクエスト
- CMK で復号の権限を付与されている場合、AWS のサービスは AWS KMS から復号されたデータキーを受信
- AWS のサービスでデータは復号され、プレーンテキストで返される
Q: AWS KMS を使用した場合、データはどこで暗号化されるのですか?
- AWS KMS API を直接使用し、サービスに保存されている CMK を使ってデータの暗号化と復号
- サービスに保存されている CMK を使用して、AWS のサービスでデータを暗号化
- KMS と統合されている AWS Encryption SDK を使用し、アプリケーション内で暗号化を実行
Q: 自身で作成した CMK と他の AWS のサービスで自動的に作成された CMK にはどのような違いがありますか?
- カスタマー管理の CMKでは、ユーザーが各キーのアクセス制御と使用ポリシーを定義し、他のアカウントやサービスに使用許可を与えられる
- AWS 管理の CMK ではCloudTrail にログは残るが、キーの直接管理は不可
ポイント
- キー管理のコストと運用負荷を軽減できる
- データ保護の証明ができる
- AWS管理のCMKではキーの直接管理はできない
- カスタマー管理のCMKではキーの直接管理ができる
- エンベロープ暗号化を使用
- KMSはローカルで暗号化するキーを生成するが保持・管理はしない
- 生成されたキーはユーザー定義のCMKで暗号化
- 復号時はCMKを使ってKMSにリクエストし、複合権限があれば復号データを受信
AWS再入門 – Amazon KMS編 | DevelopersIO
Amazon KMSとは
- データの暗号化に使用する暗号化キーを簡単に作成および管理できるマネージドサービス
- 完全マネージド
- 暗号化鍵を一元管理
- 暗号鍵は99.999999999%の耐久性
- AWSの各種サービスのデータを暗号化
- アプリケーションデータを暗号化
- キーの操作履歴をCloudTrailログに残し、監査可能
ユースケース
サーバーサイド暗号
- AWS にデータ送信した後でサーバー(AWS)が AWS KMS の暗号キーを利用してデータを暗号化
- データ受信の場合は、サーバー(AWS)が AWS KMS の暗号キーを利用してデータを復号化
クライアントサイド暗号
- AWS にデータ送信する前にクライアントが AWS KMS の暗号キーを利用してデータを暗号化
- データ受信の場合は、暗号化されたデータを受け取ったあと、クライアントが AWS KMS の暗号キーを利用してデータを復号化
アプリケーション内のデータをクライアントサイド暗号
- KMS の暗号化キーを利用して暗号化したデータ(クレデンシャルなど)をアプリケーションに埋め込み、アプリケーション実行時に復号化
PCI 準拠
- KMS は IAM とともに欠かせないサービスである
AWS CloudHSM との違い
- AWSサービスとの親和性や運用コストの点では、AWS KMSの優位性が際立っている
AWS KMS の鍵管理
- 1年単位でキーを自動更新可能
- 更新されても、キーIDは不変
- 暗号化は常に最新のキーで行われる
- 過去の暗号データは暗号化された時のキーで復号
- ユーザーはキーIDを指定するだけで、キーIDに紐づくどのキーを利用するかを指定する必要はない
鍵の削除
- 削除した鍵を利用したデータは復号不可
- 慮の事故に備え、AWS KMS ではキー削除時に猶予期間が設定される
- キー削除が原因で復号できないデータが検出されたら、削除をキャンセル
ポイント
- 暗号鍵は99.999999999%の耐久性
- サーバーサイド暗号はAWS側での暗号化
- クライアントサイド暗号はユーザー側での暗号化
- キーは自動更新されてもIDが変わらない
- 暗号化は最新のキーで行われる
- 過去の暗号データは暗号化された時のキーで復号
- ユーザーはキーのバージョンを意識せずIDを指定するだけでよい
- 削除したキーを利用した復号は不可
- 誤削除防止に猶予期間とキャンセルがある
コンソール
まとめ
- 暗号化キーを作成・管理するサービス
- AWSサービスやアプリ使用するキーの一元管理が可能
- CloudTrailでキーの使用ログを確認可能
- キー管理のコストと運用負荷を軽減できる
- データ保護の証明ができる
- AWS管理のCMKではキーの直接管理はできない
- カスタマー管理のCMKではキーの直接管理ができる
- エンベロープ暗号化を使用
- KMSはローカルで暗号化するキーを生成するが保持・管理はしない
- 生成されたキーはユーザー定義のCMKで暗号化
- 復号時はCMKを使ってKMSにリクエストし、複合権限があれば復号データを受信
- 暗号鍵は99.999999999%の耐久性
- サーバーサイド暗号はAWS側での暗号化
- クライアントサイド暗号はユーザー側での暗号化
- キーは自動更新されてもIDが変わらない
- 暗号化は最新のキーで行われる
- 過去の暗号データは暗号化された時のキーで復号
- ユーザーはキーのバージョンを意識せずIDを指定するだけでよい
- 削除したキーを利用した復号は不可
- 誤削除防止に猶予期間とキャンセルがある
Discussion