Claves de encriptado gestionadas por el cliente (CMEK)

De forma predeterminada, todos los datos en reposo de Firestore se cifran mediante el cifrado predeterminado de Google. Firestore gestiona este cifrado por ti sin que tengas que hacer nada más.

Si tienes requisitos normativos o de cumplimiento específicos relacionados con las claves que protegen tus datos, puedes usar claves de cifrado gestionadas por el cliente (CMEK) en Firestore. En lugar de que Google gestione las claves de cifrado que protegen tus datos, tu base de datos de Firestore se protege con una clave que controlas y gestionas en Cloud Key Management Service (Cloud KMS).

En esta página se describe la CMEK para Firestore. Para obtener más información sobre CMEK en general, incluido cuándo y por qué habilitarlo, consulta la siguiente documentación de Cloud KMS:

Para obtener instrucciones sobre cómo realizar tareas relacionadas con CMEK en Firestore, consulta Usar CMEK.

Funciones

Precios

Cloud KMS cobra el coste de la clave y las operaciones criptográficas que se realicen con ella. Para obtener más información, consulta los precios de Cloud KMS.

Se te facturarán los costes de las operaciones cuando Firestore pida a la clave de Cloud KMS que realice una operación de cifrado o descifrado. La operación de cifrado o descifrado con la clave gestionada por el cliente se produce cada 5 minutos y no se sincroniza con las solicitudes de la base de datos. Los costes suelen ser bajos, dado el número esperado de operaciones criptográficas generadas por Firestore. Los costes de los registros de auditoría de Cloud son un gasto adicional, pero también se espera que sean generalmente bajos, dado el número previsto de operaciones criptográficas.

No hay costes adicionales de Firestore por usar una base de datos protegida con CMEK y se siguen aplicando los precios de Firestore.

Si revocas la clave de una base de datos, se te cobrará el coste de almacenamiento en función del tamaño del último día en que la clave estuvo disponible. Seguirás incurriendo en costes de almacenamiento con ese tamaño de base de datos hasta que se elimine o la clave vuelva a estar disponible.

Qué se protege con CMEK

Cuando creas una base de datos de Firestore protegida con CMEK, tu clave de Cloud KMS se usa para proteger los datos en reposo. Esto incluye los datos que almacenas en un disco o en una unidad flash, como los índices y las copias de seguridad. Se aplican algunas excepciones. Los siguientes tipos de datos se cifran con el cifrado predeterminado de Google y no con la clave CMEK:

  • Datos en tránsito o en memoria
  • Metadatos de bases de datos

Cómo se gestiona un estado de clave no disponible

Las operaciones de cifrado y descifrado no se emiten en todas las solicitudes de datos. En su lugar, el sistema de Firestore sondea Cloud KMS cada 5 minutos para comprobar si la clave sigue disponible y, a continuación, realiza operaciones de cifrado y descifrado si la clave está disponible.

Si el sistema detecta que la clave no está disponible, en un plazo de 10 minutos, las llamadas posteriores a la base de datos de Firestore, incluidas las lecturas, las escrituras y las consultas, devuelven un error FAILED_PRECONDITION con el mensaje The customer-managed encryption key required by the requested resource is not accessible.

Si la base de datos tiene políticas de tiempo de vida (TTL) y se supera algún tiempo de vencimiento mientras la clave no está disponible, la eliminación de datos por TTL se retrasará hasta que se restablezca la clave. Si la base de datos tiene operaciones de larga duración en curso, se verán afectadas de la siguiente manera:

Las claves se consideran no disponibles en cualquier situación que impida intencionadamente que Firestore acceda a ellas. Entre los datos que recoge se incluyen los siguientes:

Si se restaura la clave, la operación de sondeo detecta que la clave vuelve a estar disponible. El acceso se vuelve a habilitar, normalmente en unos minutos, pero en casos excepcionales puede tardar unas horas. Ten en cuenta que algunas operaciones en claves de Cloud KMS, como inhabilitar o destruir una clave, pueden tardar hasta 3 horas en propagarse. Firestore no detecta ningún cambio hasta que se aplican en Cloud KMS.

La restauración de una clave implica lo siguiente, en función de la situación:

  • Volver a habilitar una versión de clave inhabilitada.
  • Restaurar una versión de clave eliminada. Antes de eliminarse de forma permanente, se programa la eliminación de una versión de clave. Solo puedes restaurar una clave durante el periodo en el que una versión de clave esté programada para eliminarse. No puedes restaurar una clave que ya se haya destruido permanentemente.
  • Volver a conceder el permiso al agente de servicio de Firestore para acceder a la clave.

Consideraciones sobre la rotación de claves

Cuando rotas la clave CMEK, Firestore vuelve a cifrar la base de datos con la versión principal más reciente de la clave CMEK. Durante el proceso de recifrado, mantén disponibles tanto la versión antigua como la nueva de la clave. Una vez que finalice el nuevo cifrado, si inhabilitas o eliminas las versiones antiguas de la clave CMEK, no se inhabilitará el acceso a la base de datos, ya que estará cifrada con la nueva versión de la clave principal.

También puedes ver las versiones de claves que se están usando para proteger una base de datos. Para obtener más información, consulta Ver la clave en uso.

Consideraciones sobre las claves externas

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave gestionada externamente en el sistema del partner de gestión de claves externo.

Si una clave gestionada externamente no está disponible, Firestore seguirá admitiendo operaciones completas de la base de datos en la medida de lo posible durante un máximo de una hora.

Si, al cabo de una hora, Firestore sigue sin poder conectarse a Cloud KMS, empezará a poner la base de datos sin conexión como medida de protección. Las llamadas a la base de datos fallarán y se mostrará un error FAILED_PRECONDITION que incluye información adicional.

Consulta la documentación de Cloud External Key Manager para obtener más información sobre el uso de claves externas.

Copia de seguridad y restauración

Las copias de seguridad utilizan el mismo mecanismo de cifrado que la base de datos a partir de la que se crearon. Cuando una base de datos de Firestore protegida con una CMEK crea una copia de seguridad, la cifra con la versión de la clave principal que se usó en el momento de la creación de la copia de seguridad.

Firestore crea la primera copia de seguridad de una base de datos CMEK 24 horas después de habilitar las programaciones de copias de seguridad.

Para obtener más información sobre las copias de seguridad de Firestore, consulta el artículo sobre cómo crear copias de seguridad y restaurar datos.

Una base de datos restaurada a partir de una copia de seguridad utiliza el mismo mecanismo de cifrado que la copia de seguridad de forma predeterminada. Cuando restauras una base de datos, puedes especificar un tipo de cifrado diferente de una de las siguientes formas:

  • Restaurar en una base de datos CMEK con una clave recién especificada.
  • Restaurar una base de datos que no use CMEK y que utilice el cifrado predeterminado de Google.
  • Restaurar una base de datos que use el mismo cifrado que la copia de seguridad.

Para obtener más información sobre cómo restaurar una base de datos de Firestore a partir de una copia de seguridad, consulta el artículo Restaurar datos a partir de una copia de seguridad de una base de datos. Para obtener más información sobre cómo restaurar una base de datos de Firestore protegida con CMEK a partir de una copia de seguridad, consulta Restaurar una base de datos protegida con CMEK.

Clonar

De forma predeterminada, una base de datos clonada de otra base de datos usa el mismo mecanismo de cifrado que la base de datos de origen. Cuando clonas una base de datos, puedes especificar un tipo de cifrado diferente de una de las siguientes formas:

  • Clonar en una base de datos CMEK con una clave recién especificada.
  • Clonar en una base de datos que no use CMEK y que utilice el cifrado predeterminado de Google.
  • (Predeterminado) Clonar en una base de datos que use el mismo cifrado que la base de datos de origen.

Para obtener más información sobre cómo clonar una base de datos de Firestore, consulta el artículo sobre cómo clonar una base de datos. Para obtener más información sobre cómo clonar una base de datos de Firestore protegida con CMEK, consulta Clonar una base de datos protegida con CMEK.

Seguimiento de teclas

Puedes usar el seguimiento de claves para ver los recursos que protege una clave, como las bases de datos de Firestore. Para obtener más información sobre el seguimiento de claves, consulta Ver el uso de las claves.

CMEK y disponibilidad de claves

Cuando las claves no están disponibles o están inhabilitadas, ten en cuenta los siguientes comportamientos que pueden producirse en las bases de datos habilitadas para CMEK:

  • Puedes cambiar la configuración de la recuperación a un momento dado (PITR) de Firestore en una base de datos habilitada para CMEK aunque la clave no esté disponible, ya que la configuración de PITR son metadatos de la base de datos que no están cifrados con CMEK.
  • Puedes eliminar una base de datos de CMEK que tenga claves no disponibles.
  • Cuando creas una base de datos con CMEK habilitada, las claves inhabilitadas no se muestran en la lista de claves disponibles de la Google Cloud consola. Si introduces manualmente una clave inhabilitada, el proceso de creación de la base de datos fallará y se mostrará un error 400 FAILED_PRECONDITION.

Limitaciones

  • No puedes cambiar la clave de una base de datos protegida con CMEK. Puedes rotar, habilitar e inhabilitar claves.
  • Las bases de datos protegidas con CMEK solo admiten Key Visualizer para datos de entidades y documentos, no para datos de índices.
  • No puedes habilitar CMEK en bases de datos que ya tengas. Solo puedes habilitar CMEK en bases de datos nuevas, y debes hacerlo al crear la base de datos. Para migrar datos de una base de datos no protegida con CMEK a una protegida con CMEK, exporta los datos y, a continuación, impórtalos a una nueva base de datos protegida con CMEK. También puedes restaurar o clonar datos de una base de datos que no use CMEK en una que sí lo haga.
  • Firestore admite un número limitado de bases de datos protegidas con CMEK.
  • No admitimos la protección con CMEK en la integración de Cloud Functions (1.ª gen.). Si quieres tener protección con CMEK, usa activadores de Firestore de funciones de Cloud Run (2.ª gen.).

Cómo pueden salir los datos de las bases de datos protegidas con CMEK

Siguientes pasos