AWS KMS のAWSマネージドキーとカスタマーマネージドキーの違いをまとめてみた
はじめに
AWS KMSのAWSマネージドキーとカスタマーマネージドキーの違いや、どのように使い分けるか、自分の中でまとまっていなかったため、今回記事にしました。
いきなりまとめ
キータイプ | 自動ローテーション | エイリアス名 | 使用範囲 | 管理*1 | 作成 | 削除 | 料金 |
---|---|---|---|---|---|---|---|
AWSマネージドキー | 毎年 (必須) |
「aws/サービス名」 | 特定サービスのみ | AWS | AWSが作成 | 不可 | 従量課金 (リクエスト数) |
カスタマーマネージドキー | 毎年 (無効化も可) |
何でも可 | ユーザー管理 | ユーザー | ①ユーザーが作成 ②外部から持込 ③カスタムキーストア |
可 | ①月額1ドル (日割り計算) ②従量課金 (リクエスト数) |
AWSマネージドキーは、AWSが作成、管理、使用するKMSキーです。
一方、カスタマーマネージドキーは、ユーザーが作成、所有、および管理できます。
カスタマーマネージドキーでできる管理内容
*1、まとめの表の「管理」項目では、カスタマーマネージドキーは、ユーザー管理と記載しておりますが、管理とは具体的に以下のことができます。
- キーポリシー
- IAM ポリシー
- グラント
- 有効化と無効化
- 暗号化マテリアルのローテーション
- タグの追加
- エイリアス
- キー削除のスケジューリング
それぞれの機能について説明します。
キーポリシー
キーポリシーは、AWS KMSキーのリソースポリシーであり、KMSキーへのアクセスを制御する役割を果たします。
IAMポリシーやグラントを使用しても、キーポリシーで明示的に許可されている必要があります。
キーポリシーで許可されていない場合は、IAMポリシーを使用してもKMSキーへのアクセスを許可することはできません。
IAM ポリシー
IAMポリシーは、AWS KMSのさまざまなアクションへのアクセスを制御できます。
例えば、IAMユーザーやIAMロールにIAMポリシーをアタッチすることで、AWS KMSへのアクセス許可を付与できます。
グラント (許可:Grants)
AWS KMSでは、キーポリシーとグラントという2つのリソースベースのアクセス制御がサポートされています。
グラントは、キーポリシーやIAMポリシーを変更することなく、一時的なアクセス許可として使用できるため、一般的にはAWS KMSと統合されたAWSサービスによって使用され、データの保管中に暗号化を行います。
有効化と無効化
カスタマーマネージドキーを有効化または無効化できます。
無効にすると、再度有効にするまで暗号化アクションを使用することはできません。
暗号化マテリアルのローテーション
新しい暗号化マテリアルを生成するためには、新しいKMSキーを作成し、アプリケーションまたはエイリアスを変更する必要があります。
または、既存のカスタマーマネージドキーの自動キーローテーションを有効にすることで、毎年新しい暗号化マテリアルが生成されます。
AWS KMSは、古い暗号化マテリアルを永続的に保存するため、カスタマーマネージドキーで暗号化されたデータをいつでも復号できます。
タグの追加
カスタマーマネージドキーにはタグを追加できます。
ただし、キーの削除が保留中の場合は、タグの編集、追加、削除はできません。
エイリアス
KMSのエイリアスを使用すると、カスタマーマネージドキーに別名を付けることができ、より簡単に識別できます。
たとえば、1234abcd-12ab-34cd-56ef-1234567890ab
というキーの代わりに、test-key
という名前を使用して参照できます。
エイリアスを使用することで、エイリアスに関連付けられているキーを別のキーに変更しても、コードの記述と保守が容易になります。
キー削除のスケジューリング
キーを削除すると、キーマテリアルとキーに関連付けられたすべてのメタデータが削除され、元に戻すことはできません。
キーを削除すると、そのキーで暗号化されたデータは復号できなくなります。
キーを削除する際には、7日から30日の間の待機期間を設定する必要があります。
使い分け
特に要件がなければ、AWSマネージドキーの利用をおすすめします。
AWSマネージドキーでは、キーの管理が最小限に抑えられます。
ただし、キーの管理や制御が必要な場合や、会社のAWS利用ポリシーでカスタマーマネージドキーの利用が指定されている場合は、カスタマーマネージドキーを利用することを検討してください。
KMSが利用できるサービス一覧
AWSマネージドキーとカスタマーマネージドキーが利用できるAWSサービスは、下記の[AWS のサービスの統合]にまとめられています。