Claves de encriptación proporcionadas por el cliente

Las claves de encriptación proporcionadas por el cliente (CSEK) son una característica de Google Cloud Storage y Google Compute Engine. Si proporcionas tus propias claves de encriptación, Google usa tu clave para proteger las que genera Google y se usan en la encriptación y desencriptación de tus datos.

Términos que se usan en este tema:

  • Clave de encriptación de datos (DEK): Es una clave que se usa para encriptar datos.

  • Clave de encriptación de claves (KEK): Es una clave que se usa para encriptar o “unir” una clave de encriptación de datos.

  • Administrador de clústeres: Es un grupo de procesos que se ejecuta con una identidad de administrador de clústeres en la infraestructura de producción de Google. Implementa la lógica para administrar recursos de Compute Engine, como instancias de VM y discos. Almacena metadatos relacionados con estos recursos.

  • Administrador de instancias: Es un grupo de procesos que se ejecuta con una identidad de administrador de instancias en la infraestructura de producción de Google. Ejecuta modificaciones a instancias de VM (procesos) de la flota, como iniciar/detener VM o conectar/desconectar disco. El Administrador de clústeres especifica cuál debe ser el estado de las VM en determinado momento, y el Administrador de instancias trabaja para ejecutarse en función de eso.

Cómo funcionan las claves de encriptación proporcionadas por el cliente

A continuación, se brinda información sobre cómo funcionan las claves de encriptación proporcionadas por el cliente con Google Cloud Storage y Google Compute Engine.

Cloud Storage

Cuando usas claves de encriptación proporcionadas por el cliente en Cloud Storage:

  • Proporcionas una CSEK sin procesar como parte de una llamada a la API. Esta clave se transmite del frontend de Google a la memoria del sistema de almacenamiento. Esta se usa como clave de encriptación de claves en Google Cloud Storage para tus datos.

  • La CSEK sin procesar se usa para desunir claves de fragmentos unidas a fin de crear claves de fragmentos sin procesar en la memoria. Estas se usan para desencriptar fragmentos de datos almacenados en los sistemas de almacenamiento. Estas claves se usan como las claves de encriptación de datos (DEK) en Google Cloud Storage para tus datos.

    CSEK de Cloud Storage

Claves Almacenadas en Propósito Accesible hasta
CSEK sin procesar Memoria del sistema de almacenamiento Proporcionada por el cliente.
Clave de encriptación de claves (KEK) para claves de fragmento.
Une las claves de fragmento.
Completar la operación solicitada por el cliente (p. ej., insertObject o getObject)
Claves de fragmento unidas Dispositivos de almacenamiento Proteger claves de fragmento almacenadas en reposo Cuando se borra el objeto almacenado
Claves de fragmento sin procesar Memoria de los dispositivos de almacenamiento Clave de encriptación de datos (DEK) para los datos.
Leer y escribir datos en el disco.
Completar la operación que solicita el cliente

Compute Engine

Cuando usas claves de encriptación proporcionadas por el cliente en Compute Engine:

  • Proporcionas una CSEK sin procesar como parte de una llamada a la API.

  • Esta clave se transmite del frontend de Google al frontend del Administrador de clústeres:

    • Si se proporciona una CSEK unida, se separa con una clave de unión asimétrica de Google.
    • La CSEK sin procesar se combina con un nonce criptográfico por disco persistente para generar una clave derivada de CSEK. Esta clave se usa como la clave de encriptación de claves en Google Compute Engine para tus datos.

  • En el frontend del Administrador de clústeres, la CSEK y la clave derivada de CSEK se conservan solo en la memoria del Administrador de clústeres. La clave derivada de CSEK se usa en la memoria del Administrador de clústeres para desunir las claves de disco unidas que se almacenan en los metadatos de la instancia del Administrador de clústeres y en los metadatos del Administrador de instancias, donde se habilita el reinicio automático (estos no son los mismos que los metadatos de instancia).

    • La clave derivada de CSEK se usa para unir las claves de disco sin procesar cuando se crea un disco y a fin de desunirlas cuando se accede a un disco.
      • Si se habilita un reinicio automático, las claves de disco unidas se mantienen en el Administrador de clústeres durante la vida útil de la VM, de modo que la VM pueda reiniciarse en caso de falla. Las claves de disco unidas se unen con una clave de unión simétrica de Google. Sus permisos permiten que solo Google Compute Engine la use.
      • Si se habilita la migración en vivo, la clave de disco sin procesar se pasa de la memoria de la instancia de VM anterior a la memoria de la instancia de VM nueva sin que el Administrador de instancias o el Administrador de clústeres participen en la copia de clave.

  • Las claves de disco sin procesar se pasan a la memoria del Administrador de clústeres, el Administrador de instancias y la máquina virtual. Estas se usan como claves de encriptación de datos en Google Compute Engine para tus datos.

    CSEK de Compute Engine

Claves Guardadas por Propósito Accesible hasta
CSEK sin procesar Frontend del administrador de clústeres Proporcionada por el cliente.
Se usa para derivar la clave derivada de CSEK si agregas un nonce criptográfico.
Completar la operación solicitada por el cliente (p. ej., instances.insert, instances.attachDisk)
CSEK unida con clave pública
(opcional, cuando se usa una unión de clave RSA)
Frontend del administrador de clústeres Proporcionada por el cliente de forma opcional.
Se usa para derivar la clave derivada de CSEK si primero se desune con una clave asimétrica de Google.
Completar la operación que solicita el cliente
Clave de unión asimétrica
(cuando se usa unión de clave RSA)
Servicio de administración de claves interno de Google Se usa para desunir una clave unida con RSA proporcionada por el cliente. Indefinidamente
Clave derivada de CSEK Frontend del Administrador de clústeres Clave de encriptación de claves (KEK) para claves de disco.
Une las claves de disco.
Completar la operación de unión o desunión de clave
Claves de disco unidas por Google
(opcional, cuando se usa el reinicio automático)
Frontend del Administrador de clústeres Proteger las claves de disco almacenadas en reposo, para discos conectados a instancias en ejecución.
Reiniciar la instancia en casos en los que se pierde la memoria de la VM (p. ej., falla del host)
Detener o borrar la VM
Claves de disco sin procesar Memoria del supervisor de máquina virtual (VMM),
memoria del Administrador de clústeres (CM)
Clave de encriptación de datos (DEK) para los datos.
Leer y escribir datos en el disco, migrar en vivo la VM y realizar actualizaciones locales.
Detener o borrar la VM
Clave derivada de CSEK unida por Google Base de datos del Administrador de clústeres Reiniciar la operación en caso de falla. Completar la operación que solicita el cliente

.

Cómo se protegen las claves de encriptación proporcionadas por el cliente

A continuación, se proporciona información sobre cómo se protegen las claves de encriptación proporcionadas por el cliente en el disco, cuando se mueven por la infraestructura de Google Cloud Platform y en la memoria.

En el disco

Las CSEK sin procesar, claves derivadas de CSEK y claves de fragmento/disco sin procesar nunca se almacenan en discos sin encriptar. Las claves de fragmento/disco se almacenan unidas con claves derivadas de CSEK y con claves de Google en los casos en que se usa el reinicio automático. Google no almacena permanentemente tus claves en sus servidores.

Cuando se mueven por la infraestructura

Cada servicio usa funciones de administración de acceso proporcionadas por la infraestructura para especificar exactamente cuáles de los otros servicios pueden comunicarse con este. Ese servicio se configura con la lista blanca de identidades de cuenta de servicio permitidas, y la infraestructura aplicará la restricción de acceso automáticamente. Obtén más información sobre identidad, integridad y aislamiento de los servicios.

Aparte de las capacidades de autenticación y autorización de RPC analizadas en las secciones anteriores, la infraestructura también proporciona integridad y privacidad criptográfica para los datos de RPC en la red. Los servicios pueden configurar el nivel de protección criptográfica que desean para cada RPC de infraestructura, y estas se habilitan en las claves de encriptación proporcionadas por el cliente. Obtén más información sobre la encriptación de las comunicaciones entre servicios.

En la memoria

Como se detalló anteriormente, el material de claves se almacena en la memoria de varios sistemas, incluida la memoria del Administrador de clústeres y la memoria del supervisor de máquina virtual. El acceso a la memoria de estos sistemas está disponible por excepción, p. ej., como parte de un incidente, y se administra mediante listas de control de acceso. Estos sistemas tienen inhabilitados los volcados de memoria o los escanean automáticamente para detectar material de claves. El acceso a los trabajos en sí está restringido a una cantidad pequeña de ingenieros de confiabilidad de sitios según lo necesiten como parte de su función para mantener el servicio, y el acceso a los registros está restringido a unos pocos ingenieros de software que trabajan en estas funciones para depurarlas.

Más información