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

De forma predeterminada, todos los datos en reposo en Cloud Firestore se encriptan con la encriptación predeterminada de Google. Cloud 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 Cloud Firestore. En lugar de que Google administre las claves de encriptación que protegen tus datos, tu instancia de Cloud 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 Cloud Firestore. Para obtener más información sobre las CMEK en general, incluso cuándo y por qué habilitarlas, consulta la documentación de Cloud KMS.

A fin de obtener instrucciones para realizar tareas relacionadas con CMEK con Cloud 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 Cloud Firestore.
  • Rendimiento: CMEK no afecta el ANS de Cloud 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 para las bases de datos de Cloud 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 Precios de Cloud KMS.

Se te factura por los costos de operaciones cuando Cloud 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 Cloud Firestore. Los costos de los registros de auditoría de Cloud son un gasto adicional, pero, en general, se espera que sean bajos, dada la cantidad esperada de operaciones criptográficas.

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

Si revocas tu 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 Cloud Firestore protegida con CMEK, 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 Cloud 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 Cloud 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 según el 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 no permita de forma intencional que Cloud Firestore acceda a ellas. 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 casos excepcionales 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. Cloud Firestore no detecta ningún cambio hasta que se aplica 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.
  • Otorgar nuevamente permiso al agente de servicio Cloud Firestore para acceder a la clave.

Consideraciones sobre la rotación de claves

Cuando rotas la clave de CMEK, Cloud Firestore vuelve a encriptar la base de datos con la versión primaria más reciente de la clave de 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, Cloud Firestore continúa admitiendo operaciones de base de datos completas según el criterio del mejor esfuerzo durante una hora como máximo.

Después de una hora, si Cloud Firestore aún no puede conectarse con Cloud KMS, Cloud Firestore 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 incluye detalles adicionales.

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 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 Cloud Firestore protegida por CMEK crea una copia de seguridad, la encripta con la versión de clave principal que se usó en el momento de su creación.

Cloud 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 copia de seguridad.

Para obtener más información sobre las copias de seguridad de Cloud Firestore, consulta Cómo crear una copia de seguridad y restablecer los 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 Cloud Firestore a partir de una copia de seguridad, consulta Cómo restablecer datos a partir de una copia de seguridad de la base de datos. Para obtener más información sobre cómo restablecer una base de datos Cloud 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 Cloud 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 recuperación de un momento determinado (PITR) de Cloud 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 encripta 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 por 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 tus 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.
  • Cloud 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 Firestore de las funciones Cloud Run (2ª gen.).

¿Qué sigue?