En este tema, se muestra cómo volver a encriptar los datos con una clave simétrica de Cloud Key Management Service. Puedes adaptar estos ejemplos para claves asimétricas. Si sospechas que una clave se usa sin autorización, debes volver a encriptar los datos que esta protege y, luego, inhabilitar o programar la destrucción de la versión de clave anterior.
Antes de comenzar
Para esta situación, se requieren estas condiciones:
Haber encriptado datos mediante Cloud KMS.
La versión de clave que usaste en la encriptación no debe estar inhabilitada, programada para su destrucción ni destruida. Usarás esta versión de clave para desencriptar los datos encriptados.
Haber rotado claves. La rotación de claves crea una versión de clave primaria nueva. Usarás esta versión de clave primaria nueva para volver a encriptar los datos.
Vuelve a encriptar datos con claves asimétricas
En los ejemplos de este tema, se muestra cómo volver a encriptar los datos con una clave simétrica. Cuando usas una clave simétrica, Cloud KMS infiere de manera automática la versión de clave que se debe usar para la desencriptación. Cuando usas una clave asimétrica, debes especificar la versión de clave.
- Cuando sigas las instrucciones para usar Google Cloud CLI, incluye siempre la marca
--version
. - Cuando sigues las instrucciones para usar la API, usas
CryptoKeyVersions
en lugar deCryptoKeys
. Obtén más información sobre cómo encriptar y desencriptar datos con una clave asimétrica.
El flujo de trabajo para volver a encriptar los datos con claves asimétricas es similar al que se describe en este tema.
Flujo de trabajo para volver a encriptar los datos
Sigue estos pasos para volver a encriptar los datos y también inhabilitar o programar la destrucción de la versión de clave que usaste originalmente.
Vuelve a encriptar los datos con la versión de clave primaria nueva
Inhabilita o programa la destrucción de la versión de clave anterior
Desencripta los datos con la versión de clave anterior
De manera automática, Cloud KMS usa la versión de clave correcta para desencriptar los datos, siempre y cuando la versión de clave no esté inhabilitada, programada para su destrucción ni destruida. En los siguientes ejemplos, se muestra cómo desencriptar los datos. Este código de desencriptación es el mismo que se usa en Encripta y desencripta.
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 decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Reemplaza lo siguiente:
KEY_NAME
: Es el nombre de la clave que deseas usar para la desencriptación.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.FILE_TO_DECRYPT
: Es la ruta de acceso al archivo que deseas desencriptar.DECRYPTED_OUTPUT
: La ruta de acceso en la que deseas guardar el resultado desencriptado.
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.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
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.
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.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
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.
El texto desencriptado que se muestra en el archivo JSON de Cloud KMS está codificado en base64.
Para desencriptar datos encriptados, haz una solicitud POST
y proporciona la información del proyecto y de la clave correspondientes, y especifica el texto encriptado (también conocido como texto cifrado) que se desencriptará 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\"}"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero y la clave que deseas usar para la desencriptación.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.KEY_RING
: Es el llavero de claves que contiene la clave que deseas usar para la desencriptación.KEY_NAME
: Es el nombre de la clave que deseas usar para la desencriptación.ENCRYPTED_DATA
: Son los datos encriptados que deseas desencriptar.
Esta es una carga útil de ejemplo con datos codificados en Base64:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Vuelve a encriptar los datos con la versión de clave primaria nueva
Cloud KMS usa la versión de clave primaria nueva de manera automática para encriptar los datos. En los siguientes ejemplos, se muestra cómo hacerlo. Este código de encriptación es el mismo que se usa en Encripta y desencripta.
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 encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Reemplaza lo siguiente:
KEY_NAME
: Es el nombre de la clave que deseas usar para la encriptación.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.FILE_TO_ENCRYPT
: Es la ruta de acceso al archivo que deseas encriptar.ENCRYPTED_OUTPUT
: Es la ruta de acceso en la que deseas guardar el resultado encriptado.
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.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
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.
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.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
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.
Cuando usas JSON y la API de REST, debes codificar el contenido en Base64 antes de que pueda encriptarlo Cloud KMS.
Para encriptar datos, realiza una solicitud POST
, proporciona la información del proyecto y la clave que corresponda, y especifica el texto codificado en Base64 que se encriptará 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\"}"
Reemplaza lo siguiente:
PROJECT_ID
: Es el ID del proyecto que contiene el llavero y la clave que deseas usar para la encriptación.LOCATION
: Es la ubicación de Cloud KMS que contiene el llavero de claves.KEY_RING
: Es el llavero de claves que contiene la clave que deseas usar para la encriptación.KEY_NAME
: Es el nombre de la clave que deseas usar para la encriptación.PLAINTEXT_TO_ENCRYPT
: Son los datos de texto simple que deseas encriptar. El texto simple debe estar codificado en Base64 antes de llamar al métodoencrypt
.
Esta es una carga útil de ejemplo con datos codificados en Base64:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Inhabilita la versión de clave anterior o programa su destrucción
Si rotaste la clave en respuesta a un posible incidente, inhabilita o la versión de clave anterior programa su destrucción después de volver a encriptar los datos.
Inhabilita una versión de clave habilitada
Solo se pueden inhabilitar las claves habilitadas. Para ello, usa el método UpdateCryptoKeyVersion
.
Console
Ve a la página Administración de claves en la consola de Google Cloud.
Haz clic en el nombre del llavero de claves que contiene la clave cuya versión se inhabilitará.
Haz clic en la clave cuya versión de clave deseas inhabilitar.
Marca la casilla junto a las versiones de clave que deseas inhabilitar.
Haz clic en Inhabilitar en el encabezado.
En el mensaje 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 Google Cloud CLI.
gcloud kms keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Reemplaza key-version por la versión de la clave que deseas inhabilitar. Reemplaza key por el nombre de la clave. Reemplaza key-ring por el nombre del llavero de claves en el que se encuentra la clave. Reemplaza location por la ubicación de Cloud KMS para el llavero 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 configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
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.
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.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
Programa la destrucción de una versión de clave
Solo se puede programar la destrucción de las versiones de clave habilitadas o inhabilitadas. Para ello, usa el método DestroyCryptoKeyVersion
.
Console
En la consola de Google Cloud, ve a la página Administración de claves.
Marca la casilla junto a la versión de clave que deseas programar para la destrucción.
Haz clic en Destruir en el encabezado.
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 versión de la clave que deseas destruir.KEY_NAME
: Es el nombre de la clave para la que deseas destruir una versión.KEY_RING
: Es el nombre del llavero de claves que contiene la clave.LOCATION
: Es la ubicación de Cloud KMS del llavero 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 configura un entorno de desarrollo de C# e instala el SDK de C# para Cloud KMS.
Go
Para ejecutar este código, primero configura un entorno de desarrollo de Go y, luego, instala el SDK de Go para Cloud KMS.
Java
Para ejecutar este código, primero configura un entorno de desarrollo de Java y, luego, instala el SDK de Java para Cloud KMS.
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.
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.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
Ruby
Para ejecutar este código, primero configura un entorno de desarrollo de Ruby y, luego, instala el SDK de Ruby para Cloud KMS.
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 destruir 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"