Protege recursos mediante las claves de Cloud KMS


En este documento, se proporciona información sobre cómo usar las claves de Cloud Key Management Service Cloud KMS creadas de forma manual para encriptar discos y otros recursos relacionados con el almacenamiento. Las claves administradas en Cloud KMS se conocen como claves de encriptación administradas por el cliente (CMEK).

Puedes usar CMEKs para encriptar recursos de Compute Engine, como discos, imágenes de máquina, instantáneas instantáneas y instantáneas estándar.

Para obtener más información sobre el uso de claves de encriptación proporcionadas por el cliente (CSEKs) para encriptar discos y otros recursos de almacenamiento, consulta Encripta discos con claves de encriptación proporcionadas por el cliente.

Obtén más información sobre la encriptación de disco.

Antes de empezar

  • Obtén información sobre discos, imágenes, instantáneas de discos persistentese instancias de máquina virtual (VM).
  • Decide si ejecutarás Compute Engine y Cloud KMS en el mismo proyecto de Google Cloud o en proyectos distintos. Para obtener información sobre los ID de proyecto de Google Cloud y los números de proyecto, consulta la sección sobre cómo identificar proyectos.
  • En el proyecto de Google Cloud que ejecuta Cloud KMS, haz lo siguiente:
    1. Enable the Cloud KMS API.

      Enable the API

  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Roles obligatorios

Para asegurarte de que el agente de servicio de Compute Engine tenga los permisos necesarios para proteger los recursos mediante claves de Cloud KMS, pídele a tu administrador que otorgue al agente de servicio de Compute Engine el siguiente servicio: Rol de IAM de Encriptador/Desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda otorgar los permisos necesarios al agente de servicio de Compute Engine mediante roles personalizados o cualquier otra rol predefinido.

El agente de servicio de Compute Engine tiene el siguiente formato:

service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

Puedes usar Google Cloud CLI para asignar el rol:

gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Reemplaza lo siguiente:

  • KMS_PROJECT_ID: es el ID del proyecto de Google Cloud que ejecuta Cloud KMS (incluso si es el mismo proyecto que ejecuta Compute Engine)
  • PROJECT_NUMBER: es el número del proyecto de Google Cloud (no el ID del proyecto de Google Cloud) que ejecuta los recursos de Compute Engine

Especificaciones de encriptación

Las claves de Cloud KMS que se usan para ayudar a proteger tus datos en Compute Engine son claves AES-256. Estas son claves de encriptación de claves y se usan para encriptar las claves de encriptación de datos que inculyen tus datos, no los datos en sí.

Los datos en los discos se encriptan con claves de Google y administradas por Google. Para conocer las especificaciones relacionadas con la encriptación predeterminada en Google Cloud, consulta Encriptación en reposo predeterminada en la documentación de seguridad.

Con el modo confidencial para Hyperdisk Balanced y Cloud HSM, la clave de encriptación de datos (DEK) tiene propiedades de seguridad adicionales con enclaves respaldados por hardware.

Limitaciones

  • No puedes encriptar los recursos existentes con CMEKs. Solo puedes encriptar discos, imágenes y, también, instantáneas con CMEKs cuando las creas.

  • Cuando creas un disco a partir de una instantánea inmediata encriptada con CMEK, debes especificar la clave que se usa para encriptar el disco de origen. No es necesario que especifiques la clave cuando trabajas con otros recursos encriptados con CMEK, como las clonaciones de discos y las instantáneas estándar.

  • No puedes usar tus propias claves con discos SSD locales porque la infraestructura de Google Cloud administra las claves y se borran cuando se finaliza la VM.

  • Los recursos regionales (discos) solo se pueden encriptar con una clave en una de las siguientes ubicaciones de Cloud KMS:

    • Una clave en la misma región que el disco
    • Una clave multirregional en la misma ubicación geográfica que el disco
    • Una clave en la ubicación global.

    Por ejemplo, un disco en la zona us-west1-a se puede encriptar mediante una clave en la ubicación global, la región us-west1 o la multirregión us.

    Los recursos globales (como imágenes y las instantáneas) se pueden encriptar mediante claves en cualquier ubicación. Si quieres obtener más información, consulta Tipos de ubicaciones para Cloud KMS.

  • La encriptación de un disco, una instantánea o una imagen con una clave es permanente. No puedes quitar la encriptación del recurso ni cambiar la clave que se usa. La única forma de quitar la encriptación o cambiar las claves es crear una copia del recurso mientras se especifica una opción de encriptación nueva.

  • El modo confidencial de Hyperdisk Balanced hereda las limitaciones existentes del hiperdisco y tiene las siguientes limitaciones adicionales:

    • Solo puedes conectar discos Hyperdisk Balanced en modo confidencial a VMs N2D con Confidential VM o nodos confidenciales de Google Kubernetes Engine en las siguientes regiones:
      • europe-west4
      • us-central1
      • us-east4
      • us-east5
      • us-south1
      • us-west4
    • No puedes suspender ni reanudar una instancia de máquina virtual (VM) con el modo Confidencial conectado para discos de Hyperdisk Balanced.
    • No puedes usar los grupos de almacenamiento de Hyperdisk con el modo confidencial para Hyperdisk Balanced.
    • No puedes crear imágenes personalizadas desde el modo Confidencial para discos Hyperdisk equilibrados.

Creación manual o automática de claves

Puedes crear claves de Cloud KMS de forma manual o usar la clave automática de Cloud KMS (vista previa). Autokey simplifica la creación y la administración de claves de Cloud KMS mediante la automatización del aprovisionamiento y la asignación. Con la clave automática, no necesitas aprovisionar llaveros de claves, claves y cuentas de servicio con anticipación. En cambio, se generan a pedido como parte de la creación de recursos de Compute Engine. Para obtener más información, consulta la Descripción general de Autokey.

Crea una clave y un llavero de claves de forma manual

Para el proyecto de Google Cloud que ejecuta Cloud KMS, crea un llavero de claves y una clave como se describe en Crea claves y llaveros de claves.

Encripta un Persistent Disk nuevo con CMEK

Puedes proporcionar una clave durante la creación de la VM o el disco para encriptar un Persistent Disk nuevo.

Console

  1. En la consola de Google Cloud, ve a la página Discos.

    Ir a Discos

  2. Haz clic en Crear disco y, luego, escribe las propiedades del disco nuevo.
  3. En Encriptación, elige Clave administrada por el cliente.
  4. En el menú desplegable, elige la clave de Cloud KMS que deseas usar para encriptar este disco.
  5. Para crear el disco, haz clic en Crear.

gcloud

Crea un disco encriptado mediante el comando gcloud compute disks create y especifica la clave mediante la marca --kms-key.

gcloud compute disks create DISK_NAME \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Reemplaza lo siguiente:

  • DISK_NAME: Es el nombre del disco nuevo
  • KMS_PROJECT_ID: Es el proyecto que posee la clave de Cloud KMS
  • REGION: es la región en la que se encuentra la clave
  • KEY_RING: el nombre del llavero de claves que incluye la clave
  • KEY: es el nombre de la clave que se usa para encriptar el disco

REST

Realiza una solicitud POST al instances.insert método . Para encriptar un disco, usa la propiedad diskEncryptionKey con la propiedad kmsKeyName. Por ejemplo, puedes encriptar un disco nuevo durante la creación de la VM con tu clave de Cloud KMS mediante el siguiente procedimiento:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE"
  },
  "boot": true
 }
],
...
}

Reemplaza lo siguiente:

  • PROJECT_ID: es el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE: Es la zona en la que se creará la VM.
  • MACHINE_TYPE: el tipo de máquina, por ejemplo, c3-standard-4
  • KMS_PROJECT_ID: Es el proyecto que posee la clave de Cloud KMS
  • REGION: Es la región en la que se encuentra el disco.
  • KEY_RING: es el nombre del llavero de claves que incluye la clave.
  • KEY: es el nombre de la clave que se usa para encriptar el disco.
  • SOURCE_IMAGE: La imagen que se usará cuando se cree la VM, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115

Del mismo modo, puedes usar el método disks.insert para crear un nuevo Persistent Disk independiente y encriptarlo con tu clave de Cloud KMS:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
}

Reemplaza lo siguiente:

  • PROJECT_ID: es el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE: Es la zona en la que se creará la VM.
  • SOURCE_IMAGE: es la imagen que se usará cuando se cree el disco, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME: Es un nombre para el disco nuevo
  • KMS_PROJECT_ID: Es el proyecto que posee la clave de Cloud KMS
  • REGION: Es la región en la que se encuentra el disco.
  • KEY_RING: es el nombre del llavero de claves que incluye la clave.
  • KEY: es el nombre de la clave que se usa para encriptar el disco.
  • DISK_TYPE: es el tipo de disco que se creará

Crea un volumen de Hyperdisk balanceado en modo confidencial

Para crear un Hyperdisk nuevo en modo confidencial con la console de Google Cloud, Google Cloud CLI o REST.

Console

  1. En la consola de Google Cloud, ve a la página Discos.

    Ir a Discos

  2. Haz clic en Crear disco y, luego, ingresa las propiedades del disco nuevo.
  3. En la sección Configuración de disco, selecciona Hyperdisk Balanced para el tipo de disco.
  4. Opcional. Cambia la configuración predeterminada de Tamaño, IOPS aprovisionadas y Capacidad de procesamiento aprovisionada del disco.
  5. En la sección Encriptación, selecciona Clave de Cloud KMS.
  6. En la lista de claves, selecciona la clave de Cloud HSM que deseas usar para encriptar este disco.
  7. En la sección Confidential Computing, selecciona Habilitar servicios de Confidential Computing.
  8. Para crear el disco, haz clic en Crear.

gcloud

Encripta un disco nuevo con el modo confidencial para Hyperdisk Balanced con el comando gcloud compute disks create. Habilita el modo confidencial con la marca --confidential-compute y especifica la clave con la marca --kms-key.

gcloud compute disks create DISK_NAME \
  --type=hyperdisk-balanced \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \
  --confidential-compute

Reemplaza lo siguiente:

  • DISK_NAME: Es el nombre del disco nuevo.
  • KMS_PROJECT_ID: el proyecto que posee la clave de Cloud HSM.
  • REGION: es la región en la que se encuentra la clave
  • KEY_RING: el nombre del llavero de claves que incluye la clave
  • KEY: es el nombre de la clave que se usa para encriptar el disco

REST

Realiza una solicitud POST al método instances.insert. Para encriptar un disco con el modo confidencial de Hyperdisk equilibrado, usa la propiedad diskEncryptionKey con la propiedad kmsKeyName y establece la marca enableConfidentialCompute. Por ejemplo, puedes encriptar un disco nuevo durante la creación de la VM con tu clave de Cloud HSM mediante el siguiente procedimiento:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "DISK_TYPE",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE",
   "enableConfidentialCompute": true
  },
  "boot": true
 }
],
"networkInterfaces": [
  {
   "network": "global/networks/default"
  }
]
}

Reemplaza lo siguiente:

  • DISK_TYPE: El tipo de disco que se creará, por ejemplo, hyperdisk-balanced
  • PROJECT_ID: es el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE: Es la zona en la que se creará la VM.
  • MACHINE_TYPE: el tipo de máquina, por ejemplo, n2d-standard-4
  • KMS_PROJECT_ID: el proyecto que posee la clave de Cloud HSM.
  • REGION: Es la región en la que se encuentra el disco.
  • KEY_RING: el nombre del llavero de claves que incluye la clave
  • KEY: es el nombre de la clave que se usa para encriptar el disco
  • SOURCE_IMAGE: la imagen que admite Confidential VM para usar cuando se crea la VM, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115.

Del mismo modo, puedes usar el método disks.insert para crear un nuevo modo confidencial para Hyperdisk Balanced:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
 "enableConfidentialCompute": true
}

Reemplaza lo siguiente:

  • PROJECT_ID: es el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE: Es la zona en la que se creará la VM.
  • SOURCE_IMAGE: la imagen que admite Confidential VM cuando se crea el disco, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115.
  • DISK_NAME: Es un nombre para el disco nuevo
  • KMS_PROJECT_ID: el proyecto que posee la clave de Cloud HSM.
  • REGION: Es la región en la que se encuentra el disco.
  • KEY_RING: es el nombre del llavero de claves que incluye la clave.
  • KEY: es el nombre de la clave que se usa para encriptar el disco.
  • DISK_TYPE: el tipo de disco que se creará, por ejemplo, hyperdisk-balanced.

Crea una instantánea desde un disco encriptado con CMEK

Para ayudar a proteger una instantánea que creas desde un disco encriptado con CMEK, debes usar la misma clave de encriptación que usaste para encriptar el disco.

No se puede crear una instantánea que use CMEK, a menos que el disco de origen también use CMEK. Además, no se pueden convertir discos ni instantáneas encriptados con CMEK para usar la encriptación predeterminada de Google Cloud, a menos que crees una imagen de disco completamente nueva y un disco persistente nuevo.

Las instantáneas de los discos encriptados con CMEK son incrementales.

Console

  1. En la consola de Google Cloud, ve a la página Instantáneas.

    Ir a Instantáneas

  2. Haz clic en Crear instantánea.
  3. En Disco de origen, elige el disco de origen para la instantánea. La instantánea se encripta de forma automática con la misma clave que usa el disco de origen.

gcloud

En el caso de la encriptación administrada por el cliente, la clave de Cloud KMS que se usó para encriptar el disco también se usa a fin de encriptar la instantánea.

Puedes crear tu instantánea en la política de ubicación de almacenamiento que define tu configuración de instantáneas o usar una ubicación de almacenamiento alternativa de tu elección. Para obtener más información, consulta Elige la ubicación de almacenamiento de tu instantánea.

  • Para crear una instantánea en la ubicación predefinida o en la ubicación personalizada predeterminada que se estableció en la configuración de instantánea, usa el comando gcloud compute snapshots create.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE
    
  • De lo contrario, si quieres anular la configuración de la instantánea y crear una instantánea en una ubicación de almacenamiento personalizada, incluye la marca --storage-location para indicar dónde almacenar la instantánea.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    

    Reemplaza lo siguiente:

    • SNAPSHOT_NAME: Es un nombre para la instantánea.
    • SOURCE_ZONE: Es la zona del disco de origen.
    • SOURCE_DISK_NAME: Es el nombre del volumen de disco desde el que deseas crear una instantánea.
    • SNAPSHOT_TYPE: Es el tipo de instantánea, ya sea STANDARD o ARCHIVE. Si no se especifica un tipo de instantánea, se crea una instantánea STANDARD.
    • STORAGE_LOCATION: Opcional: la multirregión de Cloud Storage o la región de Cloud Storage en la que quieres almacenar la instantánea. Solo puedes especificar una ubicación de almacenamiento.

      Usa el parámetro --storage-location solo cuando quieras anular la ubicación de almacenamiento predeterminada o personalizada establecida en tu configuración de instantáneas.

REST

Puedes crear tu instantánea en la política de ubicación de almacenamiento que define tu configuración de instantáneas o usar una ubicación de almacenamiento alternativa de tu elección. Para obtener más información, consulta Elige la ubicación de almacenamiento de tu instantánea.

  • Para crear la instantánea en la ubicación predeterminada o personalizada establecida en tu configuración de instantáneas, haz una solicitud POST al método snapshots.insert.

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • De forma alternativa, para anular la configuración de instantáneas y crear una instantánea en una ubicación de almacenamiento personalizada, haz una solicitud POST al método snapshots.insert y, además, incluye la propiedad storageLocations en tu solicitud:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE",
        "storageLocations": [
            "STORAGE_LOCATION"
        ],
    }
    

Reemplaza lo siguiente:

  • DESTINATION_PROJECT_ID: Es el ID del proyecto en el que deseas crear la instantánea.
  • SNAPSHOT_NAME: Es un nombre para la instantánea.
  • SOURCE_PROJECT_ID: Es el ID del proyecto del disco de origen.
  • SOURCE_ZONE: Es la zona del disco de origen.
  • SOURCE_DISK_NAME: Es el nombre del disco desde el que deseas crear una instantánea.
  • KMS_PROJECT_ID: El proyecto que contiene la clave de encriptación que se almacena en Cloud Key Management Service.
  • KEY_REGION: es la región en la que se encuentra la clave de Cloud KMS.
  • KEY_RING: Es el nombre del llavero de claves que contiene la clave de Cloud KMS.
  • SNAPSHOT_KEY: Es el nombre de la clave de Cloud KMS que usaste para encriptar el disco de origen.
  • SNAPSHOT_TYPE: Es el tipo de instantánea, ya sea STANDARD o ARCHIVE. Si no se especifica un tipo de instantánea, se crea una instantánea STANDARD.
  • STORAGE_LOCATION: Opcional: la multirregión de Cloud Storage o la región de Cloud Storage en la que quieres almacenar la instantánea. Solo puedes especificar una ubicación de almacenamiento.

    Usa el parámetro storageLocations solo cuando quieras anular la ubicación de almacenamiento predeterminada o personalizada establecida en tu configuración de instantáneas.

Encripta una imagen importada con CMEK

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

Console

  1. En la consola de Google Cloud, ve a la página Imágenes.

    Ir a Imágenes

  2. Haga clic en Crear imagen.
  3. En Disco de origen, elige el disco del que deseas crear una imagen.
  4. En Encriptación, elige Clave administrada por el cliente.
  5. En el menú desplegable, elige la clave de Cloud KMS que deseas usar para encriptar esta imagen.
  6. Continúa con el proceso de creación de imágenes.

gcloud

Para importar y encriptar una imagen, usa el comando gcloud compute images create. En el caso de la encriptación administrada por el cliente, especifica la clave de Cloud KMS para la imagen.

gcloud compute images create IMAGE_NAME \
    --source-disk=SOURCE_DISK  \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Reemplaza lo siguiente:

  • IMAGE_NAME: Es el nombre de la imagen que crearás
  • SOURCE_DISK: Es el nombre del disco del que se creará una instantánea
  • KMS_PROJECT_ID: el proyecto que contiene la clave de Cloud KMS
  • REGION: Es la región en la que se encuentra la clave de Cloud KMS
  • KEY_RING: Es el llavero de claves que contiene la clave de Cloud KMS
  • KEY: es el nombre de la clave que se usará para encriptar el disco nuevo

REST

Para encriptar una imagen importada, crea una solicitud POST al método images.insert. Especifica el URI para el archivo comprimido, agrega la propiedad imageEncryptionKey a la solicitud de creación de la imagen y especifica la clave a fin de encriptar la imagen en la propiedad kmsKeyName.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images

{
 "rawDisk": {
  "source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
  },
 "name": "IMAGE_NAME",
 "sourceType": "RAW",
 "imageEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
   }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto en el que se creará la imagen encriptada
  • IMAGE_NAME: Es el nombre de la imagen que crearás
  • KMS_PROJECT_ID: el proyecto que contiene la clave de Cloud KMS
  • REGION: Es la región en la que se encuentra la clave de Cloud KMS
  • KEY_RING: Es el llavero de claves que contiene la clave de Cloud KMS
  • KEY: es el nombre de la clave que usaste para encriptar el disco de origen

Crea un Persistent Disk desde una instantánea encriptada con CMEK

Para crear un nuevo Persistent Disk independiente a partir de una instantánea encriptada, haz lo siguiente:

Console

  1. En la consola de Google Cloud, ve a la página Discos.

    Ir a Discos

  2. Haz clic en Crear disco y, luego, escribe las propiedades del disco nuevo.
  3. En Tipo de fuente, elige la instantánea o imagen que deseas usar.
  4. Opcional: Si quieres especificar una clave de encriptación nueva, para Encriptación, especifica el tipo de clave de encriptación que se usará y, luego, proporciona la información de la clave de encriptación.

    Si deseas quitar la clave de encriptación administrada por el cliente o proporcionada por él, para la Encriptación, usa el valor predeterminado Clave de encriptación administrada por Google.

  5. Continua con el proceso de creación del Persistent Disk.

gcloud

Usa el comando gcloud compute disks create para crear un nuevo disco persistente independiente a partir de una instantánea encriptada.

gcloud compute disks create DISK_NAME \
    --source-snapshot SNAPSHOT_NAME \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Reemplaza lo siguiente:

  • DISK_NAME: Es el nombre del disco nuevo
  • SNAPSHOT_NAME: Es el nombre de la instantánea encriptada

    Para usar una imagen en lugar de una instantánea, reemplaza --source-snapshot SNAPSHOT_NAME por --image IMAGE_NAME.

  • KMS_PROJECT_ID: (Opcional) es el proyecto que contiene la clave de Cloud KMS

  • REGION: (Opcional) la región en la que se encuentra la clave de Cloud KMS

  • KEY_RING: (Opcional) es el llavero de claves que contiene la clave de Cloud KMS

  • KEY: (Opcional) Es el nombre de la clave de Cloud KMS que se usará para encriptar el disco nuevo

    Para encriptar el disco nuevo, puedes realizar una de las siguientes acciones:

    • Para especificar una clave de encriptación nueva administrada por el cliente, usa la marca --kms-key.
    • Para usar la clave predeterminada de Google y administrada por Google, no incluyas la marca --kms-key.

REST

Crea una solicitud POST al método compute.disks.insert para crear un Persistent Disk independiente nuevo a partir de una instantánea encriptada. Usa la propiedad sourceSnapshot para especificar la instantánea.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks

{
  "name": "DISK_NAME",
  "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME",
  "diskEncryptionKey": {
     "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto en el que se creará el disco nuevo
  • ZONE: Es la zona en la que se creará el disco nuevo
  • DISK_NAME: Es el nombre del disco nuevo
  • SNAPSHOT_PROJECT_ID: Es el proyecto que contiene la instantánea
  • SNAPSHOT_NAME: Es el nombre de la instantánea encriptada

    Para usar una imagen en lugar de una instantánea, reemplaza sourceSnapshot por sourceImage.

  • KMS_PROJECT_ID: (Opcional) es el proyecto que contiene la clave de Cloud KMS

  • REGION: (Opcional) la región en la que se encuentra la clave de Cloud KMS

  • KEY_RING: (Opcional) es el llavero de claves que contiene la clave de Cloud KMS

  • KEY: (Opcional) Es el nombre de la clave de Cloud KMS que se usará para encriptar el disco nuevo

    Si incluyes diskEncryptionKey, el disco se encripta con la clave de Cloud KMS especificada. Si no incluyes diskEncryptionKey, el disco se encripta con una clave de Google y administrada por Google.

Conecta un disco de arranque encriptado con CMEK a una VM nueva

Console

  1. En la consola de Google Cloud, ve a la página Crea una instancia.

    Ir a Crear una instancia

  2. Especifica los detalles de la VM y, en la sección Disco de arranque, haz clic en Cambiar. A continuación, sigue estos pasos:

    1. Haz clic en Discos existentes.
    2. En la lista Disco, elige un disco existente para conectar a la VM.
    3. Haz clic en Seleccionar.
  3. Continúa con el proceso de creación de VM.

gcloud

Para conectar un disco encriptado cuando creas una VM nueva, usa el comando gcloud compute instances create. Usa la marca --disk para especificar el disco de arranque encriptado, como se muestra en el siguiente ejemplo:

gcloud compute instances create VM_NAME \
  ...
  --disk name=DISK_NAME,boot=yes

Reemplaza lo siguiente:

  • VM_NAME: Es el nombre de la VM que estás creando
  • DISK_NAME: Es el nombre del disco encriptado

REST

Realiza una solicitud POST al compute.instances.insert método . Usa la propiedad disks para especificar el disco de arranque encriptado, como se muestra en el siguiente ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "disks": [
    {
      "deviceName": "DISK_ALIAS",
      "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
  ]
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el proyecto en el que se creará la VM nueva
  • ZONE: Es la zona en la que se creará la VM.
  • DISK_ALIAS: un nombre de dispositivo único para usar como alias de disco en el directorio /dev/disk/by-id/google-* de la VM que ejecuta un sistema operativo Linux. Este nombre se puede usar para hacer referencia al disco a fin de activar, cambiar el tamaño, etc., desde la instancia. Si no especificas un nombre de dispositivo, la VM elige un nombre de dispositivo predeterminado para aplicarlo a este disco, con el formato persistent-disk-x, en el que x es un número asignado por Compute Engine. Este campo solo se aplica a los volúmenes de Persistent Disk.
  • DISK_NAME: Es el nombre del disco encriptado

Quita la clave de encriptación de Cloud KMS de un Persistent Disk

Puedes desencriptar el contenido de un disco encriptado y crear un disco nuevo que use la encriptación predeterminada de Google Cloud. De forma predeterminada, Google Cloud encripta todos los datos en reposo.

  1. Crea una instantánea del disco de arranque.
  2. Usa la instantánea encriptada nueva para crear un disco persistente nuevo.

Después de crear el disco persistente nuevo, este usa la encriptación predeterminada de Google Cloud para proteger el contenido del disco. Las instantáneas que creas desde ese disco también deben usar la encriptación predeterminada.

Rota la clave de encriptación de Cloud KMS para un disco

Rota la clave que se usa para encriptar el disco mediante la creación de un disco nuevo que use una versión de clave de Cloud KMS nueva. La rotación de las claves es una práctica recomendada para cumplir con las prácticas de seguridad estandarizadas. Para rotar tus claves, haz lo siguiente:

  1. Rota la clave de Cloud KMS.
  2. Crea una instantánea del disco de arranque.
  3. Usa la instantánea nueva para crear un disco nuevo con la clave rotada en el paso anterior.
  4. Reemplaza el disco conectado a la VM que usa la clave de encriptación anterior.

Cuando creas el disco nuevo, este usa la versión de clave nueva para la encriptación. Las instantáneas que creas desde ese disco usan la última versión de la clave primaria.

Cuando rotas una clave, los datos que se encriptaron con versiones de claves anteriores no se vuelven a encriptar de forma automática. Para obtener más información, consulta Vuelve a encriptar datos. La rotación de una clave no inhabilita ni destruye de forma automática una versión de clave existente.

Impacto de la inhabilitación o eliminación de CMEK

Inhabilitar o borrar una clave de encriptación tiene los siguientes efectos en los siguientes recursos que la clave ayuda a proteger:

  • Las VM con discos adjuntos no se pueden iniciar. Si habilitaste el cierre de VM en la revocación de claves, se cierran las VM con discos adjuntos que la clave ayuda a proteger.
  • Los discos no se pueden adjuntar a las VM, ni se pueden crear instantáneas para ellos.
  • Las instantáneas no se pueden usar para crear un disco.
  • Las imágenes no se pueden usar para crear un disco.

Si inhabilitas la clave, puedes revertir los efectos anteriores si la habilitas. Si borras la clave, no podrás revertir los efectos anteriores.

Configura el cierre de VM en la revocación de claves de Cloud KMS

Puedes configurar la VM para que se cierre de forma automática cuando revoques la clave de Cloud KMS que ayuda a proteger un Persistent Disk conectado a la VM. Puedes revocar una clave mediante su inhabilitación o eliminación. Con esta configuración habilitada, la VM se cierra dentro de 7 horas tras la revocación de claves.

Si vuelves a habilitar la clave, puedes reiniciar la VM con el disco adjunto que la clave ayuda a proteger. La VM no se reinicia de forma automática después de habilitar la clave.

Console

Para configurar una VM para que se cierre cuando se revoca una clave de Cloud KMS, haz lo siguiente:

  1. Para comenzar, crea una VM que incluya un disco protegido por una clave de Cloud KMS.
  2. Abre el menú Herramientas de redes, discos, seguridad, administración, usuario único.
  3. Expande la sección Administración.
  4. En Política de revocación de clave de encriptación administrada por el cliente (CMEK), elige Cerrar.

gcloud

Usa el comando gcloud compute instances create para crear una VM y, luego, incluye --key-revocation-action-type=stop.

gcloud compute instances create VM_NAME \
  --image IMAGE \
  --key-revocation-action-type=stop

REST

Usa el método instances.insert para crear una VM y configura la propiedad "keyRevocationActionType" como "STOP". En el siguiente ejemplo, se crea la VM a partir de una imagen pública.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "keyRevocationActionType": "STOP"
}

De forma alternativa, puedes configurar una plantilla de instancias para crear VMs que se cierren cuando se revoquen claves mediante Google Cloud CLI o REST.

Console

Puedes usar una plantilla de instancias para crear VMs que se cierran cuando se revoque una clave de Cloud KMS.

  1. Para comenzar, crea una plantilla de instancias nueva que incluya un disco protegido por una clave de Cloud KMS.
  2. Abre el menú Herramientas de redes, discos, seguridad, administración, usuario único.
  3. Expande la sección Administración.
  4. En Política de revocación de clave de encriptación administrada por el cliente (CMEK), elige Cerrar.

gcloud

Crea una plantilla de instancias con el comando gcloud compute instance-templates create e incluye --key-revocation-action-type=stop.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --key-revocation-action-type=stop

REST

Realiza una solicitud POST al método instanceTemplates.insert. En el cuerpo de la solicitud, debes definir de forma explícita todos los campos de configuración obligatorios. Si deseas que las VM creadas a partir de esta plantilla se cierren en la revocación de claves, especifica "keyRevocationActionType":"STOP". Por ejemplo, una plantilla de instancias con la cantidad mínima de campos obligatorios para crear VMs que se cierran con la revocación de claves se ve de la siguiente manera:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceTemplates

{
  "name": "example-template",
  "properties": {
  "machineType": "e2-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs": [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-11"
      }
    }
  ],
  "keyRevocationActionType": "STOP"
  }
}

Después de crear una VM que esté configurada para cerrarse cuando se revoque Cloud KMS, create y adjunta un Persistent Disk encriptado con una clave de Cloud KMS.