Destruye y restablece versiones de claves

En esta página, se muestra cómo programar una versión de clave de Cloud Key Management Service para su destrucción permanente. En Cloud KMS, el material de clave criptográfica que usas para encriptar, desencriptar, firmar y verificar datos se almacena en una versión de clave. Una clave tiene cero o más versiones. Cuando rotas una clave, creas una versión nueva de ella.

Destruir una versión de clave significa que el material de la clave se borra de forma permanente. Cuando destruyes una versión de clave, no se borran otros detalles, como el nombre y el número de versión de la clave. Después de que se destruye una clave, no se pueden desencriptar los datos que se encriptaron con la versión de clave.

La única excepción es la reimportación de claves, que te permite restablecer una clave importada con anterioridad proporcionando el mismo material de clave original.

Debido a que la destrucción de claves suele ser irreversible, Cloud KMS no te permite destruir versiones de claves de inmediato. En su lugar, programas la destrucción de una versión de clave. La versión de la clave permanece en el estado de destrucción programada durante un tiempo configurable. Durante el período de destrucción programada, puedes restablecer una versión de clave para cancelar su destrucción.

La duración predeterminada de la destrucción programada es de 30 días. Puedes establecer una duración personalizada de la programación para la destrucción de una clave durante su creación. Tu organización puede aplicar una duración mínima programada para la destrucción si configuras la restricción Duración mínima programada de destrucción por clave en las políticas de la organización.

También puedes administrar el acceso a la clave mediante la administración de identidades y accesos (IAM). Las operaciones de IAM son coherentes en segundos. Para obtener más información, consulta Usa IAM.

También puedes inhabilitar una versión de clave de forma temporal. Te recomendamos que inhabilites las versiones de clave antes de programar su destrucción como parte de tus procedimientos para garantizar que la clave se pueda destruir de forma segura. Según las políticas de tu organización, es posible que debas inhabilitar una versión de clave antes de poder programar su destrucción. Para obtener más información sobre cómo controlar la destrucción de versiones de claves con las políticas de la organización, consulta Controla la destrucción de versiones de claves.

En el resto de este documento, la programación de una clave para su destrucción se denomina destrucción de la clave, aunque la destrucción no sea inmediata.

Antes de comenzar

Comprende los riesgos

La destrucción de una versión de clave es una operación permanente. Destruir una versión de clave que todavía se necesita tiene riesgos, incluidos los siguientes:

  • Interrupción del servicio: Si destruyes una clave que se requiere para iniciar un contenedor o una instancia, es posible que tus servicios o aplicaciones no estén disponibles.

  • Pérdida permanente de datos: Si destruyes una clave que se usó para encriptar datos, esos datos dejarán de estar disponibles. Los datos encriptados con una clave que se destruyó se consideran criptodestruidos. En algunos casos, destruir una clave puede provocar que los recursos encriptados se borren de forma permanente.

  • Problemas normativos o de cumplimiento: Si destruyes una clave que se requiere para acceder a datos que están sujetos a un período de retención antes de que se complete ese período, es posible que infrinjas un requisito normativo o de cumplimiento.

Roles obligatorios

Para obtener los permisos que necesitas para destruir y restablecer versiones de claves, pídele a tu administrador que te otorgue el rol de IAM de Administrador de Cloud KMS (roles/cloudkms.admin) en la clave. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Verifica si la versión de la clave está en uso

Antes de destruir una versión de clave, completa los siguientes pasos para ver si está en uso:

  1. Consulta los detalles del seguimiento del uso de claves para la clave. Si hay recursos protegidos por la versión de clave que quieres destruir, vuelve a encriptarlos con otra versión de clave.

  2. Activa los registros para cualquier servicio o aplicación que pueda usar la versión de la clave.

  3. Activa los registros en el proyecto de Cloud KMS que contiene la clave.

  4. Inhabilita la versión de clave. Inhabilitar la versión de clave impide que se use. Con la versión de clave inhabilitada, cualquier intento de usarla fallará.

  5. Supervisa los registros hasta que tengas la certeza de que ninguna aplicación ni servicio depende de la versión de la clave que inhabilitaste. Si algún error indica que no se pudo acceder a la versión de la clave, configura la aplicación o el recurso para que use otra versión de la clave.

    El tiempo que dedicas a supervisar los registros antes de destruir una versión de clave depende del tipo de clave, su patrón de uso y su nivel de sensibilidad. Por ejemplo, antes de destruir una versión de clave que se usa en un proceso que se ejecuta trimestralmente, mantén inhabilitada la versión de clave hasta que ese proceso se complete correctamente.

  6. Verifica el uso de la clave en relación con los requisitos de cumplimiento aplicables. Por ejemplo, la versión de la clave y los datos encriptados con ella pueden estar sujetos a períodos de retención de datos.

Estos pasos te ayudan a identificar si aún se necesita una clave. Sin embargo, no pueden garantizar que ya no se necesite una versión de clave. Tu organización debe implementar procedimientos y lineamientos para garantizar que la destrucción de versiones de claves no cause efectos negativos.

Destruir una versión de clave

Puedes destruir una versión de clave habilitada o inhabilitada.

Console

  1. En la consola de Google Cloud , ve a la página Administración de claves.

    Ir a Key Management

  2. Marca la casilla junto a la versión de clave que deseas programar para la destrucción.

  3. Haz clic en Destruir en el encabezado.

  4. En el mensaje de confirmación, ingresa el nombre de la clave y, luego, haz clic en Programar destrucción.

gcloud

Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.

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

Reemplaza lo siguiente:

  • KEY_VERSION: Es el número de la versión de la clave que deseas destruir.
  • KEY_NAME: Es el nombre de la clave que contiene la versión de la clave que deseas destruir.
  • KEY_RING: Es el nombre del llavero de claves que contiene la versión de la clave que deseas destruir.
  • LOCATION: Es la ubicación del llavero de claves que contiene la versión de la clave que deseas destruir.

Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

C#

Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.


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

Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.

//
// 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

Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.

# 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

En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.

Destruye una versión de clave llamando al método 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"

Reemplaza lo siguiente:

  • PROJECT_ID: Es el identificador del proyecto que contiene la versión de la clave que deseas destruir.
  • LOCATION: Es la ubicación del llavero de claves que contiene la versión de la clave que deseas destruir.
  • KEY_RING: Es el nombre del llavero de claves que contiene la versión de la clave que deseas destruir.
  • KEY_NAME: Es el nombre de la clave que contiene la versión de la clave que deseas destruir.
  • KEY_VERSION: Es el número de la versión de la clave que deseas destruir.

Si no puedes destruir una versión de clave, es posible que tu organización requiera que se inhabiliten las versiones de clave antes de la destrucción. Intenta inhabilitar la versión de clave antes de destruirla.

Cuando envías la solicitud de destrucción, el estado de la versión de la clave se convierte en programada para destrucción. Una vez que transcurre la duración programada para la destrucción configurada de la clave, el estado de la versión de la clave pasa a ser destruido, lo que significa que comenzó la eliminación lógica del material de la clave de los sistemas activos y el cliente no puede recuperar el material de la clave. El material de la clave puede permanecer en los sistemas de Google hasta 45 días a partir de la hora de destrucción programada.

A fin de recibir una alerta cuando una versión de clave está programada para su destrucción, consulta Usa Cloud Monitoring con Cloud KMS.

Las versiones de clave destruidas no son recursos facturados.

Destruye claves externas

Para quitar de forma permanente la asociación entre una clave de Cloud EKM y una clave externa, puedes destruir la versión de la clave. Una vez que transcurre el período Programado para su destrucción, la clave se destruye. Una vez que se destruye la versión de clave, ya no puedes encriptar ni desencriptar los datos que se encriptaron con la versión de clave de Cloud EKM.

La destrucción de una versión de clave administrada de forma manual en Cloud KMS no modifica la clave en el administrador de claves externo. Te recomendamos que primero destruyas la clave o la versión de clave en Google Cloud. Después de que se destruya la versión de la clave de Cloud EKM, podrás destruir el material de la clave en el administrador de claves externo.

La destrucción de una versión de clave externa coordinada en Cloud KMS primero destruye la versión de la clave en Google Cloudy, luego, envía una solicitud de destrucción al EKM para destruir el material de la clave externa.

Restablece una versión de clave

Durante el período en el que el estado de una versión de clave está programado para su destrucción, puedes restablecer la versión de clave enviando una solicitud de restablecimiento.

Console

  1. En la consola de Google Cloud , ve a la página Administración de claves.

    Ir a Key Management

  2. Haz clic en el nombre del llavero de claves que contiene la versión de la clave que deseas restablecer.

  3. Haz clic en la clave que contiene la versión que deseas restablecer.

  4. Marca la casilla junto a la versión de clave que deseas restablecer.

  5. Haga clic en Restablecer en el encabezado.

  6. En el mensaje de confirmación, haz clic en Restablecer.

gcloud

Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de Google Cloud CLI.

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

Reemplaza lo siguiente:

  • KEY_VERSION: Es el número de la versión de la clave que deseas restablecer.
  • KEY_NAME: Es el nombre de la clave que contiene la versión de la clave que deseas restablecer.
  • KEY_RING: Es el nombre del llavero de claves que contiene la versión de la clave que deseas restablecer.
  • LOCATION: Es la ubicación del llavero de claves que contiene la versión de la clave que deseas restablecer.

Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

C#

Para ejecutar este código, primero configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.


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

Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Node.js y, luego, instala el SDK de Node.js para Cloud KMS.

//
// 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

Para ejecutar este código, primero obtén información sobre cómo usar PHP en Google Cloud y, luego, instala el SDK de PHP para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.

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

Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.

# 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

En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.

Para restablecer una versión de clave, llama al método CryptoKeyVersions.restore.

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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el identificador del proyecto que contiene la versión de la clave que deseas restablecer.
  • LOCATION: Es la ubicación del llavero de claves que contiene la versión de la clave que deseas restablecer.
  • KEY_RING: Es el nombre del llavero de claves que contiene la versión de la clave que deseas restablecer.
  • KEY_NAME: Es el nombre de la clave que contiene la versión de la clave que deseas restablecer.
  • KEY_VERSION: Es el número de la versión de la clave que deseas restablecer.

Después de que se completa la solicitud de restablecimiento, el estado de la versión de clave se inhabilita. Debes habilitar la clave para poder usarla.

Permisos de IAM obligatorios

Para destruir una versión de clave, el emisor necesita el permiso de IAM cloudkms.cryptoKeyVersions.destroy en la clave, el llavero de claves o el proyecto, la carpeta o la organización.

Para restablecer una versión de clave, el emisor necesita el permiso cloudkms.cryptoKeyVersions.restore.

Ambos permisos se otorgan a la función de administrador de Cloud KMS (roles/cloudkms.admin).

Cronograma de eliminación

Cloud KMS se compromete a borrar el material de clave del cliente de toda la infraestructura de Google en un plazo de 45 días a partir de la hora de destrucción programada. Esto incluye la eliminación de datos de los sistemas activos y de las copias de seguridad del centro de datos. Otros datos de clientes están sujetos al cronograma de eliminación deGoogle Cloud estándar de 180 días.