AWS Key Management Service
開発者ガイド

カスタマーマスターキーをローテーションする

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

カスタマー管理の 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 のキーマテリアルをローテーションするのと同じ効果があり、多くの場合、手動キーローテーションとみなされます。キーローテーションのスケジュールを制御する場合は、手動ローテーションすることをお勧めします。また、これはインポートされたキーマテリアルで CMK をローテーションする方法でもあります。

キーローテーションの詳細

顧客管理の CMK のローテーションには、追加の月額料金が発生する可能性があります。詳細については、「AWS Key Management Service 料金表」を参照してください。バッキングキーと更新の詳細については、「KMS 暗号化の詳細」ホワイトペーパーを参照してください。

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

AWS KMS でのキーローテーションは暗号化のベストプラクティスで、透過的で簡単に使用できるように設計されています。

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

     

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

     

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

     

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

     

  • カスタムキーストアでの CMK カスタムキーストアの CMK では自動キーローテーションを使用できません ([Origin] フィールドの値は [AWS_CloudHSM] です)。ただし、これらの CMK を手動で回転することはできます

     

  • インポート済み CMK インポートされたキーマテリアル ([Origin] フィールドの値が [External]) を持つ CMK では自動キーローテーションを使用できません。ただし、これらの CMK は手動でローテーションできます

     

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

     

  • キーローテーションのログ記録。 AWS KMS が CMK をローテーションすると、KMS CMK ローテーションイベントを Amazon CloudWatch Events に書き込みます。このイベントを使用して、CMK がローテーションされたことを確認できます。

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

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

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

キーローテーションの有効化と無効化 (Console)

注記

AWS KMS recently introduced a new console that makes it easier for you to organize and manage your KMS resources. It is available in all AWS Regions that AWS KMS supports except for AWS GovCloud (US-East) and AWS GovCloud (US-West). We encourage you to try the new AWS KMS console at https://console.aws.amazon.com/kms.

The original console will remain available for a brief period to give you time to familiarize yourself with the new one. To use the original console, choose Encryption Keys in the IAM console or go to https://console.aws.amazon.com/iam/home?#/encryptionKeys. Please share your feedback by choosing Feedback in either console or in the lower-right corner of this page.

キーローテーションの有効化と無効化 (new console)
  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. 左のナビゲーションペインで、暗号化キーを選択します。

  3. フィルタ で、AWS の該当するリージョンを選択します。

  4. In the navigation pane, choose Customer managed keys. (AWS 管理型のキーのローテーションを有効または無効にすることはできません。3 年ごとに自動的にローテーションされます)

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

  6. [General configuration (一般設定)] で [Key rotation (キーローテーション)] タブを選択します。

    CMK がキーマテリアルなしで作成された場合 ([Origin] が [EXTERNAL] の場合)、キーローテーションタブはありません。これらの CMK は自動的には回転できませんが、手動で回転することができます

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

    注記

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

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

キーローテーションの有効化と無効化 (original console)
  1. Sign in to the AWS マネジメントコンソール and go to https://console.aws.amazon.com/iam/home?#/encryptionKeys.

  2. For Region, choose the appropriate AWS Region. Do not use the region selector in the navigation bar (top right corner).

  3. 詳細を表示する CMK のエイリアスを選択します。

    注記

    オレンジ色の AWS アイコンで表示されている AWS 管理の CMK を編集することはできません。

  4. ページの [Key Rotation] セクションでコントロールを使用します。

    注記

    CMK が無効になっている場合や削除が保留中の場合は [Key Rotation] のチェックボックスがオフになっています。これを変更することはできません。これは、CMK が無効になっている場合や削除が保留中の場合は、AWS KMS が CMK のローテーションを実行できないことを示しています。CMK を再び有効にしたり削除をキャンセルすると、キーローテーションのステータスが元に戻ります。詳細については、「自動キーローテーションの仕組み」および「キーステータスがカスタマーマスターキーの使用に与える影響」を参照してください。

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

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

EnableKeyRotation オペレーションは、指定した CMK の自動キーローテーションを有効にします。DisableKeyRotation オペレーションは、上記を無効化します。CMK を識別するには、そのキー ID、キー ARN、エイリアス名、またはエイリアス ARN を使用します。デフォルトでは、顧客管理の CMK でのキーローテーションは無効になっています。

次の例では、指定した 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 を別のものと置き換えるプロセスは、手動キーローテーションと呼ばれます。

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

注記

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

新しい CMK は現在の CMK とは別のリソースであるため、異なるキー ID と ARN を持っています。CMK を変更すると、アプリケーションの 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" }, ] }