Cloud KMS リソースを削除する

このドキュメントでは、Cloud Key Management Service の鍵と鍵バージョンを完全に削除する方法について説明します。この操作は元に戻せません。

Cloud KMS では、破棄と削除は異なるオペレーションです。

  • 破棄: 鍵バージョンを永続的に無効にします。指定された破棄期間の後に、基盤となる鍵マテリアルを不可逆的に破棄します。DESTROYED 状態の鍵バージョンは、暗号オペレーションに使用できず、課金もされなくなります。データの暗号化に使用された鍵バージョンを破棄して、完全に復元できないようにするデータを暗号シュレッダーにかけることができます。破棄された鍵バージョンは、Cloud KMS リソースのリストに引き続き含まれます。

  • 削除: Google Cloud コンソール、Google Cloud CLI、Cloud Key Management Service API、クライアント ライブラリの Cloud KMS リソースのリストから、キーまたはキー バージョンを削除します。多くの鍵またはアクティブでない鍵バージョンがあるプロジェクトの場合、削除すると検索とリストのオペレーションが効率化されます。削除された CryptoKey 名は再利用できません。再利用できない削除済み CryptoKey 名のリストを表示するには、retiredResources.list メソッドを使用します。

始める前に

Cloud KMS リソースの削除と表示に必要な権限を取得するには、鍵に対する Cloud KMS 管理者 roles/cloudkms.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

この事前定義ロールには、Cloud KMS リソースの削除と表示に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Cloud KMS リソースを削除して表示するには、次の権限が必要です。

  • 鍵バージョンを削除するには: cloudkms.cryptoKeyVersions.delete
  • 鍵を削除するには: cloudkms.cryptoKeys.delete
  • 削除されたリソースを表示するには:
    • cloudkms.retiredResources.get
    • cloudkms.retiredResources.list

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

鍵バージョンを削除する

鍵バージョンが DESTROYEDIMPORT_FAILED、または GENERATION_FAILED の状態の場合、その鍵バージョンを削除できます。鍵バージョンがインポートされた場合、インポートが失敗した場合にのみ削除できます。

鍵バージョンを完全に削除する手順は次のとおりです。

gcloud

鍵バージョンを削除するには、次のコマンドを実行します。

gcloud kms keys versions delete KEY_VERSION \
    --location=LOCATION \
    --keyring=KEY_RING \
    --key=KEY_NAME

次のように置き換えます。

  • KEY_VERSION: 完全に削除する鍵バージョンの番号。指定された鍵バージョンは、DESTROYEDIMPORT_FAILED、または GENERATION_FAILED 状態である必要があります。
  • LOCATION: キーリングの Cloud KMS のロケーション
  • KEY_RING: 鍵を含むキーリングの名前。
  • KEY_NAME: 完全に削除する鍵バージョンを含む鍵の名前。

REST

  1. 鍵バージョンを削除するには、cryptoKeyVersions.delete メソッドを呼び出します。このメソッドは、キー バージョンが削除されたことを確認するためにポーリングできる長時間実行オペレーションを返します。

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION" \
    --request "DELETE" \
    --header "authorization: Bearer TOKEN"
    

    次のように置き換えます。

    • PROJECT_ID: キーリングを含むプロジェクトの ID。
    • LOCATION: キーリングの Cloud KMS のロケーション
    • KEY_RING: 鍵を含むキーリングの名前。
    • KEY_NAME: 完全に削除する鍵バージョンを含む鍵の名前。
    • KEY_VERSION: 完全に削除する鍵バージョンの番号。指定された鍵バージョンは、DESTROYEDIMPORT_FAILED、または GENERATION_FAILED 状態である必要があります。

    コマンドの出力は Operation を返します。次のステップでは、オペレーションの name が必要になります。

  2. 鍵バージョンが削除されたことを確認するには、operations.get メソッドを呼び出します。

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_NAME" \
        --request "GET" \
        --header "authorization: Bearer TOKEN"
    

    次のように置き換えます。

    • PROJECT_ID: キーリングを含むプロジェクトの ID。
    • LOCATION: キーリングの Cloud KMS のロケーション
    • OPERATION_NAME: 前のメソッドから返されたオペレーションの名前。

    このメソッドの出力で donetrue であることが示されたら、オペレーションは完了しています。error が示されていない場合、キー バージョンは完全に削除されています。

キーを削除する

次の条件を満たしている場合は、キーを削除できます。

  • 鍵に、まだ削除されていない鍵バージョンが含まれていません。
  • 鍵に自動鍵ローテーションがスケジュールされていない。
  • 鍵が Cloud KMS Autokey によって作成されていない。

鍵を完全に削除する手順は次のとおりです。

gcloud

鍵を削除するには、次のコマンドを実行します。

gcloud kms keys delete KEY_NAME \
    --location=LOCATION \
    --keyring=KEY_RING

次のように置き換えます。

  • KEY_NAME: 完全に削除する鍵の名前。鍵には、まだ削除されていない鍵バージョンが含まれておらず、Autokey によって作成された鍵であってはなりません。
  • LOCATION: キーリングの Cloud KMS のロケーション
  • KEY_RING: 鍵を含むキーリングの名前。

REST

  1. キーを削除するには、cryptoKey.delete メソッドを呼び出します。このメソッドは、キーが削除されたことを確認するためにポーリングできる長時間実行オペレーションを返します。

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME" \
    --request "DELETE" \
    --header "authorization: Bearer TOKEN"
    

    次のように置き換えます。

    • PROJECT_ID: キーリングを含むプロジェクトの ID。
    • LOCATION: キーリングの Cloud KMS のロケーション
    • KEY_RING: 鍵を含むキーリングの名前。
    • KEY_NAME: 完全に削除する鍵の名前。鍵には、まだ削除されていない鍵バージョンが含まれておらず、Autokey によって作成された鍵であってはなりません。

    コマンドの出力は Operation を返します。次のステップでは、オペレーションの name が必要になります。

  2. キーが削除されたことを確認するには、operations.get メソッドを呼び出します。

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_NAME" \
        --request "GET" \
        --header "authorization: Bearer TOKEN"
    

    次のように置き換えます。

    • PROJECT_ID: キーリングを含むプロジェクトの ID。
    • LOCATION: キーリングの Cloud KMS のロケーション
    • OPERATION_NAME: 前のメソッドで返されたオペレーションの名前。

    このメソッドの出力で donetrue と表示されたら、オペレーションは完了しています。error が示されていない場合、キーは完全に削除されています。

廃止されたリソースの名前を表示する

削除されたキーの名前は、同じGoogle Cloud プロジェクトで再利用できません。これにより、2 つの異なるキーが同じリソース ID を持つことを防ぎます。削除された鍵の名前は retiredResources オブジェクトに保存されます。retiredResources をクエリして、新しい Cloud KMS リソースに再利用できない名前を表示できます。

廃止されたすべてのリソースのリストを表示する手順は次のとおりです。

gcloud

次のコマンドを実行します。

gcloud kms retired-resources list \
    --location=LOCATION

次のように置き換えます。

  • LOCATION: 廃止されたリソースを表示するロケーション。

REST

retiredResources.list メソッドを使用します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/retiredResources/" \
    --request "GET" \
    --header "authorization: Bearer TOKEN"

次のように置き換えます。

  • PROJECT_ID: 廃止されたリソースを表示するプロジェクトの識別子。
  • LOCATION: 廃止されたリソースを表示するロケーション。

個々の廃止されたリソースのメタデータを表示する手順は次のとおりです。

gcloud

次のコマンドを実行します。

gcloud kms retired-resources describe RETIRED_RESOURCE \
    --location=LOCATION

次のように置き換えます。

  • RETIRED_RESOURCE: 表示するリソースの名前。
  • LOCATION: 廃止されたリソースを表示するロケーション。

REST

retiredResources.get メソッドを使用します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/retiredResources/RETIRED_RESOURCE" \
    --request "GET" \
    --header "authorization: Bearer TOKEN"

次のように置き換えます。

  • PROJECT_ID: 廃止されたリソースを表示するプロジェクトの識別子。
  • LOCATION: 廃止されたリソースを表示するロケーション。
  • RETIRED_RESOURCE: 表示するリソースの名前。

このメソッドの出力には、resourceTypedeleteTime、削除されたリソースの完全なリソース識別子が含まれます。

次のステップ