AWS Key Management Service
開発者ガイド

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

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

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

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

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

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

  • 制限に対してカウントされる CMK の数を減らす

注記

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

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

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

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

  • 削除が保留中の状態にある CMK を暗号化オペレーションで使用することはできません。

  • AWS KMS は削除が保留されている 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 を削除します。

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

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 マネジメントコンソール で実行できます。

注記

AWS KMS は最近、KMS リソースを整理や管理が簡単にできる、新しいコンソールを導入しました。https://console.aws.amazon.com/kms でお試しいただくことをお勧めします。コンソールまたはこのページの右下隅にある、[Feedback (フィードバック)] を選択して、フィードバックをお知らせください。

新しいコンソールに精通できるように、元のコンソールは短期間ながら引き続き参照できます。元のコンソールを使用するには、https://console.aws.amazon.com/iam/home#encryptionKeys に移動します。

キーの削除をスケジュールし、キャンセルするには (新しいコンソール)

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

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

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

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

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

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

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

  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. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

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

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

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

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

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

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

キーの削除をスケジュールし、キャンセルするには (元のコンソール)

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

  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/iam/home#encryptionKeys に移動します。

  2. [リージョン] で、AWS の該当するリージョンを選択します。ナビゲーションバー (右上) にあるリージョンセレクタを使用しないでください。

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

  4. [Key Actions]、[Schedule key deletion] の順に選択します。

  5. [Waiting period (in days)] に、日数として 7 ~ 30 の値を入力します。[Schedule deletion] を選択します。

CMK ステータスが [Pending Deletion] に変わります。

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

  1. https://console.aws.amazon.com/iam/home#encryptionKeys で、元の AWS KMS コンソールに移動します。

  2. [リージョン] で、AWS の該当するリージョンを選択します。ナビゲーションバー (右上) にあるリージョンセレクタを使用しないでください。

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

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

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

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

権限を追加し、キーの削除をスケジュールしてキャンセルする (コンソール)

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

注記

AWS KMS は最近、KMS リソースを整理や管理が簡単にできる、新しいコンソールを導入しました。https://console.aws.amazon.com/kms でお試しいただくことをお勧めします。コンソールまたはこのページの右下隅にある、[Feedback (フィードバック)] を選択して、フィードバックをお知らせください。

新しいコンソールに精通できるように、元のコンソールは短期間ながら引き続き参照できます。元のコンソールを使用するには、https://console.aws.amazon.com/iam/home#encryptionKeys に移動します。

キーの削除をスケジュールおよびキャンセルする権限を追加するには (新しいコンソール)
  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

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

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

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

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

  6. [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") に追加した後、[変更の保存] を選択します。

キーの削除をスケジュールおよびキャンセルする権限を追加するには (元のコンソール)
  1. AWS マネジメントコンソール にサインインし、https://console.aws.amazon.com/iam/home#encryptionKeys に移動します。

  2. [リージョン] で、AWS の該当するリージョンを選択します。ナビゲーションバー (右上) にあるリージョンセレクタを使用しないでください。

  3. 権限を変更する CMK のエイリアスを選択します。

  4. [Key Policy] セクションの [Key Deletion] で、[Allow key administrators to delete this key]、[Save Changes] の順に選択します。

    注記

    [Allow key administrators to delete this key] オプションが表示されない場合は、以前に AWS KMS API を使用してこのキーポリシーを変更している可能性があります。この場合は、キーポリシードキュメントを手動で更新する必要があります。kms:ScheduleKeyDeletion 権限および kms:CancelKeyDeletion 権限をキーポリシーのキー管理者ステートメント ("Sid": "Allow access for Key Administrators") に追加した後、[Save Changes] を選択します。

権限を追加し、キーの削除をスケジュールしてキャンセルする (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 に適用します。