Cifre y descifre datos con Cloud KMS

Cloud KMS es un servicio de administración de claves alojado en la nube que le permite administrar claves criptográficas para sus servicios en la nube de la misma manera que lo hace en las instalaciones. Incluye soporte para cifrado, descifrado, firma y verificación utilizando una variedad de tipos y fuentes de clave, incluido Cloud HSM para claves respaldadas por hardware. Este instructivo te enseña cómo encriptar y desencriptar datos con claves simétricas de Cloud KMS.

Tu aprenderás

  • Cómo habilitar la API de Cloud KMS
  • Cómo crear un llavero de claves de Cloud KMS
  • Cómo crear una clave criptográfica de Cloud KMS para el cifrado / descifrado simétrico
  • Cómo rotar una clave criptográfica simétrica de Cloud KMS

Configuración de entorno a su propio ritmo

  1. Inicie sesión en Cloud Console y cree un nuevo proyecto o reutilice uno existente. (Si aún no tiene una cuenta de Gmail o G Suite, debe crear una ).

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCemtDX8H30h30h

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpG01

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HASMoK3o67jgvcjU6CANgNgNgNgxuo-

Recuerde el ID del proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se ha tomado y no funcionará para usted, ¡lo siento!). Más adelante en este codelab se hará referencia a él como PROJECT_ID .

  1. A continuación, deberá habilitar la facturación en Cloud Console para poder utilizar los recursos de Google Cloud.

Ejecutar este codelab no debería costar mucho, si es que cuesta algo. Asegúrese de seguir las instrucciones de la sección "Limpieza" que le indica cómo cerrar los recursos para no incurrir en facturación más allá de este tutorial. Los nuevos usuarios de Google Cloud son elegibles para el programa de prueba gratuita de $ 300 USD .

Iniciar Cloud Shell

En este laboratorio de código, utilizará Cloud Shell , un entorno virtualizado gratuito que se ejecuta en Google Cloud. Desde GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cpkUdJi2LoUbxTWg4cKNByzzKDnv11

Solo debería llevar unos minutos aprovisionarse y conectarse al entorno. Cuando haya terminado, debería ver algo como esto:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2r6BlQDnpFmgyAtv9x2r6BlQDnpFmgyAtv9x2r6BlQDnpFmgyAtv9x2hfgfoedfxlqqLsv9x2hfgd6ppx

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitará. Ofrece un directorio de inicio persistente de 5 GB y se ejecuta en Google Cloud, lo que mejora enormemente el rendimiento y la autenticación de la red. A menos que se indique lo contrario, ejecute todos los comandos desde este shell.

Antes de poder usar Cloud KMS, primero debes habilitar el servicio en tu proyecto. Esto solo debe hacerse una vez por proyecto. Para habilitar el servicio Cloud KMS, ejecute el siguiente comando:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

Puede tardar hasta un minuto en habilitarse. El comando informará el éxito cuando finalice.

Crea un llavero de claves de Cloud KMS. En Cloud KMS, un llavero de claves es una colección lógica de claves criptográficas. El llavero de claves contiene metadatos sobre las claves, como su ubicación. Cree un llavero de claves llamado my-keyring en la región global :

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Ahora cree una clave encryption llamada my-symmetric-key con el propósito de encryption dentro del llavero que acaba de crear.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

Crea un archivo con datos para encriptar y usa la herramienta de línea de comandos de gcloud para encriptar los datos en el archivo:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

Los datos cifrados (también conocidos como "texto cifrado") se guardan en el disco data.txt.enc . Si abre el archivo data.txt.enc , notará que tiene caracteres extraños que no se pueden imprimir. Eso es porque los datos resultantes están en formato binario .

Al almacenar el texto cifrado en una base de datos o transmitirlo como parte de una solicitud HTTP, es posible que deba codificar los datos. Un mecanismo de codificación común es base64.

Cloud KMS no almacena el texto sin formato que proporcionas. Debe guardar este texto cifrado en una ubicación segura, ya que será necesario para recuperar el valor del texto sin formato.

Descifra el texto cifrado del archivo con la herramienta de línea de comandos de gcloud :

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

La herramienta de línea de comandos de gcloud lee el texto cifrado del archivo y lo descifra con Cloud KMS. Observe que este ejemplo especifica el argumento --plaintext-file como - . Esto le gcloud a gcloud que imprima el resultado en la terminal.

La consola imprimirá my-contents , que es el mismo valor de texto sin formato del archivo anterior.

En Cloud KMS, una clave criptográfica es en realidad una colección de versiones de claves criptográficas. Puede crear nuevas versiones de claves criptográficas para realizar la rotación de claves . Cloud KMS también puede rotar claves automáticamente según una programación .

Para rotar una clave manualmente, cree una nueva versión de clave criptográfica y configúrela como la versión principal:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

Todas las solicitudes futuras para cifrar datos utilizarán esta nueva clave. Las claves más antiguas todavía están disponibles para descifrar datos que se cifraron previamente con esas claves. Cloud KMS determina automáticamente la clave de descifrado adecuada según el texto cifrado proporcionado; no es necesario que especifique qué versión de la clave criptográfica usar para el descifrado.

Para evitar que los valores de texto cifrado que se cifraron con una versión de clave criptográfica anterior se descifren con Cloud KMS, puede inhabilitar o destruir esa versión de clave criptográfica. La desactivación es una operación reversible, mientras que la destrucción es permanente. Para deshabilitar una versión:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

Habilitó la API de Cloud KMS, creó una clave de cifrado simétrica y cifró y descifró los datos. Cloud KMS es un producto poderoso y el cifrado / descifrado solo rasca la superficie de sus capacidades.

Limpiar

Si ha terminado de explorar, considere eliminar su proyecto.

  • Ir a la consola de Cloud Platform
  • Seleccione el proyecto que desea cerrar, luego haga clic en "Eliminar" en la parte superior. Esto programa el proyecto para su eliminación.

Aprende más

Licencia

Este trabajo está sujeto a una licencia genérica Creative Commons Attribution 2.0.