En este documento, se explica cómo encriptar discos con claves de encriptación proporcionadas por el cliente.
Para obtener información sobre la encriptación de discos, consulta Información sobre la encriptación de discos.
Para obtener información sobre la encriptación de discos con claves de encriptación administradas por el cliente (CMEK), consulta Protege recursos con claves de Cloud KMS.
Usar CSEKs significa que proporcionas tus propias claves de encriptación y Compute Engine usa tus claves para proteger las Google-owned and Google-managed encryption keys 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 ni 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
- Consulta la información sobre imágenes, instantáneas de discos y discos.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación verifica tu identidad para acceder a los servicios y las APIs de Google Cloud . Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:
Console
Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud , no necesitas configurar la autenticación.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:
gcloud initSi usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
- Configura una región y una zona predeterminadas.
-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad (IdP) externo, primero debes acceder a gcloud CLI con tu identidad federada.
-
Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:
gcloud auth application-default login
No es necesario que lo hagas si usas Cloud Shell.
Si se devuelve un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.
Python
Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa la gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
REST
Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.
Instala Google Cloud CLI.
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Google Cloud .
Roles y permisos requeridos
Para obtener los permisos que necesitas para crear instantáneas, imágenes y discos encriptados con CSEK, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
- Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1) -
Para conectarte a una VM que tiene una cuenta de servicio adjunta:
Usuario de cuenta de servicio (v1) (
roles/iam.serviceAccountUser)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para crear instantáneas, imágenes y discos encriptados con CSEK. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear instantáneas, imágenes y discos encriptados con CSEK:
-
Para crear una instantánea de un disco, haz lo siguiente:
compute.snapshots.createen el proyecto-
compute.disks.createSnapshoten el disco -
iam.serviceAccounts.actAsen la cuenta de servicio de la instancia, si el disco es el disco de arranque de una instancia que tiene una cuenta de servicio conectada
-
Para crear una imagen, sigue estos pasos:
compute.images.createen el proyecto-
compute.disks.useReadOnlyen el disco -
iam.serviceAccounts.actAsen la cuenta de servicio de la instancia, si el disco es el disco de arranque de una instancia que tiene una cuenta de servicio conectada
-
Para crear un disco a partir de una instantánea estándar, sigue estos pasos:
-
compute.disks.createen el proyecto de destino del disco nuevo -
compute.snapshots.useReadOnlyen la instantánea
-
-
Para crear un disco a partir de una imagen, sigue estos pasos:
-
compute.disks.createen el proyecto de destino del disco nuevo -
compute.images.useReadOnlyen la imagen
-
-
Para crear un disco a partir de una instantánea inmediata, haz lo siguiente:
-
compute.disks.createen el proyecto de destino del disco nuevo -
compute.instantSnapshots.useReadOnlyen la instantánea inmediata de origen -
iam.serviceAccounts.actAsen la cuenta de servicio de la instancia, si la instantánea inmediata es del disco de arranque de una instancia que tiene una cuenta de servicio conectada
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Restricciones
En CSEK, se aplican las siguientes restricciones:
Restricciones generales
La disponibilidad de las claves de encriptación proporcionadas por el cliente depende de la ubicación de tu cuenta de facturación, no de la ubicación del recurso.
Las claves de encriptación proporcionadas por el cliente no están disponibles para las cuentas de facturación de los siguientes países:
- Brasil
- India
Restricciones técnicas
Solo puedes encriptar discos persistentes nuevos con tu propia clave. No puedes usarla para encriptar discos persistentes existentes.
No puedes usar tus propias claves con discos SSD locales porque estos usan Google-owned and Google-managed encryption keys. Las claves se borran cuando finaliza la VM.
Compute Engine no almacena claves de encriptación con plantillas de instancias, por lo que debes almacenar tus propias claves en KMS para encriptar discos en un grupo de instancias administrado.
No puedes suspender instancias que tengan discos adjuntos protegidos por CSEK.
Especificaciones
En esta sección, se describe la especificación de encriptación y el formato de CSEK.
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.
Formato de clave requerido
Depende de ti generar y administrar la clave. Debes proporcionar una clave que sea una cadena de 256 bits codificada en el formato base64 estándar de la especificación RFC 4648 para Compute Engine.
A continuación, se muestra un ejemplo de una clave codificada en el formato base64, generada con la cadena "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, tienes la opción de unir la clave con un certificado de clave pública RSA que proporcione 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 tienen conocimiento de la clave privada. Cuando unes tu clave con el certificado RSA, te aseguras de que solo los servicios de Google Cloud 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 unida con RSA para Compute Engine, haz lo siguiente:
- 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 la versión 1.5 del relleno PKCS #1.
- Codifica tu clave unida con 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 con RSA. Usa un método que te resulte conocido. A continuación, se muestran dos ejemplos de unión de clave con 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.
Opcional: Genera una clave aleatoria de 256 bits (32 bytes). Si ya tienes una clave que deseas usar, puedes omitir este paso. Existen muchas formas de generar una clave. Por ejemplo:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txtDescarga el certificado de clave pública:
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pemExtrae la clave pública del certificado:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pemUne la clave con RSA y asegúrate de reemplazar
mykey.txtpor tu propio archivo de claves.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txtCodifica la clave unida con 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:
Tu clave ya está lista para usar.
Usa una clave unida a RSA
Con la CLI de Google Cloud, puedes proporcionar una clave normal y una clave unida con RSA de la misma forma.
En la API, usa la propiedad sha256 en lugar de rawKey si deseas usar una clave unida con RSA.
Encripta recursos con CSEK mediante la herramienta de línea de comandos
Las claves de encriptación se pueden usar mediante Google Cloud CLI.
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 CLI de gcloud.
Cuando uses REST, debes proporcionar la clave directamente en la solicitud.
Cada entrada en el archivo de claves debe proporcionar la siguiente información:
- El URI completamente calificado para el recurso que protege la clave
- La clave correspondiente
- El tipo de clave,
raworsa-encrypted
Cuando uses el archivo de claves en las solicitudes, la herramienta buscará recursos coincidentes y usará las claves correspondientes. Si no se encuentran recursos coincidentes, la solicitud fallará.
Formato del archivo de claves
El siguiente es un archivo de claves de ejemplo:
[
{
"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, restringe el acceso a él solo a aquellos que lo necesitan. Asegúrate de establecer los permisos adecuados en estos archivos y considera encriptar estos archivos con herramientas adicionales:
- En Windows, se recomienda el uso de BitLocker o del sistema de encriptación de archivos (EFS).
- En macOS, considera usar FileVault 2.
- En Linux, se recomienda el uso de la configuración de claves unificadas de Linux (LUKS) o eCryptfs.
Crea un volumen de Persistent Disk encriptado con CSEK en blanco
Puedes proporcionar una clave durante la creación de la VM o el disco para encriptar un disco persistente nuevo.
Console
Ir a la página Discos
Haz clic en Crear disco y, luego, ingresa las propiedades del disco nuevo.
En Encriptación, selecciona Clave administrada por el cliente.
Proporciona la clave de encriptación del disco en el campo Clave de encriptación de disco de origen 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 la marca --csek-key-file durante la creación de la instancia. Si usas una clave unida con RSA, usa el componente gcloud beta:
gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
Para encriptar un disco persistente independiente, usa este comando:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
REST
Puedes encriptar un disco si usas la propiedad diskEncryptionKey y solicitas
a la API v1 una clave sin procesar (no unida con RSA) o a la
API Beta una clave unida con 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 con RSA y codificada en el formato base64
Por ejemplo, para encriptar un disco nuevo durante la creación de la VM con una clave unida con RSA, usa este comando:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances
{
"machineType": "zones/us-central1-a/machineTypes/e2-standard-2",
"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 REST para crear un nuevo disco persistente independiente y encriptarlo con tu propia clave:
POST https://compute.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 de un disco encriptado con CSEK
Si creas una instantánea a partir de un disco encriptado con CSEK, debes proporcionar la clave de encriptación que usaste para encriptar el disco y una clave para encriptar la nueva instantánea. También debes encriptar la instantánea con una CSEK.
Para convertir discos o instantáneas encriptados con CSEK para usar Google-owned and Google-managed encryption keys, debes crear un disco o una instantánea nuevos.
Las instantáneas de los discos encriptados con CSEK siempre son instantáneas completas. Esto difiere de las instantáneas de discos encriptados con claves de encriptación administradas por el cliente (CMEK), que son incrementales. Las instantáneas se cobran según el tamaño total de la instantánea, por lo que una instantánea completa puede costar más que una instantánea incremental.
Revisa las prácticas recomendadas para las instantáneas de discos antes de crear la instantánea.
Console
Ir a la página Instantáneas
Haz clic en Crear instantánea.
En Disco de origen, elige el disco encriptado del que deseas crear una instantánea.
Proporciona la clave de encriptación del disco en el campo Clave de encriptación de disco de origen y selecciona Clave unida si la clave se unió con la clave pública RSA.
Para encriptar la instantánea nueva, proporciona una clave de encriptación adicional en la sección Encriptación.
REST
Para realizar la solicitud, proporciona la propiedad sourceDiskEncryptionKey para acceder
al disco persistente de origen. Debes encriptar la instantánea nueva con la propiedad snapshotEncryptionKey.
Solicita a la API v1 una clave sin procesar (no unida con RSA) o a la API Beta una clave unida con RSA.
POST https://compute.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 usada para encriptar el disco persistente. De lo contrario, la solicitud fallará.
La propiedad snapshotEncryptionKey te permite proporcionar una clave para encriptar la instantánea, de modo que, si esta se usa con el fin de crear discos persistentes nuevos, se necesite proporcionar una clave coincidente. Esta clave debe seguir el formato de clave anterior. También puedes optar por dejar esta propiedad sin definir y la instantánea se puede usar para crear discos persistentes nuevos sin la necesidad de usar una clave.
Crea una imagen nueva de un disco o una imagen personalizada encriptada con CSEK
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 Google Cloud CLI o REST para copiar imágenes.
Console
Ve a la página Images (Imágenes).
Haga clic en Crear imagen.
En Disco de origen, elige el disco encriptado del que deseas crear una imagen.
En Encriptación, selecciona una solución de administración de claves de encriptación.
Si se unió la clave con la clave RSA pública, selecciona Clave unida.
gcloud
Sigue las instrucciones para crear una imagen y agrega la marca --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 usas una clave unida con RSA:
gcloud (beta) compute images create .... --csek-key-file example-file.json
Si deseas encriptar la imagen nueva con tu clave, agrega la clave al archivo de claves:
[
{
"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"
}
]
REST
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 con RSA) o a la API Beta una clave unida con RSA. En el siguiente ejemplo, un disco persistente encriptado y unido con RSA se convierte en una imagen que usa la misma clave de encriptación.
POST https://compute.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 se deba proporcionar una clave coincidente cuando esta se use con el fin de crear discos persistentes nuevos. Esta clave debe seguir el mismo formato de clave que se describió antes. También puedes optar por dejar esta propiedad sin definir y la imagen se puede usar para crear discos persistentes nuevos sin la necesidad de usar una clave.
Encripta una imagen importada con CSEK
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 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
Ve a la página Images (Imágenes).
Haga clic en Crear imagen.
En Fuente, elige Archivo de Cloud Storage.
En Archivo de Cloud Storage, ingresa el URI de Cloud Storage.
En Encriptación, elige Clave proporcionada por el cliente y proporciona la clave de encriptación para encriptar la imagen en el campo Clave de encriptación del disco de origen.
gcloud
Usa el comando compute images create para crear una imagen nueva y especifica la marca --csek-key-file con un archivo de claves de encriptación. Si usas una clave unida con RSA, usa el componente gcloud beta:
gcloud (beta) compute images create [IMAGE_NAME] \
--source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \
--csek-key-file [KEY_FILE]
Reemplaza lo siguiente:
[IMAGE_NAME]por el nombre de la imagen personalizada nueva[BUCKET_NAME]: por el nombre del bucket de Cloud Storage que contiene el archivo de imagen comprimido.[COMPRESSED_FILE]: por el nombre del archivo de imagen comprimido.[KEY_FILE]por la ruta a un archivo de claves de encriptación en la estación de trabajo local.
REST
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 con RSA) o a la API Beta una clave unida con RSA.
POST https://compute.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 Persistent Disk a partir de un recurso encriptado con CSEK
Puedes crear un Persistent Disk a partir de los siguientes recursos encriptados con CSEK:
- instantáneas
- instantáneas estándar
- imágenes
Crea un disco a partir de una instantánea encriptada con CSEK
Console
Ir a la página Discos
Haz clic en Crear disco.
En Tipo de origen, selecciona Instantánea.
En Encriptación, selecciona una solución de administración de claves de encriptación.
Si se unió la clave con la clave RSA pública, selecciona Clave unida.
gcloud
En la herramienta de gcloud compute, proporciona la clave de encriptación para la instantánea con la marca --csek-key-file cuando crees el disco. Si usas una clave unida con RSA, usa el componente gcloud beta:
gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json
REST
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 con RSA) o a la API Beta una clave unida con RSA. Por ejemplo, para un nuevo disco persistente independiente que usa una instantánea encriptada, realiza lo siguiente:
POST https://compute.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 de una imagen encriptada con CSEK
Console
Ir a la página Discos
Haz clic en Crear disco.
En Tipo de origen, selecciona Imagen.
En Encriptación, selecciona una solución de administración de claves de encriptación.
Si se unió la clave con la clave RSA pública, selecciona Clave unida.
gcloud
En la herramienta de gcloud compute, proporciona la clave de encriptación para la imagen con la marca --csek-key-file cuando crees el disco. Si usas una clave unida con RSA, usa el componente gcloud beta:
gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
REST
Para usar una imagen encriptada, proporciona sourceImageEncryptionKey, seguida de rawKey o rsaEncryptedKey. Solicita a la API v1 una clave sin procesar (no unida con RSA) o a la API Beta una clave unida con RSA.
POST https://compute.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 con CSEK a una VM nueva
Console
Ir a la página Crear una instancia
En la sección Disco de arranque, haz clic en Cambiar y, luego, haz lo siguiente:
- En la página Disco de arranque, haz clic en la pestaña Discos existentes.
- En la lista Disco, elige un disco encriptado existente para conectarlo a la VM.
Ingresa la clave de encriptación en el campo Clave de desencriptación del disco de origen. Si se unió la clave con la clave RSA pública, selecciona Clave unida.
Haz clic en Seleccionar.
Continúa con el proceso de creación de VM.
gcloud
Para crear una VM y adjuntar un disco encriptado, crea un archivo de claves y proporciona la clave mediante la marca --csek-key-file cuando crees la VM. Si usas una clave unida con RSA, usa el componente gcloud beta:
gcloud (beta) compute instances create example-instance \
--disk name=example-disk,boot=yes \
--csek-key-file example-file.json
REST
Crea una VM con la API de Compute Engine y proporciona rawKey o rsaEncryptedKey con la especificación del disco. Solicita a la API v1 una clave sin procesar (no unida con RSA) o a la API Beta una clave unida con 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 VM que tienen discos encriptados con CSEK
Si deseas obtener información para detener o iniciar una VM que tiene discos encriptados, lee Reinicia una VM 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 encriptados de forma estándar en una solicitud única con Google Cloud CLI, puedes usar la marca --csek-key-file con un archivo de claves y la marca --no-require-csek-key-create en tu solicitud. Si proporcionas ambas marcas, la CLI de gcloud crea los recursos encriptados por el cliente que se definen de forma explícita 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 VM con un disco encriptado por el cliente mediante el archivo de claves y, al mismo tiempo, crear una VM con un disco encriptado de forma 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
Por lo general, no se puede crear example-disk-2 si solo especificaste la marca --csek-key-file, ya que el disco no está definido de manera explícita 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 conGoogle-owned and managed keys.
Quita la CSEK de un Persistent Disk
Puedes desencriptar el contenido de un disco encriptado por el cliente y crear un disco nuevo que use Google-owned and managed keys en su lugar.
- Crea una imagen del disco encriptado y especifica la encriptación automática para la imagen nueva.
- Usa la imagen nueva para crear un disco persistente nuevo.
Después de crear el disco persistente nuevo, Compute Engine usaGoogle-owned and managed keys para proteger el contenido del disco. Las instantáneas que crees desde ese disco también deben usarGoogle-owned and managed keys.