De forma predeterminada, Cloud Storage encripta el contenido del cliente almacenado en reposo. Cloud Storage controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.
Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Cloud Storage. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite hacer un seguimiento del uso de las claves, ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud KMS.
Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Cloud Storage es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre las CMEK, consulta Claves de encriptación administradas por el cliente (CMEK). Si deseas obtener información para usar las CMEK creadas de forma manual para proteger tus recursos de Cloud Storage, consulta Cómo usar claves de encriptación administradas por el cliente.
Para obtener más información sobre otras opciones de encriptación cuando usas Cloud Storage, consulta Opciones de encriptación de datos.
CMEK con Autokey de Cloud KMS
Puedes crear CMEK de forma manual para proteger tus buckets de Cloud Storage y los objetos que contienen, o usar la clave automática de Cloud KMS. Con Autokey, los llaveros de claves y las claves se generan a pedido 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 encriptación y desencriptación se crean si aún no existen y se les otorgan los roles de Identity and Access Management (IAM) necesarios. Para obtener más información, consulta Descripción general de las claves automáticas.
Autokey no crea claves para objetos. De forma predeterminada, los objetos de un bucket usan la clave predeterminada del bucket. Si deseas encriptar un objeto con una clave que no sea la predeterminada del bucket, puedes crear una CMEK de forma manual y usarla cuando crees el objeto.
Para aprender a usar las CMEK que crea la clave automática de Cloud KMS para proteger tus buckets de Cloud Storage y los objetos que contienen, consulta Cómo usar la clave automática con recursos de Cloud Storage.
¿Cuándo se usa la clave?
Cuando aplicas una CMEK a un objeto, Cloud Storage usa la clave cuando encriptas los siguientes elementos:
- Los datos del objeto
- La suma de verificación CRC32C del objeto
- El hash MD5 del objeto
Cloud Storage usa claves en el lado del servidor estándar para encriptar los metadatos restantes del objeto, incluido el nombre del objeto. Por lo tanto, si tienes permisos suficientes, puedes realizar acciones, como leer la mayoría de los metadatos, enumerar objetos y borrarlos incluso después de inhabilitar o destruir la CMEK asociada.
Agentes de servicio
Cada proyecto tiene una cuenta de servicio especial de Cloud Storage, llamada agente de servicio, que realiza la encriptación y desencriptación con CMEK. Una vez que das acceso al agente de servicio a una clave de encriptación, ese agente de servicio encripta los siguientes elementos:
- Objetos agregados a un bucket que usa la clave como clave predeterminada
- Objetos específicos que indiques que deben estar encriptados con esa clave
Cuando agregas o reescribes un objeto en Cloud Storage, si tienes una clave predeterminada establecida en tu bucket y una clave específica incluida en tu solicitud, se usa la clave específica para encriptar el objeto en Cloud Storage.
Cuando un solicitante desea leer un objeto encriptado con una CMEK, simplemente accede al objeto como lo haría normalmente. Durante esta solicitud, el agente de servicio desencripta automáticamente el objeto solicitado, siempre y cuando se cumplan las siguientes condiciones:
- El agente de servicio todavía tiene permiso para la desencriptación con la clave.
- No inhabilitaste ni destruiste la clave.
Si una de estas condiciones no se cumple, el agente de servicio no desencripta los datos y la solicitud falla.
Restricciones
Las siguientes restricciones se aplican cuando se usan CMEK:
No puedes encriptar un objeto con una CMEK cuando actualizas los metadatos del objeto. Incluye la clave como parte de una reescritura del objeto en su lugar.
gcloud storage
usa el comandoobjects update
para establecer claves de encriptación en los objetos, pero el comando reescribe el objeto como parte de la solicitud.
Debes crear el llavero de claves de Cloud KMS en la misma ubicación que los datos que deseas encriptar. Por ejemplo, si tu bucket está ubicado en
US-EAST1
, cualquier llavero de claves usado para encriptar objetos en ese bucket también debe crearse enUS-EAST1
.En el caso de las regiones dobles, la ubicación del llavero de claves de Cloud KMS debe coincidir con el código de ubicación de la región doble. Por ejemplo, si tu bucket está ubicado en el par configurable de región doble
US-EAST1
,US-WEST1
, cualquier llavero de claves usado para encriptar objetos en ese bucket debe crearse en la multirregiónUS
, que coincide con el código de ubicación de este bucket. Si tu bucket se encuentra en la región doble predefinidaNAM4
, debes crear el llavero de claves en la misma región doble predefinida,NAM4
.Para conocer las ubicaciones de Cloud KMS disponibles, consulta las ubicaciones de Cloud KMS.
Los índices de encriptación y desencriptación de Cloud KMS están sujetas a una cuota.
La suma de comprobación CRC32C y el hash MD5 de los objetos encriptados con CMEK no se muestran cuando enumeras objetos con la API de JSON.
- Cuando corresponda, algunas herramientas, como
gcloud storage
, realizan una solicitudGET
de metadatos adicional en cada objeto encriptado con una CMEK para recuperar la información de CRC32C y MD5. Estas solicitudes adicionales pueden hacer que la enumeración sea mucho más lenta que enumerar los objetos encriptados con la encriptación estándar de Cloud Storage.
- Cuando corresponda, algunas herramientas, como
Solo las claves de encriptación simétricas se pueden usar como CMEK.
Relación con las claves de encriptación proporcionadas por el cliente
Además de la encriptación administrada por el cliente, en Cloud Storage se ofrecen claves de encriptación proporcionadas por el cliente como una forma de controlar la encriptación de datos. Puedes encriptar diferentes objetos en un solo bucket con diferentes métodos de encriptación, pero ten en cuenta los siguientes elementos:
Un mismo objeto solo puede ser encriptado por uno de estos métodos a la vez.
Si tienes una CMEK predeterminada para tu bucket y especificas una clave proporcionada por el cliente en una solicitud, Cloud Storage usa la clave proporcionada por el cliente para encriptar el objeto.
Administración de claves
En esta sección, se analizan las consideraciones para rotar claves, reemplazar claves e inhabilitar o destruir versiones de clave.
Rotación de claves
Cloud KMS admite la rotación de claves automática y manual a una versión nueva. Después de rotar una clave, Cloud Storage usa la versión nueva para todas las operaciones de encriptación con la clave, como se muestra a continuación:
El objeto se sube cuando el bucket de destino usa la clave como su clave de encriptación predeterminada.
Operaciones de carga, copia y reescritura de objeto que usan de forma específica la clave en la operación.
Las versiones anteriores de la clave no están inhabilitadas ni destruidas, por lo que Cloud Storage aún puede desencriptar los objetos existentes que se encriptaron antes mediante esas versiones.
Reemplazo de claves
Usa los siguientes lineamientos cuando reemplaces la clave que usas para encriptar objetos de Cloud Storage por una clave nueva:
Verifica tus buckets para ver cuál usa la clave como clave de encriptación predeterminada. En estos buckets, reemplaza la clave antigua por una nueva.
Esto garantiza que todos los objetos escritos en el bucket usen la clave nueva en el futuro.
Inspecciona el código fuente para identificar qué solicitudes usan la clave en operaciones en curso, como el establecimiento de opciones de configuración de bucket y la carga, la copia o la reescritura de objetos. Actualiza estas instancias para que usen la clave nueva.
Verifica los objetos encriptados con la clave antigua en todos tus buckets. Usa el método de reescritura de objetos para volver a encriptar cada objeto con la clave nueva.
Inhabilita todas las versiones de la clave antigua. Después de inhabilitar las versiones antiguas de la clave, supervisa los registros del cliente y del servicio para las operaciones que fallan debido a que una versión dejó de estar disponible.
Inhabilita o destruye una versión de clave
Cuando inhabilitas o destruyes una versión de clave específica, no puedes desencriptar ningún objeto que esté encriptado con esa versión de clave.
Por ejemplo, no puedes descargar, copiar ni reescribir el objeto y, si intentas hacerlo, se produce un error.
Si inhabilitas una versión de clave, puedes volver a habilitarla. Una vez que la vuelves a habilitar, podrás acceder a los objetos que se encriptaron con ella.
Si una versión de clave se destruye de forma permanente, no se podrán descargar objetos encriptados con esa versión nunca más.
Antes de inhabilitar o destruir una versión de clave, debes identificar todos los objetos en todos los buckets que se encriptaron con la versión de clave específica. Una vez que se identifican, usa el método de reescritura de objetos a fin de volver a encriptar cada objeto con una versión de clave nueva, con una clave nueva o con claves del servidor.
Cuando inhabilitas o destruyes la versión principal de una clave, no puedes usar esa clave para la encriptación hasta que tengas una versión principal nueva. Por ejemplo, sin una versión principal, no puedes hacer lo siguiente:
No puedes especificar la clave como parte de la carga, la copia o la reescritura de un objeto.
No puedes subir, copiar ni reescribir objetos en un bucket que tenga la clave establecida como su clave de encriptación predeterminada, a menos que especifiques una clave válida diferente como parte de la operación.
Una vez que tengas una versión principal de tu clave, las operaciones que la usen para encriptar los objetos se completarán con éxito.
Antes de inhabilitar o destruir la versión principal de una clave, debes dejar de usarla como la versión principal. Puedes hacerlo de la siguiente manera:
- Reemplázala por una versión principal nueva, por lo general, mediante una rotación de claves.
- Quita las instancias en las que uses la clave para encriptar. Cuando lo hagas, Cloud Storage usará claves del servidor para la encriptación.
Versiones de claves y objetos bloqueados
Si una versión de clave encripta un objeto que está bloqueado, ya sea porque el objeto se almacena en un bucket con una política de retención bloqueada o porque el objeto tiene su propia configuración de retención bloqueada, la versión de clave solo se puede destruir si se cumplen las siguientes condiciones:
- La fecha de vencimiento de la retención del objeto encriptado debe ser anterior a la fecha actual.
- El objeto encriptado no debe tener ninguna conservación de objetos.
Una vez que todos los objetos relevantes cumplan con estas condiciones, es posible destruir la versión de clave, incluso sin borrar los objetos. Si lo haces, los datos de los objetos afectados se volverán inaccesibles de forma permanente.
¿Qué sigue?
- Establece CMEK en tus buckets y objetos de Cloud Storage.
- Obtén más información sobre la encriptación en Cloud Storage.
- Obtén más información sobre Cloud KMS.