Proteja los recursos mediante el uso de claves de Cloud KMS


Este documento proporciona información sobre cómo utilizar claves Cloud KMS del servicio de administración de claves en la nube creadas manualmente para cifrar discos y otros recursos relacionados con el almacenamiento. Las claves administradas en Cloud KMS se conocen como claves de cifrado administradas por el cliente (CMEK) .

Puedes usar CMEK para cifrar recursos de Compute Engine, como discos , imágenes de máquinas , instantáneas e instantáneas estándar .

Para obtener más información sobre el uso de claves de cifrado proporcionadas por el cliente (CSEK) para cifrar discos y otros recursos de almacenamiento, consulte Cifrado de discos con claves de cifrado proporcionadas por el cliente .

Obtenga más información sobre el cifrado de disco .

Antes de comenzar

  • Comprender los discos , las imágenes , las instantáneas de discos persistentes y las instancias de máquinas virtuales (VM) .
  • Decide si vas a ejecutar Compute Engine y Cloud KMS al mismo tiempo. Google Cloud proyecto, o en diferentes proyectos. Para obtener información sobre los ID y los números de proyecto de Google Cloud, consulte Identificación de proyectos .
  • Para el proyecto de Google Cloud que ejecuta Cloud KMS, haga lo siguiente:
    1. Enable the Cloud KMS API.

      Enable the API

  • + Si desea crear un nuevo volumen Hyperdisk Balanced en modo Confidencial, asegúrese de que su caso de uso sea compatible revisando las Limitaciones relevantes y las regiones admitidas .
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Roles requeridos

Para garantizar que el agente de servicio de Compute Engine tenga los permisos necesarios para proteger los recursos mediante el uso de claves de Cloud KMS, solicite a su administrador que le otorgue al agente de servicio de Compute Engine la función de IAM CryptoKey Encrypter/Decrypter ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) de Cloud KMS en su proyecto.

Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Es posible que tu administrador también pueda otorgarle al agente de servicio de Compute Engine los permisos necesarios a través de roles personalizados u otros roles predefinidos .

El Agente de Servicio de Compute Engine tiene la siguiente forma:

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

Puede utilizar la CLI de Google Cloud 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

Reemplace lo siguiente:

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

Especificaciones de cifrado

Las claves de Cloud KMS utilizadas para ayudar a proteger tus datos en Compute Engine son claves AES-256. Estas claves son claves de cifrado de claves y cifran las claves de cifrado de datos que cifran sus datos, no los datos en sí.

Los datos de los discos se cifran mediante Google-owned and Google-managed encryption keys. Para especificaciones relacionadas con el cifrado predeterminado en Google Cloud, consulte Cifrado predeterminado en reposo en la documentación de Seguridad.

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

Limitaciones

  • No puede cifrar recursos existentes con CMEK. Solo puede cifrar discos, imágenes e instantáneas con CMEK cuando los crea.

  • Cuando crea un disco a partir de una instantánea instantánea cifrada con CMEK, debe especificar la clave utilizada para cifrar el disco de origen. No es necesario especificar la clave cuando trabaja con otros recursos cifrados con CMEK, como clones de discos e instantáneas estándar.

  • ( Vista previa ) Cuando crea una instantánea de ámbito regional desde un disco cifrado con CMEK, debe crear la instantánea con una CMEK regional que esté en la misma ubicación que la instantánea. Esto garantiza el aislamiento regional de su instantánea y aumenta la confiabilidad de su instantánea.

  • No puede usar sus propias claves con discos SSD locales porque las claves son administradas por Google Cloud infraestructura y se elimina cuando se finaliza la VM.

  • Los recursos regionales (discos) solo se pueden cifrar mediante 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 localización global.

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

    Los recursos globales (como imágenes e instantáneas) se pueden cifrar mediante claves en cualquier ubicación. Para obtener más información, consulte Tipos de ubicaciones para Cloud KMS .

  • El cifrado de un disco, instantánea o imagen con una clave es permanente. No puede eliminar el cifrado del recurso, cambiar el tipo de cifrado ni cambiar la clave que se utiliza. La única forma de eliminar el cifrado o cambiar las claves de cifrado es crear una copia del recurso mientras se especifica una nueva opción de cifrado. Por ejemplo, para cambiar el uso de claves generadas por Google en un disco a CMEK, siga estos pasos:

    1. Cree una instantánea del disco .
    2. Cree un nuevo disco a partir de la instantánea . Cuando cree el nuevo disco, seleccione el tipo de cifrado que desee.

    Para obtener más información, consulte Cambiar el tipo de disco .

Creación de claves manual o automatizada

Puede crear claves de Cloud KMS manualmente o utilizar la clave automática de Cloud KMS. Autokey simplifica la creación y administración de claves de Cloud KMS al automatizar el aprovisionamiento y la asignación. Con Autokey, no necesita aprovisionar conjuntos de claves, claves y cuentas de servicio con anticipación. En cambio, se generan bajo demanda como parte de la creación de recursos de Compute Engine. Para obtener más información, consulte la descripción general de Autokey .

Crear manualmente un llavero y una clave

Para el proyecto de Google Cloud que ejecuta Cloud KMS, cree un conjunto de claves y una clave como se describe en Creación de conjuntos de claves y claves .

Cifre un nuevo disco persistente con CMEK

Puede cifrar un nuevo disco persistente proporcionando una clave durante la creación de la máquina virtual o del disco.

Consola

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

    Ir a discos

  2. Haga clic en Crear disco e ingrese las propiedades del nuevo disco.
  3. En Cifrado , seleccione Clave administrada por el cliente .
  4. En el menú desplegable, seleccione la clave de Cloud KMS que desea usar para cifrar este disco.
  5. Para crear el disco, haga clic en Crear .

nube de gcloud

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

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

Reemplace lo siguiente:

  • DISK_NAME : el nombre del nuevo disco
  • KMS_PROJECT_ID : el proyecto propietario de la clave Cloud KMS
  • REGION : la región donde se encuentra la clave
  • KEY_RING : el nombre del llavero que incluye la clave
  • KEY : el nombre de la clave utilizada para cifrar el disco.

DESCANSAR

Construya una solicitud POST para el método instances.insert . Para cifrar un disco, utilice la propiedad diskEncryptionKey con la propiedad kmsKeyName . Por ejemplo, puedes cifrar un disco nuevo durante la creación de la VM con tu clave de Cloud KMS mediante lo siguiente:

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
 }
],
...
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE : la zona para crear la VM en
  • MACHINE_TYPE : el tipo de máquina, por ejemplo c3-standard-4
  • KMS_PROJECT_ID : el proyecto propietario de la clave Cloud KMS
  • REGION : la región donde se encuentra el disco
  • KEY_RING : el nombre del llavero que incluye la clave
  • KEY : el nombre de la clave utilizada para cifrar el disco.
  • SOURCE_IMAGE : la imagen que se utilizará al crear la VM, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115

De manera similar, puedes usar el método disks.insert para crear un nuevo disco persistente independiente y cifrarlo 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"
}

Reemplace lo siguiente:

  • PROJECT_ID : el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE : la zona para crear el disco en
  • SOURCE_IMAGE : la imagen que se utilizará al crear el disco, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME : un nombre para el nuevo disco
  • KMS_PROJECT_ID : el proyecto propietario de la clave Cloud KMS
  • REGION : la región donde se encuentra el disco
  • KEY_RING : el nombre del llavero que incluye la clave
  • KEY : el nombre de la clave utilizada para cifrar el disco.
  • DISK_TYPE : el tipo de disco a crear

Cree un disco Hyperdisk Balanced en modo confidencial

Puede crear un nuevo disco Hyperdisk Balanced en modo Confidencial con la consola de Google Cloud, la CLI de Google Cloud o REST. Para crear un disco que no esté en modo confidencial, siga los pasos en Crear un disco persistente a partir de una instantánea cifrada con CMEK .

Consola

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

    Ir a discos

  2. Haga clic en Crear disco e ingrese las propiedades del nuevo disco.
  3. En la sección Configuración de disco , elija Hiperdisco equilibrado para el tipo de disco.
  4. Opcional. Cambie las configuraciones predeterminadas de Tamaño del disco, IOPS aprovisionadas y Rendimiento aprovisionado para el disco.
  5. En la sección Cifrado , seleccione Clave de Cloud KMS .
  6. En la lista de claves, seleccione la clave de Cloud HSM que desea usar para cifrar este disco.
  7. En la sección Computación confidencial , seleccione Habilitar servicios de Computación confidencial .
  8. Para crear el disco, haga clic en Crear .

nube de gcloud

Cifre un disco nuevo con el modo Confidencial para Hyperdisk Balanced mediante el comando gcloud compute disks create . Habilite el modo Confidencial con el indicador --confidential-compute y especifique la clave usando el indicador --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

Reemplace lo siguiente:

  • DISK_NAME : el nombre del nuevo disco
  • KMS_PROJECT_ID : el proyecto que posee la clave de Cloud HSM
  • REGION : la región donde se encuentra la clave
  • KEY_RING : el nombre del llavero que incluye la clave
  • KEY : el nombre de la clave utilizada para cifrar el disco.

DESCANSAR

Construya una solicitud POST para el método instances.insert . Para cifrar un disco con el modo Confidencial para Hyperdisk Balanced, use la propiedad diskEncryptionKey con la propiedad kmsKeyName y establezca el indicador enableConfidentialCompute . Por ejemplo, puede cifrar un disco nuevo durante la creación de VM con su clave de Cloud HSM mediante lo siguiente:

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"
  }
]
}

Reemplace lo siguiente:

  • DISK_TYPE : el tipo de disco a crear, por ejemplo, hyperdisk-balanced
  • PROJECT_ID : el ID del proyecto de Google Cloud que ejecuta Compute Engine
  • ZONE : la zona para crear la VM en
  • 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 : la región donde se encuentra el disco
  • KEY_RING : el nombre del llavero que incluye la clave
  • KEY : el nombre de la clave utilizada para cifrar el disco.
  • SOURCE_IMAGE : la imagen que admite la VM confidencial para usar al crear la VM, por ejemplo, projects/debian-cloud/global/images/debian-11-bullseye-v20231115

De manera similar, puede 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
}

Reemplace lo siguiente:

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

Cree una instantánea desde un disco cifrado con CMEK

Para ayudar a proteger una instantánea que crea desde un disco cifrado con CMEK, debe utilizar la misma clave de cifrado que utilizó para cifrar el disco.

No puede crear una instantánea que use CMEK a menos que el disco de origen también use CMEK. Además, no puede convertir discos o instantáneas cifrados con CMEK para usarGoogle Cloud cifrado predeterminado a menos que cree una imagen de disco completamente nueva y un nuevo disco persistente .

Las instantáneas de discos cifrados con CMEK son incrementales .

Consola

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

    Ir a instantáneas

  2. Haga clic en Crear instantánea .
  3. En Disco de origen , elija el disco de origen para la instantánea. La instantánea se cifra automáticamente con la misma clave utilizada por el disco de origen.

nube de gcloud

Para el cifrado administrado por el cliente, la clave de Cloud KMS que se usó para cifrar el disco también se usa para cifrar la instantánea.

Puede crear su instantánea en la política de ubicación de almacenamiento definida por la configuración de su instantánea o utilizando una ubicación de almacenamiento alternativa de su elección. Para obtener más información, consulte Elija su ubicación de almacenamiento de instantáneas .

  • Para crear una instantánea en la ubicación predeterminada predefinida o personalizada configurada en la configuración de la 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
    
  • Alternativamente, para anular la configuración de la instantánea y crear una instantánea en una ubicación de almacenamiento personalizada, incluya la marca --storage-location para indicar dónde almacenar su 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
    
  • ( Vista previa ) Para crear una instantánea con ámbito regional en una región permitida, incluya el indicador --region para indicar dónde crear su instantánea.

      gcloud beta compute snapshots create SNAPSHOT_NAME \
          --region=SNAPSHOT_SCOPE_REGION
          --source-disk=SOURCE_DISK_NAME \
          --source-disk-zone=SOURCE_ZONE \
          --snapshot-type=SNAPSHOT_TYPE \
          --kms-key=projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY
    

Reemplace lo siguiente:

  • SNAPSHOT_NAME : un nombre para la instantánea.
  • SOURCE_ZONE : La zona del disco de origen.
  • SOURCE_DISK_NAME : el nombre del volumen de disco desde el que desea crear una instantánea.
  • KMS_PROJECT_ID : el proyecto que contiene la clave de cifrado almacenada en Cloud Key Management Service.
  • KEY_REGION : la región donde se encuentra la clave de Cloud KMS.
  • KEY_RING : el nombre del conjunto de claves que contiene la clave de Cloud KMS.
  • SNAPSHOT_KEY : el nombre de la clave de Cloud KMS que usaste para cifrar el disco de origen.
  • SNAPSHOT_TYPE : el tipo de instantánea, ya sea ESTÁNDAR o ARCHIVO . Si no se especifica un tipo de instantánea, se crea una instantánea STANDARD .
  • STORAGE_LOCATION : Opcional: para instantáneas de alcance global, la región múltiple de Cloud Storage o la región de Cloud Storage donde desea almacenar su instantánea. Puede especificar solo una ubicación de almacenamiento.

    Utilice el parámetro --storage-location solo cuando desee anular la ubicación de almacenamiento predeterminada predefinida o personalizada configurada en la configuración de su instantánea.

  • SNAPSHOT_SCOPE_REGION : Opcional: para instantáneas con ámbito regional, la región a la que tiene alcance la instantánea. Si incluye este parámetro, no podrá utilizar el parámetro --storage-location . STORAGE_LOCATION se establece automáticamente en SNAPSHOT_SCOPE_REGION .

DESCANSAR

Puede crear su instantánea en la política de ubicación de almacenamiento definida por la configuración de su instantánea o utilizando una ubicación de almacenamiento alternativa de su elección. Para obtener más información, consulte Elija su ubicación de almacenamiento de instantáneas .

  • Para crear una instantánea en la ubicación predeterminada predefinida o personalizada configurada en la configuración de su instantánea, realice 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"
    }
    
  • Como alternativa, para anular la configuración de la instantánea y crear una instantánea en una ubicación de almacenamiento personalizada, realice una solicitud POST al método snapshots.insert e incluya la propiedad storageLocations en su 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"
        ],
    }
    
  • ( Vista previa ) Para crear una instantánea con ámbito regional en una región permitida, realice una solicitud POST al método snapshots.insert y defina la región de creación:

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "snapshotEncryptionKey": {
        "kmsKeyName":"projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY",
      },
    }
    

Reemplace lo siguiente:

  • DESTINATION_PROJECT_ID : el ID del proyecto en el que desea crear la instantánea.
  • SNAPSHOT_NAME : un nombre para la instantánea.
  • SOURCE_PROJECT_ID : el ID del proyecto del disco de origen.
  • SOURCE_ZONE : La zona del disco de origen.
  • SOURCE_DISK_NAME : el nombre del disco desde el que desea crear una instantánea.
  • KMS_PROJECT_ID : el proyecto que contiene la clave de cifrado almacenada en Cloud Key Management Service.
  • KEY_REGION : la región donde se encuentra la clave de Cloud KMS.
  • KEY_RING : el nombre del conjunto de claves que contiene la clave de Cloud KMS.
  • SNAPSHOT_KEY : el nombre de la clave de Cloud KMS que usaste para cifrar el disco de origen.
  • SNAPSHOT_TYPE : el tipo de instantánea, ya sea ESTÁNDAR o ARCHIVO . Si no se especifica un tipo de instantánea, se crea una instantánea STANDARD .
  • STORAGE_LOCATION : Opcional: para instantáneas de alcance global, la región múltiple de Cloud Storage o la región de Cloud Storage donde desea almacenar su instantánea. Puede especificar solo una ubicación de almacenamiento.

    Utilice el parámetro storageLocations solo cuando desee anular la ubicación de almacenamiento predeterminada predefinida o personalizada configurada en la configuración de su instantánea.

  • SNAPSHOT_SCOPE_REGION : Opcional: para instantáneas con ámbito regional, la región a la que tiene alcance la instantánea. Si incluye este parámetro, no podrá utilizar el parámetro storageLocations . STORAGE_LOCATION se establece automáticamente en SNAPSHOT_SCOPE_REGION .

Cifrar una imagen importada con CMEK

Puedes cifrar una nueva imagen cuando importas una imagen personalizada a Compute Engine. Antes de poder importar una imagen, debes crear y comprimir un archivo de imagen de disco y cargar ese archivo comprimido en Cloud Storage .

Consola

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

    Ir a Imágenes

  2. Haz clic en Crear imagen .
  3. Para Disco de origen , seleccione el disco del que desea crear una imagen.
  4. Para Cifrado , seleccione Clave administrada por el cliente .
  5. En el menú desplegable, seleccione la clave de Cloud KMS que desea usar para cifrar esta imagen.
  6. Continúe con el proceso de creación de la imagen.

nube de gcloud

Para importar y cifrar una imagen, usa el comando gcloud compute images create . Para el cifrado administrado por el cliente, especifique 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

Reemplace lo siguiente:

  • IMAGE_NAME : el nombre de la imagen que estás creando
  • SOURCE_DISK : el nombre del disco para crear una instantánea
  • KMS_PROJECT_ID : el proyecto que contiene la clave de Cloud KMS
  • REGION : la región en la que se encuentra la clave de Cloud KMS
  • KEY_RING : el conjunto de claves que contiene la clave de Cloud KMS
  • KEY : el nombre de la clave que se utilizará para cifrar el nuevo disco.

DESCANSAR

Para cifrar una imagen importada, cree una solicitud POST para el método images.insert . Especifique el URI del archivo comprimido, agregue la propiedad imageEncryptionKey a la solicitud de creación de imagen y especifique la clave para cifrar 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"
   }
}

Reemplace lo siguiente:

  • PROJECT_ID : el proyecto para crear la imagen cifrada en
  • IMAGE_NAME : el nombre de la imagen que estás creando
  • KMS_PROJECT_ID : el proyecto que contiene la clave de Cloud KMS
  • REGION : la región en la que se encuentra la clave de Cloud KMS
  • KEY_RING : el conjunto de claves que contiene la clave de Cloud KMS
  • KEY : el nombre de la clave que utilizó para cifrar el disco de origen

Cree un disco a partir de una instantánea cifrada con CMEK

Para crear un nuevo disco a partir de una instantánea cifrada, haga lo siguiente:

Consola

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

    Ir a discos

  2. Haga clic en Crear disco e ingrese las propiedades del nuevo disco.
  3. Para Tipo de fuente , seleccione la instantánea o imagen que desea utilizar.
  4. Opcional: si desea especificar una nueva clave de cifrado, para Cifrado , especifique el tipo de clave de cifrado que se utilizará y luego proporcione la información de la clave de cifrado.

    Si desea eliminar la clave de cifrado administrada o proporcionada por el cliente, para Cifrado , utilice el valor predeterminadoGoogle-managed encryption key .

  5. Continúe con el proceso de creación del disco.

nube de gcloud

  • Para crear un disco nuevo a partir de una instantánea cifrada de ámbito global, usa el comando gcloud compute disks create .

    gcloud compute disks create DISK_NAME \
      --zone=ZONE \
      --source-snapshot=SNAPSHOT_NAME \
      --kms-key=projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY
    
  • ( Vista previa ) Para crear un disco nuevo a partir de una instantánea cifrada de ámbito regional, use el comando gcloud compute disks create y especifique la región de la instantánea de origen.

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

Reemplace lo siguiente:

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

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

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

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

  • SOURCE_REGION : la región a la que se refiere la instantánea de origen

  • ZONE : La zona donde residirá el nuevo disco.

  • KEY_RING : Opcional: el conjunto de claves que contiene la clave de Cloud KMS.

  • KEY : Opcional: el nombre de la clave de Cloud KMS que se utilizará para cifrar el nuevo disco.

    Para cifrar el nuevo disco, puede realizar una de las siguientes acciones:

    • Para especificar una nueva clave de cifrado administrada por el cliente, utilice el indicador --kms-key .
    • Para usar el valor predeterminado Google-owned and Google-managed encryption key, no incluya la marca --kms-key .

DESCANSAR

  • Para crear un nuevo disco a partir de una instantánea cifrada de ámbito global, cree una solicitud POST para el método compute.disks.insert . Utilice 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"
      }
    }
    
  • ( Vista previa ) Para crear un nuevo disco a partir de una instantánea cifrada de ámbito regional, cree una solicitud POST para el método compute.disks.insert . Utilice 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/regions/SOURCE_REGION/snapshots/SNAPSHOT_NAME",
      "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE",
      "zone": "projects/PROJECT_ID/zones/ZONE"
      "diskEncryptionKey": {
        "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
      }
    }
    

Reemplace lo siguiente:

  • PROJECT_ID : El proyecto para crear el nuevo disco en
  • ZONE : La zona para crear el nuevo disco en
  • SOURCE_REGION : la región a la que se refiere la instantánea de origen
  • DISK_NAME : El nombre del nuevo disco.
  • DISK_TYPE : la URL completa o parcial para el tipo de disco, por ejemplo, PROJECT_ID /zones/ ZONE /diskTypes/pd-ssd
  • SNAPSHOT_PROJECT_ID : El proyecto que contiene la instantánea.
  • SNAPSHOT_NAME : el nombre de la instantánea cifrada.

    Para usar una imagen en lugar de una instantánea, reemplace sourceSnapshot con sourceImage .

  • KMS_PROJECT_ID : Opcional: 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: el conjunto de claves que contiene la clave de Cloud KMS.

  • KEY : Opcional: el nombre de la clave de Cloud KMS que se usará para cifrar el nuevo disco.

    Si incluye diskEncryptionKey , el disco se cifra con la clave de Cloud KMS especificada. Si no incluye diskEncryptionKey , el disco se cifra mediante un Google-owned and Google-managed encryption key.

Adjuntar un disco de arranque cifrado con CMEK a una nueva VM

Consola

  1. En la consola de Google Cloud, vaya a la página Crear una instancia .

    Ir a Crear una instancia

  2. Especifique los detalles de la máquina virtual y, en la sección Disco de arranque , haga clic en Cambiar . Luego, haz lo siguiente:

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

nube de gcloud

Para adjuntar un disco cifrado cuando creas una nueva VM, usa el comando gcloud compute instances create . Utilice el indicador --disk para especificar el disco de arranque cifrado, como se muestra en el siguiente ejemplo:

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

Reemplace lo siguiente:

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

DESCANSAR

Construya una solicitud POST para el método compute.instances.insert . Utilice la propiedad disks para especificar el disco de arranque cifrado, 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"
    }
  ]
}

Reemplace lo siguiente:

  • PROJECT_ID : el proyecto para crear la nueva VM en
  • ZONE : la zona para crear la nueva VM en
  • 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 utilizar para hacer referencia al disco para operaciones como montar o cambiar el tamaño desde dentro de la instancia. Si no especificas un nombre de dispositivo, la VM elige un nombre de dispositivo predeterminado para aplicarlo a este disco, en el formato persistent-disk-x , donde x es un número asignado por Compute Engine. Este campo solo se aplica a volúmenes de disco persistente.
  • DISK_NAME : el nombre del disco cifrado

Elimina tu clave de cifrado de Cloud KMS de un disco persistente

Puede descifrar el contenido de un disco cifrado y crear un disco nuevo que utilice Google Cloud cifrado predeterminado en su lugar. Por defecto, Google Cloudcifra todos los datos en reposo .

  1. Cree una instantánea del disco cifrado .
  2. Utilice la nueva instantánea cifrada para crear un nuevo disco persistente .

Después de crear el nuevo disco persistente, utiliza Google Cloud cifrado predeterminado para ayudar a proteger el contenido del disco. Cualquier instantánea que cree desde ese disco también debe utilizar el cifrado predeterminado.

Gire su clave de cifrado de Cloud KMS para un disco

Gire la clave que se usa para cifrar el disco creando un disco nuevo que use una nueva versión de clave de Cloud KMS. La rotación de claves es una buena práctica para cumplir con las prácticas de seguridad estandarizadas . Para rotar sus claves, haga lo siguiente:

  1. Gire su clave de Cloud KMS .
  2. Cree una instantánea del disco cifrado .
  3. Utilice la nueva instantánea para crear un nuevo disco con la clave girada en el paso anterior.
  4. Reemplace el disco conectado a su VM que usa la clave de cifrado anterior.

Cuando crea el nuevo disco, utiliza la nueva versión de clave para el cifrado. Cualquier instantánea que cree desde ese disco utiliza la última versión de la clave principal.

Cuando rota una clave, los datos que se cifraron con versiones de clave anteriores no se vuelven a cifrar automáticamente. Para obtener más información, consulte Volver a cifrar datos . Rotar una clave no desactiva ni destruye automáticamente una versión de clave existente.

Deshabilitar o eliminar una CMEK

Si ya no necesita una CMEK o desea impedir su uso, elimine o desactive la clave. Eliminar, deshabilitar o eliminar permisos de IAM en una clave también se conoce como revocar la clave.

Impacto de la revocación de claves en recursos cifrados

Cuando revoca una clave de cifrado, los recursos que protege la clave se ven afectados de la siguiente manera:

  • No puede iniciar una máquina virtual si alguno de sus discos conectados tiene claves revocadas.
  • Si un disco que usa la clave está conectado a una VM en ejecución y habilitaste el apagado de la VM al revocar la clave para la VM, Compute Engine apaga la VM dentro de 7 horas.
  • No puede adjuntar un disco con una clave revocada a una VM ni crear una instantánea desde el disco.
  • No puede utilizar imágenes o instantáneas cifradas con claves revocadas para crear discos.

Si desactiva la clave, puede revertir los efectos anteriores habilitando la clave. Si elimina la clave, no podrá revertir los efectos anteriores.

Configurar el apagado de VM en la revocación de clave de Cloud KMS

Puede configurar su VM para que se apague automáticamente cuando revoque la clave de Cloud KMS que ayuda a proteger un disco conectado a la VM. Puede revocar una clave deshabilitándola o eliminándola . Con esta configuración habilitada, la máquina virtual se apaga dentro de las 7 horas posteriores a la revocación de la clave.

Si habilita la clave nuevamente, puede reiniciar la VM con el disco adjunto que la clave ayuda a proteger. La máquina virtual no se reinicia automáticamente después de habilitar la clave.

Consola

Para configurar una máquina virtual para que se apague cuando se revoque una clave de Cloud KMS, haga lo siguiente:

  1. Comience a crear una máquina virtual que incluya un disco protegido por una clave de Cloud KMS.
  2. Abra el menú Redes, discos, seguridad, administración, arrendamiento único .
  3. Expanda la sección Gestión .
  4. En Política de revocación de clave de cifrado administrada por el cliente (CMEK) , seleccione Apagar .

nube de gcloud

Usa el comando gcloud compute instances create para crear una máquina virtual e incluye --key-revocation-action-type=stop .

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

DESCANSAR

Utilice el método instances.insert para crear una máquina virtual y establezca la propiedad "keyRevocationActionType" en "STOP" . El siguiente ejemplo 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"
}

Como alternativa, puede configurar una plantilla de instancia para crear máquinas virtuales que se apaguen al revocarse la clave mediante la CLI o REST de Google Cloud.

Consola

Puedes usar una plantilla de instancia para crear máquinas virtuales que se apaguen cuando se revoque una clave de Cloud KMS.

  1. Comience a crear una nueva plantilla de instancia que incluya un disco protegido por una clave de Cloud KMS.
  2. Abra el menú Redes, discos, seguridad, administración, arrendamiento único .
  3. Expanda la sección Gestión .
  4. En Política de revocación de clave de cifrado administrada por el cliente (CMEK) , seleccione Apagar .

nube de gcloud

Cree una plantilla de instancia mediante el comando gcloud compute instance-templates create e incluya --key-revocation-action-type=stop .

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

DESCANSAR

Construya una solicitud POST para el método instanceTemplates.insert . En el cuerpo de la solicitud, debe definir explícitamente todos los campos de configuración requeridos. Si desea que las máquinas virtuales creadas a partir de esta plantilla se apaguen al revocarse la clave, especifique "keyRevocationActionType":"STOP" . Por ejemplo, una plantilla de instancia con los campos mínimos requeridos que creará máquinas virtuales que se cerrarán al revocarse la clave se parece a la siguiente:

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 máquina virtual que esté configurada para apagarse tras la revocación de Cloud KMS, cree y adjunte un disco persistente cifrado con una clave de Cloud KMS.