Claves de encriptación administradas por el cliente (CMEK)

De forma predeterminada, todos los datos en reposo en Firestore se encriptan con la encriptación predeterminada de Google. Firestore controla y administra esta encriptación sin que debas realizar ninguna acción adicional.

Si tienes requisitos normativos o de cumplimiento específicos relacionados con las claves que protegen los datos, puedes usar claves de encriptación administradas por el cliente (CMEK) para Firestore. En lugar de que Google administre las claves de encriptación que protegen tus datos, tu base de datos de Firestore se protege con una clave que tú controlas y administras en Cloud Key Management Service (Cloud KMS).

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

Para obtener instrucciones para realizar tareas relacionadas con CMEK con Firestore, consulta Usa CMEK.

Funciones

  • Control de datos: Las CMEK te permiten administrar la clave de KMS. Puedes rotar, inhabilitar y destruir la clave que se usa para encriptar los datos en reposo en tu base de datos de Firestore.
  • Rendimiento: Las CMEK no afectan el ANS de Firestore.
  • Auditabilidad: Si habilitas el registro de auditoría para Cloud KMS, todas las operaciones en la clave se registran y se pueden ver en Cloud Logging.
  • Restricciones de las políticas de la organización: Puedes usar las restricciones de las políticas de la organización de CMEK para especificar los requisitos de cumplimiento de encriptación de las bases de datos de Firestore en tu organización.

Precios

Cloud KMS cobra por el costo de la clave y por todas las operaciones criptográficas realizadas con ella. Para obtener más información, consulta los precios de Cloud KMS.

Se te factura por los costos de operaciones cuando Firestore solicita a la clave de Cloud KMS realizar una operación de encriptación o desencriptación. La operación de encriptación o desencriptación con la clave administrada por el cliente se realiza cada 5 minutos y no se sincroniza con las solicitudes de la base de datos. Los costos suelen ser bajos, dada la cantidad esperada de operaciones criptográficas que genera Firestore. Los costos de los registros de auditoría de Cloud son un gasto adicional, pero también se espera que sean generalmente bajos, dada la cantidad esperada de operaciones criptográficas.

No se aplican costos adicionales de Firestore por usar la base de datos protegida por CMEK, y se siguen aplicando los precios de Firestore.

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

Qué se protege con CMEK

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

  • Datos en tránsito o en memoria
  • Metadatos de la base de datos

Cómo se controla un estado de clave no disponible

Las operaciones de encriptación y desencriptación no se emiten en cada solicitud de datos. En su lugar, el sistema de Firestore sondea Cloud KMS cada 5 minutos para verificar si la clave aún está disponible y, luego, realiza operaciones de encriptación y desencriptación si la clave está disponible.

Si el sistema detecta que la clave no está disponible, en un plazo de 10 minutos, cualquier llamada posterior a la base de datos de Firestore, incluidas las operaciones de lectura, escritura y consulta, mostrará 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 actividad (TTL) y si se superan los tiempos 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 operaciones de import o exportación de datos dejarán de avanzar y se marcarán como Failed. Las operaciones que fallaron no se volverán a intentar si se restablece la clave.
  • Las operaciones de compilación de índices y las operaciones que habilitan nuevas políticas de TTL dejarán de avanzar. Las operaciones detenidas se volverán a intentar si se restablece la clave.

Las claves se consideran no disponibles en cualquier situación que impida de forma intencional que Firestore acceda a ellas. Esto incluye lo siguiente:

Si se restablece la clave, la operación de sondeo detecta que esta vuelve a estar disponible. El acceso se vuelve a habilitar, por lo general, en minutos, pero en algunos casos puede tardar hasta algunas horas. Ten en cuenta que algunas operaciones en las 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 implementan en Cloud KMS.

La reinstalación de una clave implica lo siguiente, según la situación:

  • Volver a habilitar una versión de clave inhabilitada
  • Restablecer una versión de clave destruida Antes de destruirse de forma permanente, se programa la destrucción de una versión de clave. Solo puedes restablecer una clave durante el período en el que una versión de clave está programada para su destrucción. No puedes restablecer una clave que ya se destruyó permanentemente.
  • Volver a otorgar 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 encriptar la base de datos con la versión primaria más reciente de la clave CMEK. Durante el proceso de reencriptación, mantén disponible la versión de clave anterior y la nueva. Una vez que finalice la nueva encriptación, inhabilitar o borrar las versiones anteriores de la clave de CMEK no inhabilitará el acceso a la base de datos, ya que está encriptada con la nueva versión de clave primaria.

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

Consideraciones de claves externas

Cuando usas una clave de Cloud EKM, Google no tiene control sobre la disponibilidad de tu clave administrada de forma externa en el sistema de socios de administración de claves externas.

Si una clave administrada de forma externa no está disponible, Firestore continúa admitiendo hasta por una hora operaciones de base de datos completas mediante una versión de la clave almacenada en caché.

Después de una hora, si Firestore aún no puede conectarse con Cloud KMS, comenzará a desconectar la base de datos como medida de protección. Las llamadas a la base de datos fallarán con un error FAILED_PRECONDITION que incluirá detalles adicionales.

Consulta la documentación de Cloud External Key Manager para obtener más consideración cuando uses claves externas.

Copia de seguridad y restablecimiento

Una copia de seguridad usa el mismo mecanismo de encriptación que la base de datos desde la que la creaste. Cuando una base de datos de Firestore protegida con CMEK crea una c copia de seguridad, la encripta con la versión de clave primaria 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 de CMEK después de que transcurran 24 horas desde el momento en que habilitas los programas de copias de seguridad.

Para obtener más información sobre las copias de seguridad de Firestore, consulta Crea una copia de seguridad y restablece datos.

De forma predeterminada, una base de datos restablecida a partir de una copia de seguridad usa el mismo mecanismo de encriptación que la copia de seguridad. Cuando restableces una base de datos, puedes especificar un tipo de encriptación diferente de una de las siguientes maneras:

  • Restablece a una base de datos de CMEK con una clave especificada recientemente.
  • Restablece la base de datos a una que no sea de CMEK y que use la encriptación predeterminada de Google.
  • Restablece la copia de seguridad en una base de datos que use la misma encriptación que la copia de seguridad.

Para obtener más información sobre cómo restablecer una base de datos de Firestore a partir de una copia de seguridad, consulta Cómo restablecer datos a partir de una copia de seguridad de una base de datos. Para obtener más información sobre cómo restablecer una base de datos de Firestore protegida por CMEK desde una copia de seguridad, consulta Cómo restablecer una base de datos protegida por CMEK.

Seguimiento de claves

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

CMEK y disponibilidad de claves

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

  • Puedes cambiar la configuración de la recuperación de un momento determinado (PITR) de Firestore en una base de datos habilitada para CMEK, incluso si la clave no está disponible, ya que la configuración de PITR son metadatos de la base de datos, que no se encriptan con CMEK.
  • Puedes borrar una base de datos de CMEK que tenga claves no disponibles.
  • Cuando creas una base de datos habilitada para CMEK, las claves inhabilitadas no se muestran en la lista de claves disponibles en la consola de Google Cloud. Si ingresas una clave inhabilitada de forma manual, el proceso de creación de la base de datos fallará con un error FAILED_PRECONDITION 400.

Limitaciones

  • No puedes cambiar una clave de una base de datos protegida por una CMEK. Puedes rotar, habilitar e inhabilitar las claves.
  • Las bases de datos protegidas con CMEK admiten el Visualizador de claves solo para los datos de entidades y documentos, no para los datos de índices.
  • No puedes habilitar las CMEK en bases de datos existentes. Puedes habilitar CMEK solo en bases de datos nuevas y debes hacerlo cuando las creas. Para migrar datos de una base de datos existente que no usa CMEK a una base de datos protegida por CMEK, exporta los datos y, luego, impórtalos a una base de datos nueva protegida por CMEK. También puedes restablecer datos de una base de datos que no sea de CMEK a una base de datos de CMEK.
  • Firestore admite una cantidad limitada de bases de datos protegidas por CMEK.
  • No admitimos la protección de CMEK con la integración de Cloud Functions (1ª gen.). Si deseas tener protección de CMEK, usa los activadores de Cloud Firestore de Cloud Run Functions (2ª gen.).

¿Qué sigue?