Almacenar secretos

En los siguientes pasos, se describe cómo almacenar un secreto en un depósito de Cloud Storage encriptado en el nivel de aplicación con una clave de encriptación de Cloud Key Management Service.

En estos pasos, se muestra una forma de almacenar secretos con Cloud KMS. Obtén más información sobre cómo almacenar secretos, incluidas diferentes opciones, en administración de secretos.

Configuración

Es recomendable usar dos proyectos y dos usuarios para garantizar la separación de obligaciones entre los individuos y los servicios que usan secretos, versus aquellos que los administran. Un proyecto usará Cloud KMS para administrar las claves y el otro usará los depósitos de Cloud Storage para almacenar los secretos.

Crea proyectos

Dentro de la organización (este paso lo realiza un usuario al que se le otorgó la función roles/resourcemanager.organizationAdmin), haz lo siguiente:

  1. Crea un proyecto de Google Cloud Platform que contendrá el depósito de Cloud Storage que se usa para almacenar los secretos. Estos se almacenarán como objetos en el depósito. Este tema se referirá a este proyecto como [MY_STORAGE_PROJECT].
  2. Crea un proyecto de Google Cloud Platform que use Cloud KMS para administrar las claves que encriptarán y desencriptarán el secreto. Este tema se referirá a este proyecto como [MY_KMS_PROJECT].

Crear usuarios

En este paso, se crean dos usuarios, uno que tendrá la capacidad de administrar las claves de encriptación y otro que podrá usar las claves de encriptación.

Con el proyecto [MY_KMS_PROJECT] (este paso lo realiza el propietario del proyecto [MY_KMS_PROJECT] o el otro usuario al que se le otorgó la función roles/resourcemanager.organizationAdmin para el proyecto [MY_KMS_PROJECT]), haz lo siguiente:

  1. Otorga la función roles/cloudkms.admin a User1. Este usuario podrá administrar las claves.
  2. Otorga la función roles/cloudkms.cryptoKeyEncrypterDecrypter a User2. Este usuario podrá usar la clave de encriptación para encriptar y desencriptar el archivo que contiene el secreto.

    De manera alternativa, si quieres que solo algunos usuarios encripten y otros desencripten, usa la función roles/cloudkms.cryptoKeyEncrypter para los encriptadores y la función roles/cloudkms.cryptoKeyDecrypter para los desencriptadores.

Crea un depósito de almacenamiento

Con el proyecto [MY_STORAGE_PROJECT] (este paso lo realiza el propietario del proyecto [MY_STORAGE_PROJECT] o el otro usuario al que se le otorgó la función roles/storage.admin para el proyecto [MY_STORAGE_PROJECT]):

  1. Crea un depósito de almacenamiento al que este tema se referirá como [MY_BUCKET].
  2. Otorga a User2 la función roles/storage.objectAdmin para el depósito [MY_BUCKET].

Crea una clave de encriptación

User1 realiza este paso.

  1. Crea un llavero de claves llamado storage. El nombre de un llavero de claves es único para el proyecto. El llavero de claves no se puede renombrar ni borrar. Puedes usar la herramienta de línea de comandos de gcloud para crear un llavero de claves.

    gcloud kms keyrings create storage --location global
    
  2. Con el llavero de claves de storage, crea una clave llamada mykey con el propósito de encriptación. El nombre de una clave es único para el llavero de claves. Una clave no se puede renombrar ni borrar, pero sus versiones de clave se pueden destruir. Usa la herramienta de línea de comandos de gcloud para crear una clave. Una primera versión de clave se creará automáticamente.

    gcloud kms keys create mykey --location global \
      --keyring storage --purpose encryption
    

Obtén más detalles sobre cómo crear claves de encriptación en Crea claves y llaveros de claves.

Encripta el archivo que contiene el secreto

User2 realiza este paso.

  1. En tu máquina local, crear el archivo, por ejemplo, mysecret.txt, que contiene el secreto.
  2. Encripta mysecret.txt con una clave, en este caso, basada en el proyecto [MY_KMS_PROJECT], el llavero de claves storage y la clave mykey. Escribe el archivo encriptado en mysecret.txt.encrypted.
    A fin de ver un ejemplo de cómo usar Cloud KMS para encriptar un archivo con una clave, consulta la guía de inicio rápido para encriptar datos.
  3. Sube el archivo encriptado, mysecret.txt.encrypted, al depósito [MY_BUCKET].
  4. [Opcional] Borra el archivo mysecret.txt de texto sin formato de la máquina local.

Desencripta el archivo que contiene el secreto

User2 realiza este paso.

  1. Descarga mysecret.txt.encrypted del depósito [MY_BUCKET] a la máquina local.
  2. Desencripta mysecret.txt con la misma clave que se usó previamente para la encriptación. Escribe el archivo desencriptado en mysecret.txt.decrypted.
    A fin de ver un ejemplo de cómo usar Cloud KMS para desencriptar un archivo con una clave, consulta la guía de inicio rápido para encriptar.
  3. Usa el archivo de texto sin formato, mysecret.txt.decrypted.
  4. [Opcional] Cuando termines de usar el archivo desencriptado, bórralo de la máquina local.

Próximos pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud KMS