このドキュメントでは、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
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
鍵バージョンを削除する
鍵バージョンが DESTROYED、IMPORT_FAILED、または GENERATION_FAILED の状態の場合、その鍵バージョンを削除できます。鍵バージョンがインポートされた場合、インポートが失敗した場合にのみ削除できます。
鍵バージョンを完全に削除する手順は次のとおりです。
gcloud
鍵バージョンを削除するには、次のコマンドを実行します。
gcloud kms keys versions delete KEY_VERSION \
--location=LOCATION \
--keyring=KEY_RING \
--key=KEY_NAME
次のように置き換えます。
KEY_VERSION: 完全に削除する鍵バージョンの番号。指定された鍵バージョンは、DESTROYED、IMPORT_FAILED、またはGENERATION_FAILED状態である必要があります。LOCATION: キーリングの Cloud KMS のロケーションKEY_RING: 鍵を含むキーリングの名前。KEY_NAME: 完全に削除する鍵バージョンを含む鍵の名前。
REST
鍵バージョンを削除するには、
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: 完全に削除する鍵バージョンの番号。指定された鍵バージョンは、DESTROYED、IMPORT_FAILED、またはGENERATION_FAILED状態である必要があります。
コマンドの出力は
Operationを返します。次のステップでは、オペレーションのnameが必要になります。鍵バージョンが削除されたことを確認するには、
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: 前のメソッドから返されたオペレーションの名前。
このメソッドの出力で
doneがtrueであることが示されたら、オペレーションは完了しています。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
キーを削除するには、
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が必要になります。キーが削除されたことを確認するには、
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: 前のメソッドで返されたオペレーションの名前。
このメソッドの出力で
doneがtrueと表示されたら、オペレーションは完了しています。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: 表示するリソースの名前。
このメソッドの出力には、resourceType、deleteTime、削除されたリソースの完全なリソース識別子が含まれます。
次のステップ
- 鍵バージョンの破棄と復元の詳細を確認する。