カスタマーマスターキーを削除する - AWS Key Management Service

カスタマーマスターキーを削除する

AWS Key Management Service (AWS KMS) でのカスタマーマスターキーの削除は、有害な操作であり、リスクが伴います。これは、キーマテリアルと、CMK に関連付けられるすべてのメタデータを削除し、元に戻すことはできません。CMK を削除すると、その CMK で暗号化されたデータを復号できなくなります。これは、そのデータが回復不能になることを意味します。CMK の削除は、そのキーをもう使用しないことが確実である場合にのみ行ってください。キーを使用しないことが確実でない場合は、削除ではなく、CMK の無効化を検討します。無効化した CMK は、後から使用する必要があった場合に再度有効化できますが、削除した CMK は復元できません。

CMK を削除する前に、その CMK で暗号化された暗号化テキストの数を確認することが必要な場合があります。AWS KMS は、この情報や暗号化テキストを保存しません。この情報を取得するには、CMK の過去の使用を自身で判断する必要があります。この判断に役立つガイダンスについては、「カスタマーマスターキーの過去の使用状況を確認する」を参照してください。

明示的に削除をスケジュールし、必須の待機期間が終了しない限り、AWS KMS は CMK を削除しません。

ただし、CMK を削除する理由には次のものが考えられます (複数が組み合わさる場合もあります)。

  • 不要になった CMK のキーライフサイクルを完了する

  • 使用しない CMK の維持に関連する管理オーバーヘッドやコストの発生を回避する

  • CMK リソースクォータに対してカウントされる CMK の数を減らすには

注記

AWS アカウントを終了または削除した場合、CMK にはアクセスできなくなり、それらに対して課金されることはなくなります。アカウントを終了した場合は CMK を削除するようにスケジュールする必要はありません。

カスタマーマスターキーの削除の仕組み

承認されたユーザーは、対称および非対称のカスタマーマスターキー (CMK) を削除します。手順はどちらのタイプの CMK でも同じです。

CMK の削除は有害でリスクを伴う操作であるため、AWS KMS は待機期間を設けています。AWS KMS で CMK を削除するには、キーの削除をスケジュールします。待機期間は、7 ~ 30 日の範囲で設定できます。デフォルトの待機時間は、30 日です。

削除を待機中は CMK ステータスおよびキーの状態が削除保留中になります。

待機期間の終了後、AWS KMS は CMK と関連するすべての AWS KMS データ (キーをポイントするエイリアスなど) を削除します。

キーの削除をスケジュールすると、AWS KMS は待機期間が終了する日時をレポートします。この日時は、最も早い場合でキーの削除をスケジュールした日から指定した日数が経過した時点、最も遅い場合は指定した日数が経過した時点から 24 時間後になります。たとえば、キーの削除をスケジュールして待機期間を 7 日に指定するとします。この場合、待機期間の終了は、リクエストした日時から 7~8 日後になります。待機期間の正確な終了日時は、AWS マネジメントコンソール、AWS CLI、または AWS KMS API で確認できます。

待機期間を使用して、CMK が不要であり、今後も使用することがないことを確認します。Amazon CloudWatch アラームを設定すると、待機期間中にユーザーまたはアプリケーションが CMK を使用しようとした場合に警告するようにできます。CMK を復元するには、待機期間の終了前にキーの削除をキャンセルします。待機期間の終了後は、キーの削除はキャンセルできず、AWS KMS は CMK を削除します。

非対称 CMK の削除

承認されたユーザーは、対称または非対称 CMK を削除できます。これらの CMK の削除をスケジュールする手順は、両方のタイプのキーで同じです。ただし、非対称 CMK のパブリックキーは、AWS KMS の外部でダウンロード および使用できるため、特に暗号化に使用される非対称 CMK の場合(キーの使用方法は ENCRYPT_DECRYPT)、オペレーションによりさらに大きなリスクが生じます。

  • CMK の削除をスケジュールすると、CMK のキー状態は [削除保留中] に変わり、CMK を暗号化オペレーションで使用できなくなります。ただし、削除をスケジュールしても、AWS KMS の外部にあるパブリックキーには影響しません。パブリックキーを持つユーザーは、引き続きそのパブリックキーを使ってメッセージを暗号化できます。キーの状態が変更されたという通知は受信しません。削除がキャンセルされない限り、パブリックキーで作成された暗号文は復号できません。

  • 削除が保留中の CMK を使用しようとする試行を検出するアラーム、ログ、およびその他の戦略では、AWS KMS 外部でのパブリックキーの使用を検出できません。

  • CMK が削除されると、その CMK に関連するすべての AWS KMS アクションが失敗します。ただし、パブリックキーを持つユーザーは、引き続きそのパブリックキーを使ってメッセージを暗号化できます。これらの暗号文は復号できません。

キー使用法が ENCRYPT_DECRYPT である非対称 CMK を削除する必要がある場合は、CloudTrail ログエントリを使用して、パブリックキーのダウンロードと共有が完了しているかどうかを確認します。完了している場合は、パブリックキーが AWS KMS の外部で使用されていないことを確認します。次に、CMK を無効にする(削除するのではなく)ことを検討してください。

カスタマーマスターキーの削除が AWS と統合された AWS KMS のサービスに与える影響

AWS KMS と統合された複数の AWS サービスがデータを保護しています。Amazon EBSAmazon Redshift などの一部のサービスでは、カスタマーマスターキー (CMK) を AWS KMS で使用してデータキーを生成し、このデータキーを使用してデータを暗号化します。これらのプレーンテキストデータキーは、保護対象のデータが使用されている限り、メモリ内に残ります。

CMK を削除用にスケジュールすると使用不可になりますが、これによって AWS サービスでメモリ内のデータキーを使用したデータの暗号化および復号化ができなくなることはありません。このサービスは、削除保留中あるいは削除済みの CMK の使用が必要となるまで、影響を受けません。

たとえば、次のシナリオが考えられます。

  1. 暗号化された EBS ボリュームを作成し、CMK を指定します。Amazon EBS は CMK を使用してボリュームに暗号化されたデータキーを生成するよう AWS KMS に求めます。Amazon EBS は暗号化されたデータキーをボリュームに保存します。

  2. EBS ボリュームを EC2 インスタンスにアタッチすると、Amazon EC2 は AWS KMS に CMK を使用するように要求し、EBS ボリュームの暗号化されたデータキーを復号します。メモリハイパーバイザーで Amazon EC2 によってプレーンテキストのデータキーが保存され、そのデータキーを使用して、ディスク I/O を EBS ボリュームに暗号化します。データキーは、EBS ボリュームが EC2 インスタンスにアタッチされる限り、メモリ内で維持されます。

  3. CMK の削除をスケジュールすると、使用不可となります。これによって EC2 インスタンスまたは EBS ボリュームに直ちに影響が出ることはありません。これは、Amazon EC2 が — CMK ではなく — 平文のデータキーを使用してディスク I/O を EBS ボリュームに暗号化しているためです。

    スケジュールされた時間が経過して AWS KMS が CMK を削除した場合でも、EC2 インスタンスあるいは EBS ボリュームに直ちに影響があるわけではありません。これは、Amazon EC2 が CMK ではなく、プレーンテキストデータキーを使用するためです。

  4. ただし、暗号化された EBS ボリュームが EC2 インスタンスからデタッチされると、Amazon EBS はメモリからプレーンテキストのキーを削除します。次回に暗号化された EBS ボリュームを EC2 インスタンスにアタッチすると、このアタッチは失敗します。これは、Amazon EBS がボリュームの暗号化データキーの復号化に CMK を使用できないためです。

キーの削除のスケジュールとキャンセル

次の手順は、AWS KMS で AWS マネジメントコンソール、AWS CLI、および AWS SDK for Java を使用してキーの削除をスケジュールしてキャンセルする方法を説明しています。

警告

AWS KMS でのカスタマーマスターキーの削除は、有害な操作であり、リスクが伴います。CMK が不要であり、今後も使用しないことが確実である場合以外は、削除を実行しないでください。使用しないことが確実でない場合は、削除するのではなく CMK を無効化する必要があります。

CMK を削除する前に、削除するための権限を得る必要があります。キーポリシーのみで AWS KMS 権限を指定している場合は、CMK を削除するために新しい権限を追加することが必要な場合があります。これらの権限の追加については、「キーの削除をスケジュールおよびキャンセルするためのアクセス許可を追加する」を参照してください。

キーの削除をスケジュールし、キャンセルする方法

キーの削除のスケジュールとキャンセル (コンソール)

キーの削除のスケジュールとキャンセルは、AWS マネジメントコンソール で実行できます。

キーの削除をスケジュールするには

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

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

  3. ナビゲーションペインで、[Customer managed keys (カスタマー管理型のキー)] を選択します。

  4. 削除する CMK の横にあるチェックボックスをオンにします。

  5. [Key actions (キーのアクション)]、[Schedule key deletion(キーの削除をスケジュール)] の順に選択します。

  6. 待機中に、警告、および削除のキャンセルに関する情報を読み、検討してください。削除をキャンセルする場合は、[キャンセル] を選択します。

  7. [Waiting period (in days) (待機期間 (日数))] に、日数として 7~30 の値を入力します。

  8. [Confirm you want to schedule this key for deletion in <number of days> days. (<日数> 日でこのキーの削除をスケジュールしてもよろしいですか?)] の横にあるチェックボックスをオンにします。

  9. [Schedule deletion] を選択します。

CMK ステータスが [Pending deletion (削除保留中)] に変わります。

キーの削除をキャンセルするには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

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

  4. ナビゲーションペインで、[Customer managed keys (カスタマー管理型のキー)] を選択します。

  5. 復旧する CMK の横にあるチェックボックスをオンにします。

  6. [Key actions (キーのアクション)]、[Cancel key deletion (キーの削除をキャンセル)] の順に選択します。

CMK ステータスが [Pending deletion (削除保留中)] から [Disabled (無効)] に変わります。CMK を使用するには、有効化する必要があります。

キーの削除のスケジュールとキャンセル (AWS CLI)

次の例のように、aws kms schedule-key-deletion コマンドを使用して AWS CLI からキーの削除をスケジュールします。

$ aws kms schedule-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --pending-window-in-days 10

正しく使用すると、AWS CLI は以下の例に示す出力のような出力を返します。

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": 1442102400.0 }

次の例のように、aws kms cancel-key-deletion コマンドを使用して AWS CLI からキーの削除をキャンセルします。

$ aws kms cancel-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

正しく使用すると、AWS CLI は以下の例に示す出力のような出力を返します。

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

CMK のステータスが [Pending Deletion] から [Disabled] に変わります。CMK を使用するには、有効化する必要があります。

キーの削除のスケジュールとキャンセル (AWS SDK for Java)

次の例では、AWS SDK for Java で CMK の削除をスケジュールする方法を示します。この例では、事前に AWSKMSClientkms としてインスタンス化している必要があります。

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; int PendingWindowInDays = 10; ScheduleKeyDeletionRequest scheduleKeyDeletionRequest = new ScheduleKeyDeletionRequest().withKeyId(KeyId).withPendingWindowInDays(PendingWindowInDays); kms.scheduleKeyDeletion(scheduleKeyDeletionRequest);

次の例では、AWS SDK for Java でキーの削除をキャンセルする方法を示します。この例では、事前に AWSKMSClientkms としてインスタンス化している必要があります。

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"; CancelKeyDeletionRequest cancelKeyDeletionRequest = new CancelKeyDeletionRequest().withKeyId(KeyId); kms.cancelKeyDeletion(cancelKeyDeletionRequest);

CMK のステータスが [Pending Deletion] から [Disabled] に変わります。CMK を使用するには、有効化する必要があります。

キーの削除をスケジュールおよびキャンセルするためのアクセス許可を追加する

IAM ポリシーを使用して AWS KMS 権限を許可している場合、IAM 管理者アクセス (AWS) または "Action": "*" フルアクセス (AWS KMS) を持つすべての "Action": "kms:*" ユーザーとロールは、すでに AWS KMS CMK のキー削除をスケジュールおよびキャンセルすることができます。キーポリシーのみで AWS KMS 権限を許可している場合は、IAM ユーザーとロールに CMK の削除を許可するために新しい権限を追加することが必要な場合があります。これらの権限を追加する方法については、次のステップを参照してください。

次の手順では、AWS マネジメントコンソール または AWS CLI を使用してキーポリシーに権限を追加する方法を説明します。

キーの削除をスケジュールおよびキャンセルする権限を追加する方法

キーの削除をスケジュールおよびキャンセルするためのアクセス許可を追加する (コンソール)

AWS マネジメントコンソール を使用すると、キーの削除をスケジュールおよびキャンセルする権限を追加できます。

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

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

  3. ナビゲーションペインで、[Customer managed keys (カスタマー管理型のキー)] を選択します。

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

  5. [Key policy (キーポリシー)] セクションの [Key deletion (キーの削除)] で、[Allow key administrators to delete this key (キーの管理者がこのキーを削除できるようにします。)] をオンにして、[変更の保存] を選択します。

    注記

    [Allow key administrators to delete this key (キーの管理者がこのキーを削除できるようにします。)] オプションが表示されない場合は、通常、AWS KMS API を使用してこのキーポリシーを変更したことを意味します。この場合は、キーポリシードキュメントを手動で更新する必要があります。kms:ScheduleKeyDeletion アクセス許可および kms:CancelKeyDeletion アクセス許可をキーポリシーのキー管理者ステートメント ("Sid": "Allow access for Key Administrators") に追加した後、[変更の保存] を選択します。

キーの削除をスケジュールおよびキャンセルするためのアクセス許可を追加する (AWS CLI)

AWS Command Line Interface を使用すると、キーの削除をスケジュールおよびキャンセルする権限を追加できます。

キーの削除をスケジュールおよびキャンセルする権限を追加するには

  1. aws kms get-key-policy コマンドを使用して既存のキーポリシーを再取得し、ポリシードキュメントをファイルに保存します。

  2. 任意のテキストエディタでポリシードキュメントを開き、キー管理者にアクセス許可を追加するポリシーステートメント ("Sid": "Allow access for Key Administrators" を使用するポリシーステートメントなど) に kms:ScheduleKeyDeletion アクセス許可および kms:CancelKeyDeletion アクセス許可を追加します。その後、ファイルを保存します。次の例は、これらの 2 つの権限を持つポリシーステートメントを示しています。

    { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }
  3. aws kms put-key-policy コマンドを使用してキーポリシーを CMK に適用します。