Claves de encriptado gestionadas por el cliente

Configuración

De forma predeterminada, Cloud Storage encripta el contenido de los clientes en reposo. Cloud Storage 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 Storage. 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. Cloud KMS también te permite monitorizar el uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y el gestor de 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 acceder a tus recursos de Cloud Storage será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las CMEKs, consulta el artículo Claves de encriptado gestionadas por el cliente (CMEK). Para saber cómo usar CMEKs creadas manualmente para proteger tus recursos de Cloud Storage, consulta Usar claves de cifrado gestionadas por el cliente.

Para obtener más información sobre otras opciones de cifrado al usar Cloud Storage, consulta Opciones de cifrado de datos.

CMEK con Autokey de Cloud KMS

Puedes crear CMEKs manualmente para proteger tus cubos de Cloud Storage y los objetos que contienen, o bien usar Autokey de Cloud KMS. Con Autokey, los conjuntos de claves y las claves se generan a petición como parte de la creación o actualización de recursos en Cloud Storage. Los agentes de servicio que usan las claves para las operaciones de cifrado y descifrado se crean si aún no existen y se les asignan los roles de gestión de identidades y accesos (IAM) necesarios. Para obtener más información, consulta la descripción general de Autokey.

Autokey no crea llaves para objetos. De forma predeterminada, los objetos de un segmento usan la clave predeterminada del segmento. Si quieres cifrar un objeto con una clave que no sea la predeterminada del segmento, puedes crear manualmente una CMEK y usarla al crear el objeto.

Para saber cómo usar las CMEKs creadas por Autokey de Cloud KMS para proteger tus segmentos de Cloud Storage y los objetos que contienen, consulta el artículo Usar Autokey con recursos de Cloud Storage.

¿Cuándo se usa la clave?

Cuando aplicas una CMEK a un objeto, Cloud Storage usa la clave para cifrar lo siguiente:

  • Los datos del objeto.
  • Suma de verificación CRC32C del objeto.
  • El hash MD5 del objeto.

Cloud Storage usa claves del lado del servidor estándar para cifrar los metadatos restantes del objeto, incluido su nombre. Por lo tanto, si tienes permiso suficiente, puedes realizar acciones como leer la mayoría de los metadatos, enumerar objetos y eliminar objetos incluso después de haber inhabilitado o destruido la CMEK asociada.

Agentes de servicio

Cada proyecto tiene una cuenta de servicio especial de Cloud Storage llamada agente de servicio que realiza el encriptado y el desencriptado con CMEKs. Una vez que concedas acceso al agente de servicio a una clave de cifrado, ese agente de servicio cifrará lo siguiente:

Cuando añades o reescribes un objeto en Cloud Storage, si tienes una clave predeterminada definida en tu segmento y una clave específica incluida en tu solicitud, Cloud Storage usa la clave específica para cifrar el objeto.

Cuando un solicitante quiere leer un objeto cifrado con una CMEK, solo tiene que acceder al objeto como lo haría normalmente. Durante una solicitud de este tipo, el agente de servicio descifra automáticamente el objeto solicitado siempre que se cumplan las siguientes condiciones:

  • El agente de servicio sigue teniendo permiso para descifrar con la clave.
  • No has inhabilitado ni destruido la clave.

Si no se cumple una de estas condiciones, el agente del servicio no descifra los datos y la solicitud falla.

Restricciones

Se aplican las siguientes restricciones al usar CMEKs:

  • No puedes cifrar un objeto con una CMEK actualizando sus metadatos. Incluye la clave como parte de una reescritura del objeto.

    • gcloud storage usa el comando objects update para definir claves de cifrado en objetos, pero el comando vuelve a escribir el objeto como parte de la solicitud.
  • Debes crear el conjunto de claves de Cloud KMS en la misma ubicación que los datos que quieras cifrar. Por ejemplo, si tu segmento está ubicado en US-EAST1, cualquier conjunto de claves que se use para cifrar objetos en ese segmento también debe crearse en US-EAST1.

    • En el caso de las birregiones, la ubicación del conjunto de claves de Cloud KMS debe coincidir con el código de ubicación de la birregión. Por ejemplo, si tu segmento está ubicado en el par de regiones dobles configurables US-EAST1 y US-WEST1, cualquier conjunto de claves que se utilice para cifrar objetos en ese segmento debe crearse en la multirregión US, que coincide con el código de ubicación de este segmento. Si tu segmento está ubicado en la región doble predefinida NAM4, debes crear el conjunto de claves en la misma región doble predefinida, NAM4.

      Para ver las ubicaciones de Cloud KMS disponibles, consulta Ubicaciones de Cloud KMS.

  • La suma de comprobación CRC32C y el hash MD5 de los objetos cifrados con CMEKs no se devuelven al listar objetos con la API JSON.

    • Cuando procede, algunas herramientas, como gcloud storage, realizan una solicitud de GET de metadatos adicional en cada objeto cifrado con una CMEK para obtener la información de CRC32C y MD5. Estas solicitudes adicionales pueden hacer que la lista sea considerablemente más lenta que la de los objetos cifrados con el cifrado estándar de Cloud Storage.
  • Solo se pueden usar claves de cifrado simétricas como CMEKs.

Cuotas de Cloud KMS y Cloud Storage

Cuando usas CMEK en Cloud Storage, tus proyectos pueden consumir cuotas de solicitudes criptográficas de Cloud KMS.

Las operaciones de encriptado y desencriptado con claves CMEK afectan a las cuotas de Cloud KMS de las siguientes formas:

  • En el caso de las claves de CMEK de software generadas en Cloud KMS, no se consume ninguna cuota de Cloud KMS.
  • En el caso de las claves CMEK de hardware (a veces denominadas claves de Cloud HSM), las operaciones de cifrado y descifrado se contabilizan en las cuotas de Cloud HSM del proyecto que contiene la clave.
  • En el caso de las claves CMEK externas (a veces denominadas claves de Cloud EKM), las operaciones de cifrado y descifrado se contabilizan en las cuotas de Cloud EKM del proyecto que contiene la clave.

Para obtener más información, consulta las cuotas de Cloud KMS.

Relación con las claves de cifrado proporcionadas por el cliente

Además del cifrado gestionado por el cliente, Cloud Storage ofrece claves de cifrado proporcionadas por el cliente como forma de controlar el cifrado de tus datos. Puedes cifrar diferentes objetos de un mismo contenedor con distintos métodos de cifrado, pero ten en cuenta lo siguiente:

  • Un objeto solo se puede cifrar con uno de estos métodos a la vez.

  • Si has definido una CMEK predeterminada para tu segmento y especificas una clave proporcionada por el cliente en una solicitud, Cloud Storage usará la clave proporcionada por el cliente para cifrar el objeto.

Gestión de claves

En esta sección se describen las consideraciones que se deben tener en cuenta al rotar claves, sustituir claves y habilitar o inhabilitar versiones de claves.

Rotación de claves

Cloud KMS admite la rotación de claves automática y manual a una nueva versión. Después de rotar una clave, Cloud Storage usa la nueva versión en todas las operaciones que cifran con la clave, como las siguientes:

  • Subidas de objetos cuando el segmento de destino usa la clave como clave de cifrado predeterminada.

  • Operaciones de subida, copia y reescritura de objetos que usan específicamente la clave en la operación.

Las versiones anteriores de la clave no se inhabilitan ni se destruyen, por lo que Cloud Storage puede seguir desencriptando los objetos que se encriptaron anteriormente con esas versiones.

Sustitución de llaves

Sigue estas directrices cuando sustituyas la clave que usas para cifrar objetos de Cloud Storage por una nueva:

  1. Consulta tus segmentos para ver cuáles usan la clave como clave de cifrado predeterminada. En estos casos, sustituye la clave antigua por una nueva.

    De esta forma, todos los objetos que se escriban en el segmento usarán la nueva clave a partir de ese momento.

  2. Inspecciona tu código fuente para saber qué solicitudes usan la clave en operaciones en curso, como definir configuraciones de segmentos y subir, copiar o reescribir objetos. Actualiza estas instancias para que usen la nueva clave.

  3. Comprueba si hay objetos en todos tus contenedores que estén cifrados con la clave antigua. Usa el método Rewrite Object para volver a cifrar cada objeto con la nueva clave.

  4. Inhabilita todas las versiones de la clave antigua. Después de inhabilitar las versiones antiguas de las claves, monitoriza los registros de clientes y servicios para detectar las operaciones que fallan porque una versión deja de estar disponible.

Inhabilitar o destruir una versión de clave

  • Cuando inhabilitas o destruyes una versión de clave específica, no puedes descifrar ningún objeto que esté cifrado con esa versión de clave.

    Por ejemplo, no puede descargar, copiar ni reescribir el objeto, y si lo intenta, se producirá un error.

    • Si inhabilitas una versión de clave, puedes volver a habilitarla. Una vez que se haya vuelto a habilitar, podrás acceder a los objetos que se cifraron con esa versión de clave.

    • Si destruyes una versión de una clave, no se podrán volver a descargar los objetos cifrados con esa versión.

    Antes de inhabilitar o destruir una versión de una clave, debe identificar todos los objetos de todos los contenedores que se hayan cifrado con esa versión de la clave. Una vez identificados, usa el método Rewrite Object para volver a encriptar cada objeto con una nueva versión de la clave, una clave completamente nueva o claves del lado del servidor.

  • Cuando inhabilitas o destruyes la versión principal de una clave, no puedes usarla para cifrar hasta que tengas una nueva versión principal. Por ejemplo, sin una versión principal:

    • No puede especificar la clave como parte de una subida, copia o reescritura de un objeto.

    • No puedes subir, copiar ni reescribir objetos en un contenedor que tenga la clave definida como clave de cifrado predeterminada a menos que especifiques otra clave válida como parte de la operación.

    Una vez que tengas una versión principal de la clave, las operaciones que la usen para cifrar objetos se completarán correctamente.

    Antes de inhabilitar o eliminar una versión de clave que sea la versión principal de la clave, debes dejar de usarla como versión principal. Para ello, tienes dos opciones:

    • Sustituyéndola por una nueva versión principal, normalmente rotando la clave.
    • Eliminar las instancias en las que se usa la clave para el cifrado. En ese caso, Cloud Storage usará claves del lado del servidor para el cifrado.

Versiones de claves y objetos bloqueados

Si una versión de una clave cifra un objeto bloqueado, ya sea porque el objeto está almacenado en un segmento con una política de conservación bloqueada o porque el objeto tiene su propia configuración de conservación bloqueada, la versión de la clave solo se puede destruir si se cumplen las siguientes condiciones:

  • El tiempo de vencimiento de la conservación del objeto cifrado debe ser anterior al actual.
  • El objeto cifrado no debe tener ningún objeto de retención.

Una vez que todos los objetos pertinentes cumplan estas condiciones, se podrá destruir la versión de la clave, incluso sin eliminar los objetos. Si lo hace, los datos de los objetos afectados dejarán de estar accesibles de forma permanente.

Siguientes pasos