En este tema se muestra cómo volver a cifrar datos con una clave simétrica de Cloud Key Management Service. Puedes adaptar estos ejemplos para claves asimétricas. Si sospechas que se ha hecho un uso no autorizado de una clave, debes volver a encriptar los datos protegidos por esa clave y, a continuación, inhabilitar o programar la eliminación de la versión anterior de la clave.
Antes de empezar
Este caso requiere que se cumplan las siguientes condiciones.
Ya has encriptado datos con Cloud KMS.
La versión de la clave utilizada para el cifrado no está inhabilitada, programada para su destrucción ni destruida. Esta versión de la clave se usa para descifrar los datos cifrados.
Ya has cambiado las claves. La rotación de claves crea una nueva versión de clave principal. Usa la nueva versión de la clave principal para volver a cifrar los datos.
Volver a encriptar datos con claves asimétricas
En los ejemplos de este tema se muestra cómo volver a cifrar datos con una clave simétrica. Cuando usas una clave simétrica, Cloud KMS deduce automáticamente la versión de la clave que se debe usar para el desencriptado. Cuando usas una clave asimétrica, debes especificar la versión de la clave.
- Cuando sigas las instrucciones para usar Google Cloud CLI, incluye siempre la marca
--version
. - Cuando sigas las instrucciones para usar la API, utiliza
CryptoKeyVersions
en lugar deCryptoKeys
. Puedes consultar más información sobre cómo encriptar y desencriptar datos con una clave asimétrica.
El flujo de trabajo para volver a encriptar datos con claves asimétricas es similar al que se describe en este tema.
Flujo de trabajo para volver a cifrar datos
Sigue estos pasos para volver a cifrar los datos y para inhabilitar o programar la destrucción de la versión de la clave que se usó para el cifrado original.
Vuelve a cifrar los datos con la nueva versión de la clave principal
Inhabilitar o programar la destrucción de la versión de clave anterior
Descifrar los datos con la versión anterior de la clave
Cloud KMS usa automáticamente la versión de clave correcta para desencriptar datos, siempre que la versión de clave no esté inhabilitada, programada para su destrucción o destruida. En los siguientes ejemplos se muestra cómo descifrar los datos. Es el mismo código de descifrado que se usa en Cifrado y descifrado.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave que quieras usar para el descifrado.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.FILE_TO_DECRYPT
: la ruta al archivo que quieres descifrar.DECRYPTED_OUTPUT
: la ruta en la que quieres guardar el resultado descifrado.
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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
El texto descifrado que devuelve Cloud KMS en el JSON está codificado en base64.
Para descifrar datos cifrados, haz una solicitud POST
y proporciona el proyecto y la información de la clave adecuados, así como el texto cifrado (también conocido como texto cifrado) que quieras descifrar en el campo ciphertext
del cuerpo de la solicitud.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves y la clave que quieres usar para el descifrado.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.KEY_RING
: el conjunto de claves que contiene la clave que quieres usar para el descifrado.KEY_NAME
: el nombre de la clave que quieras usar para el descifrado.ENCRYPTED_DATA
: los datos cifrados que quieres descifrar.
A continuación, se muestra un ejemplo de carga útil con datos codificados en base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Vuelve a cifrar los datos con la nueva versión de la clave principal
Cloud KMS usa automáticamente la nueva versión de la clave principal para cifrar los datos. En los siguientes ejemplos se muestra cómo cifrar los datos. Es el mismo código de cifrado que se usa en Cifrado y descifrado.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave que quieras usar para el cifrado.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.FILE_TO_ENCRYPT
: la ruta al archivo que quieres cifrar.ENCRYPTED_OUTPUT
: la ruta en la que quieres guardar el resultado cifrado.
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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Cuando se usa JSON y la API REST, el contenido debe codificarse en base64 para que Cloud KMS pueda encriptarlo.
Para cifrar datos, haz una solicitud POST
y proporciona la información del proyecto y de la clave correspondientes. Además, especifica el texto codificado en base64 que quieras cifrar en el campo plaintext
del cuerpo de la solicitud.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene el conjunto de claves y la clave que quieres usar para el cifrado.LOCATION
: la ubicación de Cloud KMS que contiene el conjunto de claves.KEY_RING
: el conjunto de claves que contiene la clave que quieres usar para el cifrado.KEY_NAME
: el nombre de la clave que quieras usar para el cifrado.PLAINTEXT_TO_ENCRYPT
: los datos de texto sin formato que quieras cifrar. El texto sin formato debe estar codificado en Base64 antes de llamar al métodoencrypt
.
A continuación, se muestra un ejemplo de carga útil con datos codificados en base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Inhabilitar o programar la eliminación de la versión de clave anterior
Si has rotado la clave en respuesta a un incidente sospechoso, después de volver a cifrar los datos, inhabilita o programa la destrucción de la versión anterior de la clave.
Inhabilitar una versión de clave habilitada
Solo se puede inhabilitar una versión de clave que esté habilitada. Para ello, se usa el método UpdateCryptoKeyVersion
.
Consola
Ve a la página Gestión de claves de la Google Cloud consola.
Haga clic en el nombre del conjunto de claves que contiene la clave cuya versión quiere inhabilitar.
Haga clic en la clave cuya versión quiera inhabilitar.
Marca la casilla situada junto a las versiones de la clave que quieras inhabilitar.
En el encabezado, haga clic en Inhabilitar.
En la ventana emergente de confirmación, haz clic en Inhabilitar.
gcloud
Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.
gcloud kms keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Sustituye key-version por la versión de la clave que quieras inhabilitar. Sustituye key por el nombre de la clave. Sustituye key-ring por el nombre del conjunto de claves en el que se encuentra la clave. Sustituye location por la ubicación de Cloud KMS del conjunto de claves.
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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
Programar la eliminación de una versión de clave
Solo se pueden programar para su eliminación las versiones de claves que estén habilitadas o inhabilitadas. Para ello, se utiliza el método DestroyCryptoKeyVersion
.
Consola
En la consola de Google Cloud , ve a la página Gestión de claves.
Marca la casilla situada junto a la versión de la clave que quieras programar para su destrucción.
En el encabezado, haz clic en Destruir.
En la petición de confirmación, introduce el nombre de la clave y 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 la CLI de Google Cloud.
gcloud kms keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Haz los cambios siguientes:
KEY_VERSION
: el número de versión de la versión de la clave que quieres destruir.KEY_NAME
: el nombre de la clave de la que quieres destruir una versión.KEY_RING
: el nombre del conjunto de claves que contiene la clave.LOCATION
: la ubicación de Cloud KMS del conjunto de claves.
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 debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.
Java
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Java e instalar el SDK de Java de Cloud KMS.
Node.js
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Node.js e instalar el SDK de Node.js de Cloud KMS.
PHP
Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.
Python
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Python e instalar el SDK de Python de Cloud KMS.
Ruby
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Ruby e instalar el SDK de Ruby de Cloud KMS.
API
En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.
Para eliminar una versión de clave, llama 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"