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
- Control de datos: las CMEK te permiten gestionar la clave de KMS. Puedes rotar, inhabilitar y eliminar la clave que se usa para cifrar los datos en reposo de tu base de datos de Firestore.
- Rendimiento: CMEK no afecta al acuerdo de nivel de servicio de Firestore.
- Auditoría: si habilitas el registro de auditoría de Cloud KMS, todas las operaciones de la clave se registrarán y se podrán ver en Cloud Logging.
- Restricciones de políticas de organización: puedes usar restricciones de políticas de organización de CMEK para especificar los requisitos de cumplimiento del cifrado de las bases de datos de Firestore de tu organización.
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 operaciones de importación o exportación de datos dejarán de avanzar y se marcarán como
Failed
. Las operaciones fallidas no se volverán a intentar si se restaura la clave. - Las operaciones de creació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 restaura la clave.
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:
- Inhabilitar o eliminar la versión de clave en uso. Ten cuidado al destruir una versión de una clave, ya que puede provocar la pérdida de datos irrecuperables.
- Eliminar el permiso para acceder a la clave desde la cuenta de servicio de Firestore.
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
Los usuarios de tu aplicación pueden almacenar de forma arbitraria los datos que copie tu aplicación. Se necesitan controles de seguridad adecuados para cualquier aplicación que acceda a los datos de Firestore, de modo que solo puedan acceder a ellos los usuarios que tengan la autorización pertinente. Consulta más información sobre las reglas de seguridad y la gestión de identidades y accesos.
Los datos de una base de datos protegida con CMEK se pueden mover a una base de datos sin CMEK mediante las funciones Copia de seguridad y restauración, Clonar o Importar y Exportar. Usa los controles de gestión de identidades y accesos adecuados para conceder permisos para estas acciones solo a los usuarios autorizados. Además, se pueden usar restricciones de políticas de la organización de CMEK para exigir que las bases de datos creadas mediante restauración o clonación, así como los segmentos de Cloud Storage que se usen para importar, estén protegidos con CMEK.