Encripta discos con claves de encriptación proporcionadas por el cliente

De forma predeterminada, Compute Engine encripta todos los datos en reposo. Compute Engine controla y administra esta encriptación por ti sin que realices ninguna acción adicional. Sin embargo, si quieres controlar y administrar esta encriptación tú mismo, puedes proporcionar tus propias claves de encriptación.

Si proporcionas tus propias claves de encriptación, Compute Engine usa tu clave a fin de proteger las claves generadas por Google que se usan para encriptar y desencriptar tus datos. Solo los usuarios que brinden la clave correcta pueden usar los recursos protegidos por una clave de encriptación proporcionada por el cliente.

Google no almacena tus claves en sus servidores y no tiene acceso a tus datos protegidos, a menos que proporciones la clave. Esto también significa que, si olvidas o pierdes la clave, Google no tiene forma de recuperarla ni de recuperar los datos encriptados con la clave perdida.

Cuando borras un disco persistente, Google descarta las claves de encriptación, lo que hace que los datos sean irrecuperables. Este proceso es irreversible.

Antes de comenzar

Especificaciones

Encriptación

Compute Engine usa tu clave de encriptación para proteger las claves de encriptación de Google con la encriptación AES-256.

Restricciones

Existen algunas limitaciones y restricciones para usar esta función:

Restricciones generales

Las claves de encriptación proporcionadas por el cliente no están disponibles en los siguientes países:

  • Brasil
  • India

Restricciones técnicas

  • Solo puedes encriptar discos persistentes nuevos con tu propia clave. No puedes encriptar discos persistentes existentes con tu propia clave.

  • No puedes usar tus propias claves con SSD locales dado que los SSD locales no persisten una vez finalizada la vida útil de una máquina virtual. Los SSD locales ya están protegidos con una clave de encriptación efímera que Google no guarda.

  • Compute Engine no guarda las claves de encriptación con plantillas de instancias, por lo que no puedes usar tus propias claves para encriptar discos en un grupo de instancias administrado.

Formato de clave requerido

Depende de ti generar y administrar la clave. Debes proporcionar una clave que sea una string de 256 bits codificada en el formato base64 estándar RFC 4648 para Compute Engine.

A continuación, se muestra un ejemplo de una clave codificada en el formato base64, generada con la string “Hello from Google Cloud Platform”.

SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=

Se puede generar con la siguiente secuencia de comandos:

read -sp "String:" ; [[ ${#REPLY} == 32 ]] && echo "$(echo -n "$REPLY" | base64)" || (>&2 echo -e "\nERROR:Wrong Size"; false)

Unión de clave RSA

Además de codificar tu clave en el formato base64, puedes unir la clave de forma opcional con un certificado de clave pública RSA proporcionado por Google, codificar la clave en el formato base64 y, luego, usar esa clave en tus solicitudes.

La unión de clave RSA es un proceso en el cual usas una clave pública para encriptar los datos. Una vez que esos datos se encriptan con la clave pública, solo se pueden desencriptar con la clave privada correspondiente. En este caso, solo los servicios de Google Cloud Platform tienen conocimiento de la clave privada. Cuando unes tu clave mediante el certificado RSA, te aseguras de que solo los servicios de Google Cloud Platform puedan desunir la clave y usarla para proteger tus datos.

Para obtener más información, consulta Encriptación RSA.

Si deseas crear una clave unidad a RSA para Compute Engine, debes realizar los siguientes pasos:

  1. Une tu clave con la clave pública proporcionada en un certificado que administre Compute Engine. Asegúrate de unir tu clave con el relleno OAEP, no con el relleno PKCS #1 v1.5.
  2. Codifica tu clave unida a RSA con la codificación en el formato base64 estándar.

Descarga el certificado público que mantiene Compute Engine desde:

https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem

Existen muchas formas de generar y unir tu clave a RSA. Usa un método que te resulte conocido. A continuación, se muestran dos ejemplos de unión de clave a RSA que podrías usar.

Ejemplo 1

En las siguientes instrucciones, se usa la utilidad de línea de comandos openssl para codificar y unir una clave a RSA.

  1. Genera una clave aleatoria de 256­ bits (32 bytes) (opcional). Si ya tienes una clave que deseas usar, puedes omitir este paso. Existen muchas formas de generar una clave. A continuación, se muestra un ejemplo de una forma en que puedes hacerlo:

    $ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txt
    
  2. Descarga el certificado de clave pública:

    $  curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
  3. Extrae la clave pública del certificado:

    $ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
    
  4. Une la clave a RSA y asegúrate de reemplazar mykey.txt por tu propio archivo de claves.

    $ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txt
    
  5. Codifica la clave unida a RSA en el formato base64.

    $ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
    

Ejemplo 2

A continuación, se muestra una secuencia de comandos de ejemplo de Python que genera una string aleatoria de 256 bits (32 bytes) y crea una clave unida a RSA codificada en el formato base64 con la biblioteca de criptografía:


import argparse
import base64
import os

from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
import requests

GOOGLE_PUBLIC_CERT_URL = (
    'https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem')

def get_google_public_cert_key():
    r = requests.get(GOOGLE_PUBLIC_CERT_URL)
    r.raise_for_status()

    # Load the certificate.
    certificate = x509.load_pem_x509_certificate(
        r.text.encode('utf-8'), default_backend())

    # Get the certicate's public key.
    public_key = certificate.public_key()

    return public_key

def wrap_rsa_key(public_key, private_key_bytes):
    # Use the Google public key to encrypt the customer private key.
    # This means that only the Google private key is capable of decrypting
    # the customer private key.
    wrapped_key = public_key.encrypt(
        private_key_bytes,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA1()),
            algorithm=hashes.SHA1(),
            label=None))
    encoded_wrapped_key = base64.b64encode(wrapped_key)
    return encoded_wrapped_key

def main(key_file):
    # Generate a new 256-bit private key if no key is specified.
    if not key_file:
        customer_key_bytes = os.urandom(32)
    else:
        with open(key_file, 'rb') as f:
            customer_key_bytes = f.read()

    google_public_key = get_google_public_cert_key()
    wrapped_rsa_key = wrap_rsa_key(google_public_key, customer_key_bytes)

    print('Base-64 encoded private key: {}'.format(
        base64.b64encode(customer_key_bytes).decode('utf-8')))
    print('Wrapped RSA key: {}'.format(wrapped_rsa_key.decode('utf-8')))

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument(
        '--key_file', help='File containing your binary private key.')

    args = parser.parse_args()

    main(args.key_file)

Tu clave ya está lista para usar.

Usa una clave unida a RSA

Con la herramienta de línea de comandos de gcloud, puedes proporcionar una clave normal y una clave unida a RSA de la misma forma.

En la API, usa la propiedad sha256 en vez de rawKey si deseas usar una clave unida a RSA.

Encripta recursos con la herramienta de línea de comandos

Configuración

Las claves de encriptación se pueden usar mediante la herramienta de línea de comandos de gcloud.

Descargar y, luego, instalar gcloud

Archivo de claves

Cuando uses la herramienta de línea de comandos de gcloud compute para configurar las claves, proporciona claves codificadas con un archivo de claves que contenga las claves codificadas como una lista JSON. Un archivo de claves puede contener varias claves, lo que te permite administrar muchas claves en un solo lugar. De manera alternativa, puedes crear archivos de claves únicas para manejar cada clave por separado. Un archivo de claves solo se puede usar con la herramienta de gcloud. Cuando uses la API, deberás proporcionar la clave directamente en la solicitud.

Cada entrada en el archivo de claves debe proporcionar la siguiente información:

  • El URI completo para el recurso que protege la clave
  • La clave correspondiente
  • El tipo de clave, ya sea raw o rsa-encrypted

Cuando uses el archivo de claves en las solicitudes, la herramienta buscará recursos coincidentes y utilizará las claves correspondientes. Si no se encuentran recursos coincidentes, la solicitud fallará.

Un archivo de claves de ejemplo se ve de la siguiente manera:

[
  {
  "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk",
  "key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=",
  "key-type": "raw"
  },
  {
  "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot",
  "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  "key-type": "rsa-encrypted"
  }
]

Prácticas recomendadas para administrar el archivo de claves

Si usas un archivo de claves, deberás restringir el acceso al archivo solo a aquellos que lo necesitan. Asegúrate de establecer los permisos adecuados en estos archivos y considera encriptar estos archivos con herramientas adicionales:

Encripta un disco persistente nuevo con tus propias claves

Puedes proporcionar una clave durante la creación de la instancia o el disco para encriptar un disco persistente nuevo.

Console

  1. Ve a la página Discos.

    Ir a la página Discos

  2. Haz clic en Disco nuevo y, luego, ingresa las propiedades del disco nuevo.
  3. En Encriptación, selecciona Proporcionada por el cliente en el menú desplegable.
  4. Proporciona la clave de encriptación del disco en el cuadro de texto y selecciona Clave unida si la clave se unió con la clave pública RSA.

gcloud

En la herramienta de gcloud compute, encripta un disco con el marcador --csek-key-file durante la creación de la instancia. Si usas una clave unida a RSA, utiliza el componente gcloud beta:

gcloud (beta) compute instances create example-instance --csek-key-file example-file.json

Para encriptar un disco persistente independiente:

gcloud (beta) compute disks create example-disk --csek-key-file example-file.json

API

En la API, encripta un disco con la propiedad diskEncryptionKey y solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA. Proporciona una de las siguientes propiedades en la solicitud:

  • rawKey: si la clave solo está codificada en el formato base64
  • rsaEncryptedKey: si la clave está unida a RSA y codificada en el formato base64

Por ejemplo, para encriptar un disco nuevo durante la creación de la instancia con una clave unida a RSA:

POST
https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances

{
"machineType": "zones/us-central1-a/machineTypes/n1-standard-1",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  },
  "initializeParams": {
   "sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619"
  },
  "boot": true
 }
],
...
}

Del mismo modo, también puedes usar la API para crear un nuevo disco persistente independiente y encriptarlo con tu propia clave:

POST https://www.googleapis.com/compute/beta/projects/myproject/zones/
us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F
alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619

{
 "name": "new-encrypted-disk-key",
 "diskEncryptionKey": {
   "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  },
 "type": "zones/us-central1-a/diskTypes/pd-standard"
}

Crea una instantánea desde un disco encriptado

Si creas una instantánea desde un disco encriptado, la instantánea también debe estar encriptada. Debes especificar una clave para encriptar la instantánea. No puedes convertir instantáneas o discos encriptados para usar la encriptación predeterminada de Compute Engine, a menos que crees una imagen de disco completamente nueva y un disco persistente nuevo.

Las instantáneas de los discos encriptados son siempre instantáneas completas, cuyo almacenamiento es más costoso que las instantáneas incrementales.

Para crear una instantánea de disco persistente desde un disco encriptado, la solicitud de creación de la instantánea debe proporcionar la clave de encriptación que usaste para encriptar el disco persistente.

Revisa las Prácticas recomendadas para instantáneas de discos persistentes antes de crear la instantánea.

Console

  1. Ve a la página Instantáneas.

    Ir a la página Instantáneas

  2. Haz clic en Instantánea nueva.
  3. En Disco de origen, elige el disco encriptado del que deseas crear una instantánea.
  4. Proporciona la clave de encriptación del disco en el cuadro de texto y selecciona Clave unida si la clave se unió con la clave pública RSA.
  5. Proporciona una clave de encriptación adicional en la sección Encriptación para encriptar la instantánea nueva.

API

En la API, proporciona la propiedad sourceDiskEncryptionKey para acceder al disco persistente de origen. De manera opcional, también puedes encriptar la instantánea nueva con la propiedad snapshotEncryptionKey.

Solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA.

POST https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot

{
 "snapshotEncryptionKey":  {
   "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
 },
 "sourceDiskEncryptionKey": {
   "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  },
 "name": "snapshot-encrypted-disk"
}

La propiedad sourceDiskEncryptionKey debe coincidir con la clave utilizada para encriptar el disco persistente. De lo contrario, la solicitud fallará.

La propiedad snapshotEncryptionKey opcional te permite proporcionar una clave para encriptar la instantánea, de modo que, si la instantánea se usa con el objetivo de crear discos persistentes nuevos, se deba proporcionar una clave coincidente. Esta clave debe seguir el mismo formato de clave que se indica anteriormente. También puedes optar por dejar esta propiedad sin definir y la instantánea se puede usar para crear discos persistentes nuevos sin requerir una clave.

Crea una imagen nueva desde un disco encriptado o una imagen personalizada encriptada

Puedes crear imágenes personalizadas desde los discos persistentes encriptados o copiar imágenes encriptadas. No puedes usar la consola para copiar imágenes. Usa la herramienta de línea de comandos de gcloud o la API para copiar imágenes.

Console

  1. En Google Cloud Platform Console, ve a la página Crea una imagen.
    Ir a la página Crea una instancia
  2. Haz clic en Imagen nueva.
  3. En Disco de origen, elige el disco encriptado del que deseas crear una imagen.
  4. Proporciona la clave de encriptación del disco en el cuadro de texto y selecciona Clave unida si la clave se unió con la clave pública RSA.
  5. De manera opcional, también puedes proporcionar una clave de encriptación en la sección Encriptación para encriptar la imagen nueva.

gcloud

Sigue las instrucciones para crear una imagen y agrega el marcador --csek-key-file con una ruta de acceso al archivo de claves de encriptación para el objeto de origen encriptado. Usa el componente gcloud beta si utilizas una clave unida a RSA:

gcloud (beta) compute images create .... --csek-key-file example-file.json

Si también deseas encriptar la imagen nueva con tu clave, agrega la clave al archivo de claves, p. ej.:

[
  {
  "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk",
  "key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=",
  "key-type": "raw"
  },
  {
  "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image",
  "key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=",
  "key-type": "raw"
  }
]

API

La solicitud de creación de la API debe contener la propiedad de la clave de encriptación del objeto de origen. Por ejemplo, incluye una de las siguientes propiedades según el tipo de objeto de origen:

  • Disco persistente: sourceDiskEncryptionKey
  • Imagen: sourceImageEncryptionKey

También incluye las propiedades rawKey o rsaEncryptedKey según el tipo de clave. Solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA. En el siguiente ejemplo, un disco persistente encriptado y unido a RSA se convierte en una imagen que usa la misma clave de encriptación.

POST https://www.googleapis.com/compute/beta/projects/myproject/global/images

{
 "name": "image-encrypted-disk",
 "sourceDiskEncryptionKey": {
    "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  }
 "imageEncryptionKey": {
    "rsaEncryptedKey":  "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
    },
 "sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks"
}

La propiedad imageEncryptionKey opcional te permite proporcionar una clave para encriptar la imagen, de modo que cuando la imagen se use con el objetivo de crear discos persistentes nuevos, se deba proporcionar una clave coincidente. Esta clave debe seguir el mismo formato de clave que se indica anteriormente. También puedes optar por dejar esta propiedad sin definir y la imagen se puede usar para crear discos persistentes nuevos sin requerir una clave.

Encripta una imagen importada

Puedes encriptar una imagen nueva si importas una imagen personalizada de forma manual a Compute Engine. Antes de importar una imagen, debes crear y comprimir un archivo de imagen de disco y subir ese archivo comprimido a Google Cloud Storage.

Importa la imagen personalizada de Compute Engine que deseas encriptar. Especifica el URI para el archivo comprimido y selecciona una ruta para el archivo de claves de encriptación.

Console

  1. Ve a la página Imágenes.

    Ir a la página Imágenes

  2. Haz clic en Imagen nueva.
  3. En Tipo de fuente, selecciona el objeto de Cloud Storage.
  4. En Encriptación, selecciona la opción proporcionada por el cliente y proporciona la clave de encriptación para encriptar la imagen en el cuadro de texto.
  5. Ingresa el URI de Cloud Storage en la sección Ruta del objeto de Cloud Storage.

gcloud

Usa el comando compute images create para crear una imagen nueva y especifica el marcador --csek-key-file con un archivo de claves de encriptación. Si usas una clave unida a RSA, utiliza el componente gcloud beta:

gcloud (beta) compute images create [IMAGE_NAME] \
  --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \
  --csek-key-file [KEY_FILE]

donde:

  • [IMAGE_NAME] es el nombre de la imagen personalizada nueva.
  • [BUCKET_NAME] es el nombre del depósito de Cloud Storage que contiene el archivo de imagen comprimido.
  • [COMPRESSED_FILE] es el nombre del archivo de imagen comprimido.
  • [KEY_FILE] es la ruta a un archivo de claves de encriptación en la estación de trabajo local.

API

Si deseas encriptar una imagen nueva creada a partir de un archivo RAW, agrega la propiedad imageEncryptionKey nueva a la solicitud de creación de la imagen, seguida de rawKey o rsaEncryptedKey. Solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA.

POST https://www.googleapis.com/compute/beta/projects/myproject/global/images

{
"rawDisk": {
 "source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
},
"name": "new-encrypted-image",
"sourceType": "RAW",
"imageEncryptionKey": {
  "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  }
}

Crea un disco persistente desde un recurso encriptado

Crea un disco desde una instantánea encriptada

Console

  1. Ve a la página Discos.

    Ir a la página Discos

  2. Haz clic en Disco nuevo.
  3. En Tipo de fuente, selecciona Instantánea.
  4. Proporciona la clave de encriptación para la instantánea en el cuadro de texto y selecciona Clave unida si la clave se unió con la clave pública RSA.

gcloud

En la herramienta de gcloud compute, proporciona la clave de encriptación para la instantánea con el marcador --csek-key-file cuando crees el disco. Si usas una clave unida a RSA, utiliza el componente gcloud beta:

gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json

API

Para usar una instantánea encriptada, proporciona la propiedad sourceSnapshotEncryptionKey en la solicitud, seguida de rawKey o rsaEncryptedKey. Solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA. Por ejemplo, para un nuevo disco persistente independiente que usa una instantánea encriptada:

POST https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks

{
"name": "disk-from-encrypted-snapshot",
"sourceSnapshot": "global/snapshots/encrypted-snapshot",
"sourceSnapshotEncryptionKey": {
  "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  }
}

Crea un disco desde una imagen encriptada

Console

  1. Ve a la página Discos.

    Ir a la página Discos

  2. Haz clic en Disco nuevo.
  3. En Tipo de fuente, selecciona Imagen.
  4. Proporciona la clave de encriptación para la imagen en el cuadro de texto y selecciona Clave unida si la clave se unió con la clave pública RSA.

gcloud

En la herramienta de gcloud compute, proporciona la clave de encriptación para la imagen con el marcador --csek-key-file cuando crees el disco. Si usas una clave unida a RSA, utiliza el componente gcloud beta:

gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json

API

Para usar una imagen encriptada, proporciona la propiedad sourceImageEncryptionKey, seguida de rawKey o rsaEncryptedKey. Solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA.

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks

{
"name": "disk-from-encrypted-image",
"sourceImageEncryptionKey": {
  "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
  },
"sourceImage": "global/images/encrypted-image"
}

Conecta un disco encriptado a una instancia nueva

Console

  1. Ve a la página de VM Instances.

    Ir a la página de VM Instances

  2. Haz clic en Instancia nueva.
  3. En Disco de arranque, haz clic en Cambiar.
  4. Selecciona Disco existente.
  5. Elige un disco existente para conectar a la instancia.
  6. Proporciona la clave de encriptación en el cuadro de texto y selecciona Clave unida si la clave se unió con la clave pública RSA.
  7. Continúa con el proceso de creación de la instancia.

gcloud

Para crear una instancia y adjuntar un disco encriptado, crea un archivo de claves y proporciona la clave con el marcador --csek-key-file cuando crees la instancia. Si usas una clave unida a RSA, utiliza el componente gcloud beta:

gcloud (beta) compute instances create example-instance \
  --disk name=example-disk,boot=yes \
  --csek-key-file example-file.json

API

Crea una instancia con la API de Compute Engine y proporciona la rawKey o rsaEncryptedKey con la especificación del disco. Solicita a la API v1 una clave sin procesar (no unida a RSA) o a la API Beta una clave unida a RSA.

Aquí se muestra un fragmento de una especificación del disco de ejemplo:

"disks": [
{
  "deviceName": "encrypted-disk",
  "source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk",
  "diskEncryptionKey": {
    "rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0="
  }
 }
]

Inicia o reinicia las instancias que tienen discos encriptados

Para obtener información sobre cómo detener o iniciar una instancia que tiene discos encriptados, lee la documentación Reinicia una instancia con un disco encriptado.

Usa la línea de comandos para crear recursos combinados

Si deseas crear una combinación de recursos encriptados por el cliente y estándar en una única solicitud con la herramienta de línea de comandos de gcloud, puedes usar el marcador --csek-key-file con un archivo de claves y el marcador --no-require-csek-key-create en la solicitud. Si proporcionas ambos marcadores, la herramienta de gcloud crea los recursos encriptados por el cliente que se definen explícitamente en el archivo de claves y también crea los recursos estándar que especifiques.

Por ejemplo, supongamos que un archivo de claves contiene lo siguiente:

[
  {
  "uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk",
  "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==",
  "key-type": "rsa-encrypted"
  }
]

Si deseas crear una instancia con un disco encriptado por el cliente con el archivo de claves y, al mismo tiempo, crear una instancia con un disco encriptado estándar en la misma solicitud, puedes hacerlo de la siguiente manera:

gcloud beta compute instances create example-disk example-disk-2 \
    --csek-key-file mykeyfile.json --no-require-csek-key-create

Generalmente, no se puede crear el example-disk-2 si solo especificaste el marcador --csek-key-file, dado que el disco no está explícitamente definido en el archivo de claves. Si agregas --no-require-csek-key-create, se crearán ambos discos, uno encriptado con el archivo de claves y el otro encriptado con la encriptación de Google.

Quita la clave de encriptación proporcionada por el cliente de un disco persistente

Puedes desencriptar el contenido de un disco encriptado por el cliente y crear un disco nuevo que use la encriptación predeterminada de Compute Engine.

  1. Crea una imagen del disco encriptado y especifica la encriptación automática para la imagen nueva.
  2. Usa la imagen nueva para crear un disco persistente nuevo.

Una vez creado el disco persistente nuevo, usa la encriptación predeterminada de Compute Engine para proteger el contenido del disco. Las instantáneas que creas desde ese disco también deben usar la encriptación predeterminada.

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

Enviar comentarios sobre...

Documentación de Compute Engine