カスタマーマスターキー ローテーション - AWS Key Management Service

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

カスタマーマスターキー ローテーション

暗号化のベストプラクティスでは、暗号化キーの広範な再利用を推奨していません。AWS Key Management Service (AWS KMS) カスタマーマスターキー (CMKs) 用の新しい暗号化マテリアルを作成するには、新しい CMKs を作成し、アプリケーションまたはエイリアスを変更して新しい CMKs を使用します。または、既存のカスタマー管理の CMK の自動キーローテーションを有効にすることができます。

カスタマー管理 CMK の自動キーローテーションを有効にすると、AWS KMS は CMK の新しい暗号化マテリアルを毎年生成します。また、AWS KMS は CMK の古い暗号化マテリアルを永続的に保存するため、暗号化されたデータの復号に使用できます。AWS KMS は CMK を削除するまでローテーションされたキーマテリアルを削除しません。

キーローテーションでは、CMK のバッキングキーのみが変更されます。バッキングキーとは、暗号化オペレーションで使用される暗号化マテリアルです。CMK は、バッキングキーの変更の有無や回数にかかわりなく、同じ論理リソースのままです。次の図に示すとおり、CMK のプロパティは変更されまません。

自動キーローテーションには次の利点があります。

  • キー ID、キー ARN、リージョン、ポリシー、アクセス許可などの CMK のプロパティは、キーがローテーションされても変更されません。

  • CMK ID または ARN を参照するアプリケーションまたはエイリアスを変更する必要はありません。

  • キーローテーションを有効にすると、AWS KMS により CMK が毎年自動的にローテーションされます。更新を覚えている、またはスケジュールする必要はありません。

ただし、自動キーローテーションは、CMK で保護されるデータには効果がありません。CMK で生成されたデータキーの更新や、CMK で保護されているデータの再暗号化は行われず、データキーの侵害による影響は軽減されません。

新しい CMK を作成し、元の CMK の代わりに使用することを決める場合があります。これには、既存の CMK のキーマテリアルをローテーションするのと同じ効果があり、多くの場合、手動キーローテーションとみなされます。キーローテーションのスケジュールを制御する場合は、手動ローテーションすることをお勧めします。また、非対称の CMKsカスタムキーストアの CMKs、インポートされたキーマテリアルを持つ CMKs など、自動キーローテーションの対象にならない CMKs をローテーションする方法も利用できます。

キーローテーションと料金

カスタマー管理の CMKs のローテーションには、追加の月額料金が発生する可能性があります。詳細については、「AWS Key Management Service 料金表」を参照してください。バッキングキーとローテーションの詳細については、「AWS Key Management Service Cryptographic Details ホワイトペーパー」を参照してください。

キーの自動ローテーションの仕組み

AWS KMS のキーローテーションは、透過的で使いやすいように設計された暗号化のベストプラクティスです。AWS KMS は、カスタマー管理の CMKs に対してのみ、オプションの自動キーローテーションをサポートします。

  • バッキングキー管理。AWS KMS はキーローテーションが無効になっている状態でも、CMK のすべてのバッキングキーを保持します。CMK を削除した場合に限り、バッキングキーが削除されます。CMK を使用して暗号化する場合、AWS KMS は現在のバッキングキーを使用します。復号に CMK を使用すると、AWS KMS は暗号化に使用したバッキングキーを使用します。

  • キーローテーションの有効化と無効化カスタマー管理の CMKs で、自動キーローテーションはデフォルトで無効になっています。キーローテーションを有効化 (または再有効化) にすると、AWS KMS は自動的に有効にした日から CMK を 365 日後にローテーションし、その後は 365 日ごとに実行します。

  • 無効な CMKs。 CMK が無効になっていると AWS KMS はローテーションを実行しません。ただし、キーローテーションのステータスが変更することはなく、CMK を無効にしている場合に変更することもできません。バッキングキーが 365 日以上のもので、CMK が再び有効になると、AWS KMS はそれをすぐにローテーションし、その後は 365 日ごとに実行します。バッキングキーが 365 日以内のものである場合、AWS KMS は元のキーローテーションのスケジュールで再開します。

  • CMKs の削除の保留。 CMK の削除が保留になっていると、AWS KMS はローテーションを実行しません。キーローテーションのステータスは false に設定されています。削除が保留中の場合は変更することができません。削除をキャンセルすると、以前のキーローテーションのステータスが元に戻ります。バッキングキーが 365 日以上のものである場合、AWS KMS はそれをすぐにローテーションし、その後は 365 日ごとに実行します。バッキングキーが 365 日以内のものである場合、AWS KMS は元のキーローテーションのスケジュールで再開します。

  • AWS 管理の CMKs。 AWS 管理の CMKs のキーローテーションを管理することはできません。AWS KMS は AWS 管理の CMKs を 3 年 (1095 日) ごとに自動的にローテーションします。

  • AWS 所有のCMKs。 AWS 所有の CMKs のキーローテーションを管理することはできません。AWS が所有する CMK のキーローテーション戦略は、CMK を作成および管理する AWS サービスによって決まります。詳細については、サービスのユーザーガイドまたは開発者ガイドの「保存時の暗号化」トピックを参照してください。

  • AWS のサービス。AWS のサービスでサーバー側の暗号化に使用するカスタマー管理の CMKs で、キーの自動ローテーションを有効にすることができます。年間ローテーションは透過的で、AWS のサービスと互換性があります。

  • キーローテーションのモニタリング。 AWS KMSが AWS 管理の CMK またはカスタマー管理の CMK 対象のキーマテリアルを自動的にローテーションすると、KMS CMK Rotation イベントを Amazon CloudWatch Events に、RotateKey イベントを AWS CloudTrail ログに書き込みます。これらのレコードを使用して、CMK がローテーションされたことを確認できます。

  • サポートされていない CMK タイプ。 自動キーローテーションは次のタイプの CMKs ではサポートされていませんが、これらの CMKs は手動でローテーションできます。

キーの自動ローテーションを有効または無効にする方法

AWS KMS コンソールまたは AWS KMS API を使用して、キーの自動ローテーションを有効または無効にすることができます。また、カスタマー管理の CMK のローテーションステータスを確認できます。

キーの自動ローテーションを有効にすると、AWS KMS は有効にした日から CMK を 365 日後にローテーションし、その後は 365 日ごとにローテーションします。

キーローテーションの有効化と無効化 (コンソール)

  1. AWS マネジメントコンソール にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

  2. AWS リージョンを変更するには、ページの右上隅にあるリージョンセレクターを使用します。

  3. ナビゲーションペインで、[Customer managed keys (カスタマー管理型のキー)] を選択します。 (AWS 管理型のキーのローテーションを有効または無効にすることはできません。3 年ごとに自動的にローテーションされます)

  4. CMK のエイリアスまたは キー ID を選択します。

  5. [キーローテーション] タブを選択します。

    [キーローテーション] タブは、AWS KMS により生成されたキー素材 (オリジンAWS_KMS) を持つ対称 CMKs の詳細ページにのみ表示されます。非対称の CMKs、インポートされたキーマテリアルを持つ CMKs、またはカスタムキーストアの CMKs を自動的にローテーションすることはできません。ただし、手動でローテーションすることはできます。

  6. [この CMK を毎年自動的にローテーションする] チェックボックスをオンまたはオフにします。

    注記

    CMK が無効になっている場合や削除が保留中の場合は [この CMK を毎年自動的にローテーションします] のチェックボックスがオフになっています。これを変更することはできません。CMK を有効にするか、削除をキャンセルすると、キーローテーションのステータスが元に戻ります。詳細については、「キーの自動ローテーションの仕組み」および「キー状態: CMK への影響」を参照してください。

  7. [Save] を選択します。

キーローテーションの有効化と無効化 (AWS KMS API)

AWS Key Management Service (AWS KMS) API を使用して自動キーローテーションを有効および無効にすることができ、すべてのカスタマー管理の CMK について、現在のローテーションのステータスを確認できます。以下の例では AWS Command Line Interface (AWS CLI) を使用しますが、サポートされている任意のプログラミング言語を使用することができます。

EnableKeyRotation オペレーションは、指定した CMK の自動キーローテーションを有効にします。DisableKeyRotation オペレーションは、上記を無効化します。これらのオペレーションで CMK を識別するには、そのキー ID またはキー ARN を使用します。デフォルトでは、カスタマー管理の CMKs でのキーローテーションは無効になっています。

次の例では、指定した対称 CMK のキーローテーションを有効にし、GetKeyRotationStatus オペレーションを使用して、結果を確認します。それから、キーローテーションを無効にし、再度、GetKeyRotationStatus を使用して変更を確認します。

$ aws kms enable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab $ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyRotationEnabled": true } $ aws kms disable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab $ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyRotationEnabled": false }

手動でのキーローテーション

自動キーローテーションを有効にする代わりに、新しい CMK を作成して現在の CMK の代わりに使用する場合があるかもしれません。新しい CMK に現在の CMK とは異なる暗号化マテリアルがある場合、新しい CMK を使用すると、既存の CMK でバッキングキーを変更するのと同じ効果があります。1 つの CMK を別のものと置き換えるプロセスは、手動キーローテーションと呼ばれます。

ローテーションの頻度をコントロールできるように、手動でキーをローテーションする方がよい場合があります。また、非対称 CMKs、カスタムキーストアの CMKs、インポートされたキーマテリアルを使用する CMKs など、自動キーローテーションに適さない CMKs のための優れたソリューションです。

注記

新しい CMK の使用を開始するときに、元の CMK を有効なままにすれば、AWS KMS は元の CMK により暗号化されたデータを復号できます。データを復号するとき、KMS はデータの暗号化に使用された CMK を識別し、同じ CMK を使用して復号します。元の CMKs と新しいものの両方が有効である限り、AWS KMS はどちらの CMK によって暗号化されたデータでも復号できます。

新しい CMK は現在の CMK とは別のリソースであるため、異なるキー ID と ARN を持っています。CMKs を変更すると、アプリケーションの CMK ID または ARN への参照を更新する必要があります。エイリアスは、CMK とフレンドリ名を関連付けるので、このプロセスを容易にします。エイリアスを使用して、アプリケーションの CMK を参照します。それから、アプリケーションが使用する CMK を変更するには、エイリアスのターゲット CMK を変更します。

エイリアスのターゲット CMK を更新するには、UpdateAlias オペレーションを AWS KMS API で使用します。たとえば、このコマンドは、新しい CMK を指すように TestCMK エイリアスを更新します。オペレーションは出力を返さないため、この例では、ListAliases オペレーションを使用してエイリアスが異なる CMK と関連付けられたことを示しています。

$ aws kms list-aliases { "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestCMK", "AliasName": "alias/TestCMK", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, ] } $ aws kms update-alias --alias-name alias/TestCMK --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 $ aws kms list-aliases { "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestCMK", "AliasName": "alias/TestCMK", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, ] }