Schlüsselversionen löschen und wiederherstellen

Auf dieser Seite erfahren Sie, wie Sie eine Schlüsselversion für Cloud Key Management Service als permanente Zerstörung. In Cloud KMS ist das von Ihnen verwendete kryptografische Schlüsselmaterial , um Daten zu verschlüsseln, zu entschlüsseln, zu signieren und zu prüfen, ob sie in einer Schlüsselversion gespeichert sind. Ein Schlüssel hat keine oder mehr Schlüsselversionen. Wenn Sie einen Schlüssel rotieren, erstellen Sie einen neuen Schlüssel Version.

Das Löschen einer Schlüsselversion bedeutet, dass das Schlüsselmaterial dauerhaft gelöscht wird. Wenn Sie eine Schlüsselversion löschen, werden andere Details wie der Schlüsselname und der Schlüssel gelöscht Versionsnummern nicht gelöscht werden. Nach dem Löschen eines Schlüssels werden verschlüsselte Daten mit der Schlüsselversion kann nicht entschlüsselt werden.

Da die Schlüssellöschung irreversibel ist, können Sie in Cloud KMS Schlüsselversionen sofort löschen. Stattdessen planen Sie eine Schlüsselversion für Zerstörung. Die Schlüsselversion bleibt im Status zum Löschen vorgemerkt. für eine konfigurierbare Zeit. Während des Löschvorgangs können Sie Folgendes tun: eine Schlüsselversion wiederherstellen, um das Löschen abzubrechen.

Standardmäßig ist eine Dauer von 30 Tagen für das Löschen geplant. Sie können einen Benutzerdefiniert mit Löschdauer für einen Schlüssel während des Schlüssels geplant . Ihre Organisation kann eine Mindestdauer für das Löschen vorgemerkt, indem Sie die Mindestanzahl für das Löschen Beschränkung der geplanten Dauer pro Schlüssel in Ihren Organisationsrichtlinien.

Sie können den Zugriff auf den Schlüssel auch mithilfe von Identity and Access Management (IAM) verwalten. IAM-Vorgänge sind innerhalb von Sekunden konsistent. Weitere Informationen finden Sie unter IAM verwenden.

Sie können auch eine Schlüsselversion vorübergehend deaktivieren. Mi. empfehlen, Schlüsselversionen zu deaktivieren, bevor Sie sie zum Löschen vormerken: wie Sie dafür sorgen, dass der Schlüssel sicher zerstört werden kann. Je nach Ihren Organisationsrichtlinien müssen Sie möglicherweise einen Schlüssel deaktivieren , bevor Sie sie zum Löschen vormerken können. Weitere Informationen zu das Löschen von Schlüsselversionen mithilfe von Organisationsrichtlinien steuern, siehe Steuern Löschen von Schlüsselversionen

Im weiteren Verlauf dieses Themas wird weil der Schlüssel gelöscht wird, auch wenn er nicht sofort gelöscht wird.

Hinweise

Die Risiken verstehen

Das Löschen einer Schlüsselversion ist ein dauerhafter Vorgang. Löschen einer Schlüsselversion, die weiterhin benötigt wird, birgt folgende Risiken:

  • Dienstausfall: Wenn Sie einen Schlüssel löschen, der zum Starten eines Containers erforderlich ist oder Instanz, können Ihre Dienste oder Anwendungen nicht mehr verfügbar sein.

  • Dauerhafter Datenverlust: Wenn Sie einen Schlüssel löschen, der zum Verschlüsseln von Daten verwendet wurde, dass die Daten nicht mehr verfügbar sind. Daten, die mit einem Schlüssel verschlüsselt wurden, der gelöscht wird, gilt als kryptografisch geschreddert. In einigen Fällen ist das Löschen eines Schlüssels können verschlüsselte Ressourcen dauerhaft gelöscht werden.

  • Gesetzes- oder Compliance-Probleme: Wenn Sie einen Schlüssel löschen, der für Auf Daten zugreifen, für die eine Aufbewahrungsdauer vor dieser Aufbewahrungsdauer gilt abgeschlossen ist, verstoßen Sie möglicherweise gegen Vorschriften oder Compliance. Anforderung.

Erforderliche Rollen

Um die Berechtigungen zu erhalten, die Sie zum Löschen und Wiederherstellen von Schlüsselversionen benötigen, bitten Sie Ihren Administrator, Ihnen Die IAM-Rolle Cloud KMS Admin (roles/cloudkms.admin) für den Schlüssel. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Prüfen, ob die Schlüsselversion verwendet wird

Bevor Sie eine Schlüsselversion löschen, führen Sie die folgenden Schritte aus, um festzustellen, die Schlüsselversion verwendet:

  1. Rufen Sie Details zum Tracking der Schlüsselnutzung für den Schlüssel auf. Wenn Ressourcen durch die Schlüsselversion geschützt sind, die Sie löschen möchten, mit einer anderen Schlüsselversion neu verschlüsseln.

  2. Aktivieren Sie Logs für alle Dienste oder Anwendungen, die den Schlüssel verwenden könnten Version.

  3. Aktivieren Sie die Logs für das Cloud KMS-Projekt, das den Schlüssel enthält.

  4. Deaktivieren Sie die Schlüsselversion. Schlüssel deaktivieren version verhindert, dass die Schlüsselversion verwendet wird. Mit der Schlüsselversion deaktiviert, schlagen alle Versuche, die Schlüsselversion zu verwenden, fehl.

  5. Überwachen Sie die Logs, bis Sie sicher sind, dass keine Anwendung oder kein Dienst mehr verfügbar ist. hängt von der deaktivierten Schlüsselversion ab. Wenn Fehler auf „Fehlgeschlagen“ hinweisen Zugriff auf die Schlüsselversion und die zu verwendende Anwendung oder Ressource konfigurieren eine andere Schlüsselversion.

    Die Zeit, die Sie für das Monitoring von Logs benötigen, bevor Sie ein Schlüsselversion hängt vom Schlüsseltyp, seinem Nutzungsmuster und Empfindlichkeitsstufe. Bevor Sie beispielsweise eine Schlüsselversion löschen, die verwendet wird, in einem Prozess, der vierteljährlich ausgeführt wird, lassen Sie die Schlüsselversion bis dahin deaktiviert. abgeschlossen wird.

  6. Prüfen Sie die Nutzung des Schlüssels anhand der anwendbaren Compliance-Anforderungen. Für die Schlüsselversion und die damit verschlüsselten Daten können beispielsweise die Aufbewahrungsdauer von Daten.

Anhand dieser Schritte können Sie feststellen, ob ein Schlüssel möglicherweise noch benötigt wird. Allerdings können sie nicht garantieren, dass eine Schlüsselversion nicht mehr benötigt wird. Meine Organisation Verfahren und Richtlinien implementieren, die sicherstellen, dass die Schlüsselversion Zerstörung keine negativen Auswirkungen hat.

Schlüsselversion löschen

Sie können eine aktivierte oder deaktivierte Schlüsselversion löschen.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Key Management (Schlüsselverwaltung) an.

    Key Management aufrufen

  2. Klicken Sie das Kästchen neben der Schlüsselversion an, deren Löschen Sie planen möchten.

  3. Klicken Sie im Header auf Löschen.

  4. Geben Sie in der Bestätigungsaufforderung den Schlüsselnamen ein und klicken Sie auf Löschung planen.

gcloud

Um Cloud KMS in der Befehlszeile zu verwenden, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf die neueste Version durch.

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

Ersetzen Sie Folgendes:

  • KEY_VERSION: Versionsnummer der gewünschten Schlüsselversion zu zerstören.
  • KEY_NAME: der Name des Schlüssels, für den Sie einen Schlüssel löschen möchten Version.
  • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält.
  • LOCATION: der Cloud KMS-Standort des Schlüsselbunds.

Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help aus.

C#

Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.


using Google.Cloud.Kms.V1;

public class DestroyKeyVersionSample
{
    public CryptoKeyVersion DestroyKeyVersion(
      string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring", string keyId = "my-key", string keyVersionId = "123")
    {
        // Create the client.
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        // Build the key version name.
        CryptoKeyVersionName keyVersionName = new CryptoKeyVersionName(projectId, locationId, keyRingId, keyId, keyVersionId);

        // Call the API.
        CryptoKeyVersion result = client.DestroyCryptoKeyVersion(keyVersionName);

        // Return the result.
        return result;
    }
}

Go

Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.

import (
	"context"
	"fmt"
	"io"

	kms "cloud.google.com/go/kms/apiv1"
	"cloud.google.com/go/kms/apiv1/kmspb"
)

// destroyKeyVersion marks a specified key version for deletion. The key can be
// restored if requested within 24 hours.
func destroyKeyVersion(w io.Writer, name string) error {
	// name := "projects/my-project/locations/us-east1/keyRings/my-key-ring/cryptoKeys/my-key/cryptoKeyVersions/123"

	// Create the client.
	ctx := context.Background()
	client, err := kms.NewKeyManagementClient(ctx)
	if err != nil {
		return fmt.Errorf("failed to create kms client: %w", err)
	}
	defer client.Close()

	// Build the request.
	req := &kmspb.DestroyCryptoKeyVersionRequest{
		Name: name,
	}

	// Call the API.
	result, err := client.DestroyCryptoKeyVersion(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to destroy key version: %w", err)
	}
	fmt.Fprintf(w, "Destroyed key version: %s\n", result)
	return nil
}

Java

Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Cloud KMS Java SDK installieren.

import com.google.cloud.kms.v1.CryptoKeyVersion;
import com.google.cloud.kms.v1.CryptoKeyVersionName;
import com.google.cloud.kms.v1.KeyManagementServiceClient;
import java.io.IOException;

public class DestroyKeyVersion {

  public void destroyKeyVersion() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String locationId = "us-east1";
    String keyRingId = "my-key-ring";
    String keyId = "my-key";
    String keyVersionId = "123";
    destroyKeyVersion(projectId, locationId, keyRingId, keyId, keyVersionId);
  }

  // Schedule destruction of the given key version.
  public void destroyKeyVersion(
      String projectId, String locationId, String keyRingId, String keyId, String keyVersionId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only
    // needs to be created once, and can be reused for multiple requests. After
    // completing all of your requests, call the "close" method on the client to
    // safely clean up any remaining background resources.
    try (KeyManagementServiceClient client = KeyManagementServiceClient.create()) {
      // Build the key version name from the project, location, key ring, key,
      // and key version.
      CryptoKeyVersionName keyVersionName =
          CryptoKeyVersionName.of(projectId, locationId, keyRingId, keyId, keyVersionId);

      // Destroy the key version.
      CryptoKeyVersion response = client.destroyCryptoKeyVersion(keyVersionName);
      System.out.printf("Destroyed key version: %s%n", response.getName());
    }
  }
}

Node.js

Um diesen Code auszuführen, richten Sie zuerst eine Node.js-Entwicklungsumgebung ein und installieren Sie das Cloud KMS Node.js SDK.

//
// TODO(developer): Uncomment these variables before running the sample.
//
// const projectId = 'my-project';
// const locationId = 'us-east1';
// const keyRingId = 'my-key-ring';
// const keyId = 'my-key';
// const versionId = '123';

// Imports the Cloud KMS library
const {KeyManagementServiceClient} = require('@google-cloud/kms');

// Instantiates a client
const client = new KeyManagementServiceClient();

// Build the key version name
const versionName = client.cryptoKeyVersionPath(
  projectId,
  locationId,
  keyRingId,
  keyId,
  versionId
);

async function destroyKeyVersion() {
  const [version] = await client.destroyCryptoKeyVersion({
    name: versionName,
  });

  console.log(`Destroyed key version: ${version.name}`);
  return version;
}

return destroyKeyVersion();

PHP

Um diesen Code auszuführen, müssen Sie zuerst PHP in Google Cloud verwenden lernen und das Cloud KMS PHP SDK installieren.

use Google\Cloud\Kms\V1\Client\KeyManagementServiceClient;
use Google\Cloud\Kms\V1\DestroyCryptoKeyVersionRequest;

function destroy_key_version(
    string $projectId = 'my-project',
    string $locationId = 'us-east1',
    string $keyRingId = 'my-key-ring',
    string $keyId = 'my-key',
    string $versionId = '123'
) {
    // Create the Cloud KMS client.
    $client = new KeyManagementServiceClient();

    // Build the key version name.
    $keyVersionName = $client->cryptoKeyVersionName($projectId, $locationId, $keyRingId, $keyId, $versionId);

    // Call the API.
    $destroyCryptoKeyVersionRequest = (new DestroyCryptoKeyVersionRequest())
        ->setName($keyVersionName);
    $destroyedVersion = $client->destroyCryptoKeyVersion($destroyCryptoKeyVersionRequest);
    printf('Destroyed key version: %s' . PHP_EOL, $destroyedVersion->getName());

    return $destroyedVersion;
}

Python

Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Cloud KMS Python SDK installieren.

from google.cloud import kms


def destroy_key_version(
    project_id: str, location_id: str, key_ring_id: str, key_id: str, version_id: str
) -> kms.CryptoKeyVersion:
    """
    Schedule destruction of the given key version.

    Args:
        project_id (string): Google Cloud project ID (e.g. 'my-project').
        location_id (string): Cloud KMS location (e.g. 'us-east1').
        key_ring_id (string): ID of the Cloud KMS key ring (e.g. 'my-key-ring').
        key_id (string): ID of the key to use (e.g. 'my-key').
        version_id (string): ID of the key version to destroy (e.g. '1').

    Returns:
        CryptoKeyVersion: The version.

    """

    # Create the client.
    client = kms.KeyManagementServiceClient()

    # Build the key version name.
    key_version_name = client.crypto_key_version_path(
        project_id, location_id, key_ring_id, key_id, version_id
    )

    # Call the API.
    destroyed_version = client.destroy_crypto_key_version(
        request={"name": key_version_name}
    )
    print(f"Destroyed key version: {destroyed_version.name}")
    return destroyed_version

Ruby

Um diesen Code auszuführen, müssen Sie zuerst eine Ruby-Entwicklungsumgebung einrichten und das Cloud KMS Ruby SDK installieren.

# TODO(developer): uncomment these values before running the sample.
# project_id  = "my-project"
# location_id = "us-east1"
# key_ring_id = "my-key-ring"
# key_id      = "my-key"
# version_id  = "123"

# Require the library.
require "google/cloud/kms"

# Create the client.
client = Google::Cloud::Kms.key_management_service

# Build the key version name.
key_version_name = client.crypto_key_version_path project:            project_id,
                                                  location:           location_id,
                                                  key_ring:           key_ring_id,
                                                  crypto_key:         key_id,
                                                  crypto_key_version: version_id

# Call the API.
destroyed_version = client.destroy_crypto_key_version name: key_version_name
puts "Destroyed key version: #{destroyed_version.name}"

API

In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.

Löschen Sie eine Schlüsselversion, indem Sie die Methode CryptoKeyVersions.destroy .

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

Wenn Sie eine Schlüsselversion nicht löschen können, verlangt Ihre Organisation möglicherweise das Schlüsselversionen müssen vor dem Löschen deaktiviert werden. Schlüsselversion deaktivieren bevor sie zerstört werden.

Wenn Sie die Löschanfrage senden, ändert sich der Status der Schlüsselversion zu zum Löschen vorgemerkt. Nachdem der Schlüssel konfiguriert Löschungsdauer geplant hat bestanden, wird der Status der Schlüsselversion gelöscht, d. h. Das logische Löschen des Schlüsselmaterials Systeme wurde gestartet und das Schlüsselmaterial kann vom Kunden nicht wiederhergestellt werden. Schlüssel Inhalte können bis zu 45 Tage ab dem zum geplanten Löschen vorgemerkt.

Wie Sie eine Benachrichtigung erhalten, wenn eine Schlüsselversion zum Löschen geplant ist, erfahren Sie unter Cloud Monitoring mit Cloud KMS verwenden.

Gelöschte Schlüsselversionen werden nicht in Rechnung gestellt.

Externe Schlüssel löschen

So entfernen Sie die Verknüpfung zwischen einem Cloud EKM-Schlüssel und einem externen Schlüssel haben, können Sie die Schlüsselversion löschen. Nach Ablauf des Zeitraums für Zum Löschen vorgemerkt wird der Schlüssel gelöscht. Nachdem die Schlüsselversion gelöscht wurde, können Sie keine Daten mehr verschlüsseln oder Daten entschlüsseln, die mit der Cloud EKM-Schlüsselversion verschlüsselt wurden.

Durch das Löschen einer manuell verwalteten Schlüsselversion in Cloud KMS ändert sich nichts Schlüssel im External Key Manager. Wir empfehlen, zuerst den Schlüssel oder Schlüsselversion in Google Cloud. Nachdem die Cloud EKM-Schlüsselversion gelöscht wurde, können Sie das Schlüsselmaterial im externen Schlüsselverwaltungssystem löschen.

Zuerst eine koordinierte externe Schlüsselversion in Cloud KMS löschen Zerstört die Schlüsselversion in Google Cloud und sendet dann ein Löschen Anfrage an den EKM zum Löschen des externen Schlüsselmaterials.

Schlüsselversion wiederherstellen

Während des Zeitraums, in dem der Status einer Schlüsselversion zum Löschen vorgemerkt ist, können Sie die Schlüsselversion wiederherstellen, indem Sie eine Wiederherstellungsanfrage senden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.

    Zur Seite „Schlüsselverwaltung“

  2. Klicken Sie auf den Namen des Schlüsselbunds mit dem Schlüssel, dessen Schlüsselversion Sie wiederherstellen möchten.

  3. Klicken Sie auf den Schlüssel, dessen Schlüsselversion Sie wiederherstellen möchten.

  4. Klicken Sie auf das Kästchen neben der Schlüsselversion, die Sie wiederherstellen möchten.

  5. Klicken Sie im Header auf Wiederherstellen.

  6. Klicken Sie in der Bestätigungsaufforderung auf Wiederherstellen.

gcloud

Um Cloud KMS in der Befehlszeile zu verwenden, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf die neueste Version durch.

gcloud kms keys versions restore key-version \
    --key key \
    --keyring key-ring \
    --location location

Ersetzen Sie key-version durch die Version des Schlüssels, die wiederhergestellt werden soll. Ersetzen Sie key durch den Namen des Schlüssels. Ersetzen Sie key-ring durch den Namen des Schlüsselbunds, in dem sich der Schlüssel befindet. Ersetzen Sie location durch den Cloud KMS-Standort für den Schlüsselbund.

Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help aus.

C#

Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.


using Google.Cloud.Kms.V1;

public class RestoreKeyVersionSample
{
    public CryptoKeyVersion RestoreKeyVersion(string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring", string keyId = "my-key", string keyVersionId = "123")
    {
        // Create the client.
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        // Build the key version name.
        CryptoKeyVersionName cryptoKeyVersionName = new CryptoKeyVersionName(projectId, locationId, keyRingId, keyId, keyVersionId);

        // Call the API.
        CryptoKeyVersion result = client.RestoreCryptoKeyVersion(cryptoKeyVersionName);

        // Return the result.
        return result;
    }
}

Go

Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.

import (
	"context"
	"fmt"
	"io"

	kms "cloud.google.com/go/kms/apiv1"
	"cloud.google.com/go/kms/apiv1/kmspb"
)

// restoreKeyVersion attempts to recover a key that has been marked for
// destruction in the past 24h.
func restoreKeyVersion(w io.Writer, name string) error {
	// name := "projects/my-project/locations/us-east1/keyRings/my-key-ring/cryptoKeys/my-key/cryptoKeyVersions/123"

	// Create the client.
	ctx := context.Background()
	client, err := kms.NewKeyManagementClient(ctx)
	if err != nil {
		return fmt.Errorf("failed to create kms client: %w", err)
	}
	defer client.Close()

	// Build the request.
	req := &kmspb.RestoreCryptoKeyVersionRequest{
		Name: name,
	}

	// Call the API.
	result, err := client.RestoreCryptoKeyVersion(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to restore key version: %w", err)
	}
	fmt.Fprintf(w, "Restored key version: %s\n", result)
	return nil
}

Java

Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Cloud KMS Java SDK installieren.

import com.google.cloud.kms.v1.CryptoKeyVersion;
import com.google.cloud.kms.v1.CryptoKeyVersionName;
import com.google.cloud.kms.v1.KeyManagementServiceClient;
import java.io.IOException;

public class RestoreKeyVersion {

  public void restoreKeyVersion() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String locationId = "us-east1";
    String keyRingId = "my-key-ring";
    String keyId = "my-key";
    String keyVersionId = "123";
    restoreKeyVersion(projectId, locationId, keyRingId, keyId, keyVersionId);
  }

  // Schedule destruction of the given key version.
  public void restoreKeyVersion(
      String projectId, String locationId, String keyRingId, String keyId, String keyVersionId)
      throws IOException {
    // Initialize client that will be used to send requests. This client only
    // needs to be created once, and can be reused for multiple requests. After
    // completing all of your requests, call the "close" method on the client to
    // safely clean up any remaining background resources.
    try (KeyManagementServiceClient client = KeyManagementServiceClient.create()) {
      // Build the key version name from the project, location, key ring, key,
      // and key version.
      CryptoKeyVersionName keyVersionName =
          CryptoKeyVersionName.of(projectId, locationId, keyRingId, keyId, keyVersionId);

      // Restore the key version.
      CryptoKeyVersion response = client.restoreCryptoKeyVersion(keyVersionName);
      System.out.printf("Restored key version: %s%n", response.getName());
    }
  }
}

Node.js

Um diesen Code auszuführen, richten Sie zuerst eine Node.js-Entwicklungsumgebung ein und installieren Sie das Cloud KMS Node.js SDK.

//
// TODO(developer): Uncomment these variables before running the sample.
//
// const projectId = 'my-project';
// const locationId = 'us-east1';
// const keyRingId = 'my-key-ring';
// const keyId = 'my-key';
// const versionId = '123';

// Imports the Cloud KMS library
const {KeyManagementServiceClient} = require('@google-cloud/kms');

// Instantiates a client
const client = new KeyManagementServiceClient();

// Build the key version name
const versionName = client.cryptoKeyVersionPath(
  projectId,
  locationId,
  keyRingId,
  keyId,
  versionId
);

async function restoreKeyVersion() {
  const [version] = await client.restoreCryptoKeyVersion({
    name: versionName,
  });

  console.log(`Restored key version: ${version.name}`);
  return version;
}

return restoreKeyVersion();

PHP

Um diesen Code auszuführen, müssen Sie zuerst PHP in Google Cloud verwenden lernen und das Cloud KMS PHP SDK installieren.

use Google\Cloud\Kms\V1\Client\KeyManagementServiceClient;
use Google\Cloud\Kms\V1\RestoreCryptoKeyVersionRequest;

function restore_key_version(
    string $projectId = 'my-project',
    string $locationId = 'us-east1',
    string $keyRingId = 'my-key-ring',
    string $keyId = 'my-key',
    string $versionId = '123'
) {
    // Create the Cloud KMS client.
    $client = new KeyManagementServiceClient();

    // Build the key version name.
    $keyVersionName = $client->cryptoKeyVersionName($projectId, $locationId, $keyRingId, $keyId, $versionId);

    // Call the API.
    $restoreCryptoKeyVersionRequest = (new RestoreCryptoKeyVersionRequest())
        ->setName($keyVersionName);
    $restoredVersion = $client->restoreCryptoKeyVersion($restoreCryptoKeyVersionRequest);
    printf('Restored key version: %s' . PHP_EOL, $restoredVersion->getName());

    return $restoredVersion;
}

Python

Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Cloud KMS Python SDK installieren.

from google.cloud import kms


def restore_key_version(
    project_id: str, location_id: str, key_ring_id: str, key_id: str, version_id: str
) -> kms.CryptoKeyVersion:
    """
    Restore a key version scheduled for destruction.

    Args:
        project_id (string): Google Cloud project ID (e.g. 'my-project').
        location_id (string): Cloud KMS location (e.g. 'us-east1').
        key_ring_id (string): ID of the Cloud KMS key ring (e.g. 'my-key-ring').
        key_id (string): ID of the key to use (e.g. 'my-key').
        version_id (string): ID of the version to use (e.g. '1').

    Returns:
        CryptoKeyVersion: Restored Cloud KMS key version.

    """

    # Create the client.
    client = kms.KeyManagementServiceClient()

    # Build the key version name.
    key_version_name = client.crypto_key_version_path(
        project_id, location_id, key_ring_id, key_id, version_id
    )

    # Call the API.
    restored_version = client.restore_crypto_key_version(
        request={"name": key_version_name}
    )
    print(f"Restored key version: {restored_version.name}")
    return restored_version

Ruby

Um diesen Code auszuführen, müssen Sie zuerst eine Ruby-Entwicklungsumgebung einrichten und das Cloud KMS Ruby SDK installieren.

# TODO(developer): uncomment these values before running the sample.
# project_id  = "my-project"
# location_id = "us-east1"
# key_ring_id = "my-key-ring"
# key_id      = "my-key"
# version_id  = "123"

# Require the library.
require "google/cloud/kms"

# Create the client.
client = Google::Cloud::Kms.key_management_service

# Build the key version name.
key_version_name = client.crypto_key_version_path project:            project_id,
                                                  location:           location_id,
                                                  key_ring:           key_ring_id,
                                                  crypto_key:         key_id,
                                                  crypto_key_version: version_id

# Call the API.
restored_version = client.restore_crypto_key_version name: key_version_name
puts "Restored key version: #{restored_version.name}"

API

In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.

Stellen Sie eine Schlüsselversion wieder her, indem Sie die Methode CryptoKeyVersions.restore .

curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location-id/keyRings/key-ring-id/cryptoKeys/crypto-key-id/cryptoKeyVersions/version-id:restore" \
    --request "POST" \
    --header "authorization: Bearer token"

Nach Abschluss der Wiederherstellungsanfrage ändert sich der Status der Schlüsselversion. deaktiviert. Sie müssen den Schlüssel aktivieren, damit er verwendet werden kann.

Erforderliche IAM-Berechtigungen

Zum Löschen einer Schlüsselversion benötigt der Aufrufer den cloudkms.cryptoKeyVersions.destroy-IAM-Berechtigung für den Schlüssel, den Schlüsselbund, das Projekt, den Ordner oder die Organisation.

Zum Wiederherstellen einer Schlüsselversion benötigt der Aufrufer die Berechtigung cloudkms.cryptoKeyVersions.restore.

Beide Berechtigungen werden der Cloud KMS-Administratorrolle (roles/cloudkms.admin) gewährt.

Löschzeitachse

Cloud KMS löscht das Kundenschlüsselmaterial aus allen Google-Produkten innerhalb von 45 Tagen nach dem geplanten Löschtermin. Dazu gehören Daten aus aktiven Systemen und Back-ups der Rechenzentren zu entfernen. Anderer Kunde unterliegen dem Standard Zeitplan für die Löschung von Google Cloud von 180 Tagen.