Encriptar un disco de arranque de una VM de TPU con una clave de cifrado gestionada por el cliente (CMEK)

De forma predeterminada, Cloud TPU encripta el contenido de los clientes en reposo. Cloud TPU se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.

Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Cloud TPU. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.

Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceso a tus recursos de Cloud TPU será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).

Después de crear una clave CMEK, tendrás que conceder acceso a tu clave a la cuenta de servicio de Compute Engine.

Concede permiso para usar la llave

Debes asignar el rol de gestión de identidades y accesos Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) a la clave de Cloud KMS del agente de servicio de Compute Engine de tu Google Cloud proyecto. Al conceder este rol, el servicio Compute Engine puede acceder a tu clave de cifrado y usarla.

Para asignar el rol roles/cloudkms.cryptoKeyEncrypterDecrypter al agente de servicio de Compute Engine, selecciona una de las siguientes opciones:

gcloud

Ejecuta el siguiente comando:

gcloud kms keys add-iam-policy-binding KEY_NAME \
    --location LOCATION \
    --keyring RING_NAME \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --project KEY_PROJECT_ID

Haz los cambios siguientes:

  • KEY_NAME: el nombre de tu clave.
  • LOCATION: la ubicación en la que has creado el conjunto de claves.
  • RING_NAME: el nombre del conjunto de claves.
  • PROJECT_NUMBER: tu número de proyecto Google Cloud .
  • KEY_PROJECT_ID: el ID de tu proyecto de clave.

Consola

  1. En la Google Cloud consola, ve a la página Gestión de claves.

    Ir a Gestión de claves

  2. Haga clic en el nombre del conjunto de claves que contiene la clave.

  3. Haga clic en el nombre de la clave que quiera modificar.

  4. Haz clic en la pestaña Permisos.

  5. Haz clic en Conceder acceso. Se abrirá el panel Dar acceso a la clave.

  6. En el campo Nuevos principales, introduce el nombre del agente de servicio de Compute Engine:

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

    Sustituye PROJECT_NUMBER por el número de tu proyecto. Google Cloud

  7. En el menú Selecciona un rol, elige Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS.

  8. Haz clic en Guardar.

Crear una VM de TPU con una CMEK

Puedes especificar una CMEK al crear una VM de TPU mediante la API TPU o la API QueuedResources.

API de TPU

Para especificar una CMEK al crear una VM de TPU mediante la API de Cloud TPU, usa el argumento --boot-disk del comando tpu-vm create para especificar la clave de cifrado que quieras usar:

gcloud compute tpus tpu-vm create TPU_NAME \
    --zone ZONE \
    --boot-disk kms-key=projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --version=TPU_RUNTIME_VERSION \
    --accelerator-type=ACCLERATOR_TYPE

Haz los cambios siguientes:

  • TPU_NAME: el nombre de tu VM de TPU.
  • ZONE: la zona en la que tienes previsto crear tu TPU de Cloud.
  • PROJECT_ID: tu ID de proyecto Google Cloud .
  • REGION: la región en la que has creado el conjunto de claves.
  • RING_NAME: el nombre del conjunto de claves.
  • KEY_NAME: el nombre de tu clave.
  • TPU_RUNTIME_VERSION: la versión de software de la TPU de Cloud.
  • ACCELERATOR_TYPE: el tipo de acelerador de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos para cada versión de TPU, consulta Versiones de TPU.

API Queued Resources

Para especificar una CMEK al crear una VM de TPU mediante la API Queued Resources, usa el argumento --bootdisk del comando queued-resources create para especificar la clave de cifrado que se va a usar:

gcloud compute tpus queued-resources create QUEUED_RESOURCE_ID \
    --zone ZONE \
    --node-id NODE_ID \
    --boot-disk kms-key=projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME \
    --runtime-version=TPU_RUNTIME_VERSION \
    --accelerator-type=ACCLERATOR_TYPE

Haz los cambios siguientes:

  • QUEUED_RESOURCE_ID: ID asignado por el usuario de la solicitud de recurso en cola.
  • ZONE: la zona en la que tienes previsto crear tu TPU de Cloud.
  • NODE_ID: ID asignado por el usuario de la TPU de Cloud que se crea cuando se asigna la solicitud de recurso en cola.
  • PROJECT_ID: tu ID de proyecto Google Cloud .
  • REGION: la región en la que has creado el conjunto de claves.
  • RING_NAME: el nombre del conjunto de claves.
  • KEY_NAME: el nombre de tu clave.
  • TPU_RUNTIME_VERSION: la versión de software de la TPU de Cloud.
  • ACCELERATOR_TYPE: el tipo de acelerador de la TPU de Cloud que quieres crear. Para obtener más información sobre los tipos de aceleradores admitidos para cada versión de TPU, consulta Versiones de TPU.

Para obtener información sobre cómo crear VMs de TPU con CMEKs mediante GKE, consulta el artículo Usar claves de encriptado gestionadas por el cliente en la documentación de GKE.

CMEKs eliminadas o revocadas

Si se revoca o elimina una CMEK, las VMs de TPU que usen un disco de arranque cifrado con la CMEK eliminada o revocada no se apagarán automáticamente. La VM de TPU seguirá teniendo acceso a los datos del disco de arranque cifrado hasta que se apague o se reinicie. De esta forma, puedes recuperar tus datos si restauras el acceso a una clave revocada o eliminada. Si vuelves a habilitar una clave, podrás iniciar o reparar tu VM de TPU, y el disco de arranque se descifrará y se cargará correctamente.