本ページは、AWS に関する個人の勉強および勉強会で使用することを目的に、AWS ドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS 公式ドキュメントをご参照ください。

暗号化操作に使用されるキーを簡単に作成および管理できるマネージドサービスです。

【AWS Black Belt Online Seminar】AWS Key Management Service(YouTube)(0:59:33)

blackbelt-kms

KMS サービス概要

KMS ドキュメント

KMS よくある質問

KMS の料金

基本概念

KMS では、エンベロープ暗号化を使用しています。 これは、データを暗号化する鍵(データキー)とデータキーを暗号化する鍵(マスターキー)を利用する方式で、セキュリティが強化されます。

KMS のキーに対する操作は CloudTrail に記録されます。詳しくは、「AWS KMS による AWS CloudTrail API コールのログ記録」を参照してください。

kms

KMS では、マスターキーとデータキーという 2 種類の鍵が登場します。

CMK にはエイリアス(別名)を付けることができます。エイリアスを使用することで、キーをローテーションした場合など、エイリアスの紐づけを変更するだけで、アプリケーション側の更新が不要になります。

kms-alias

エイリアス名の ARN は次のようになります。そのため、リージョン/アカウントで一意にする必要があります。

arn:aws:kms:ap-northeast-1:123456789012:alias/aliasName

キーマテリアルとは、「暗号化キーを生成するために必要な材料」であり「CMK 作成時に使用されるデータのこと」をいいます。

キーマテリアルは、次の 3 種類が指定できます。

CMK にはリソースベースのキーポリシーを付与することができます。 これにより、特定のサービスからのみアクセスさせるといった制御ができます。 CMK 作成時にはデフォルトのキーポリシーが設定されているので、必要に応じて変更します。

キーポリシーに指定できる代表的な条件は次のとおりです。その他については、AWS KMS 条件キーを参照してください。

単一リージョンで作成した CMK はエクスポートのインポートも出来ないため、作成したリージョン以外では使用することができません。 しかし、マルチリージョンキーを選択することで、複数のリージョンにレプリケートすることが可能です。

CMK は別のアカウントに使用を許可することができます。

次のように使用を許可するアカウントを指定すると、キーポリシーに反映されます。 kms-use-other-account

kms-use-other-account-policy

キーの削除

CMK は即時削除することはできません。削除スケジュールを設定し、一定期間後に削除されます。 削除スケジュールは、7 日~ 30 日を指定できます。この期間内であれば削除をキャンセルすることができます。 削除されると、既存データを二度と復号できなくなるので注意が必要です。

削除ではなく、無効化することもできますのでまずは無効化を行い、本当にキーが使用されていないことを確認することを推奨します。

キーの有効化と無効化

削除予定の CMK が利用されたら通知させることもできます。

削除予定または無効化された CMK の使用を通知

削除保留中の KMS キーの使用を検出するアラームの作成キーステータスの表

CloudTrail に以下のイベントが記録されます。

フィルタパターン例

{($.eventSource=kms.amazonaws.com) && (($.errorCode="KMSInvalidStateException") || ($.errorCode="DisabledException"))}

OR

{($.eventSource=kms.amazonaws.com) && (($.errorCode="*Exception"))}

キーが削除予定または無効化された場合の通知

次の CloudTrail イベントを監視することで通知が可能です。

フィルタパターン例

{($.eventSource=kms.amazonaws.com) && (($.eventName="DisableKey") || ($.eventName="ScheduleKeyDeletion"))}

AWS Encryption SDK の機能として、「データキーキャッシュ」があります。 これを利用することでデータキー取得の API コールを減らすことができます。

KMS を利用した暗号化は、次の 2 種類があります。

kms-overview