Controles del servicio de VPC

Los Controles del servicio de VPC permiten que las organizaciones definan un perímetro alrededor de los recursos de Google Cloud para mitigar los riesgos de robo de datos. Con los Controles del servicio de VPC, puedes crear perímetros que protejan los recursos y datos de los servicios que especifiques de manera explícita.

Servicios de Firestore agrupados en paquetes

Las siguientes API se agrupan en Controles del servicio de VPC:

  • firestore.googleapis.com
  • datastore.googleapis.com
  • firestorekeyvisualizer.googleapis.com

Cuando restringes el servicio firestore.googleapis.com en un perímetro, el perímetro también restringe los servicios datastore.googleapis.com y firestorekeyvisualizer.googleapis.com.

Restringe el servicio datastore.googleapis.com

El servicio datastore.googleapis.com se incluye en el servicio firestore.googleapis.com. Para restringir el servicio datastore.googleapis.com, debes restringir el servicio firestore.googleapis.com de la siguiente manera:

  • Cuando crees un perímetro de servicio con Google Cloud Console, agrega Firestore como servicio restringido.
  • Cuando crees un perímetro de servicio con la CLI de Google Cloud, usa firestore.googleapis.com en lugar de datastore.googleapis.com.
    --perimeter-restricted-services=firestore.googleapis.com

Servicios agrupados de App Engine heredados para Datastore

Los servicios heredados de App Engine para Datastore no admiten perímetros de servicio. Proteger el servicio de Datastore con un perímetro de servicio bloquea el tráfico de los servicios agrupados de App Engine heredados. Entre los servicios heredados, se incluyen los siguientes:

Protección de salida en operaciones de importación y exportación

Firestore admite los Controles del servicio de VPC, pero requiere una configuración adicional para obtener una protección de salida completa en las operaciones de importación y exportación. Debes usar el agente de servicio de Firestore para autorizar operaciones de importación y exportación en lugar de la cuenta de servicio predeterminada de App Engine. Usa las siguientes instrucciones para ver y configurar la cuenta de autorización de las operaciones de importación y exportación.

Agente de servicio de Firestore

Ahora puedes usar un agente de servicio de Firestore para autorizar operaciones de importación y exportación en lugar de la cuenta de servicio de App Engine. El agente de servicio y la cuenta de servicio usan las siguientes convenciones de nombres:

Agente de servicio de Firestore
service-project_number@gcp-sa-firestore.iam.gserviceaccount.com
Cuenta de servicio de App Engine
project_id@appspot.gserviceaccount.com

Se prefiere el agente de servicio de Firestore porque es específico de Firestore. Más de un servicio comparte la cuenta de servicio de App Engine.

Visualiza la cuenta de autorización

Puedes ver qué cuenta usan tus operaciones de importación y exportación para autorizar solicitudes desde la página Importaciones/Exportaciones en Google Cloud Console. También puedes ver si tu base de datos ya usa el agente de servicio de Firestore.

  1. Ve a la página Importaciones/Exportaciones de Firestore en Google Cloud Console.

    Ir a Importaciones/Exportaciones

  2. Consulta la cuenta de autorización junto a la etiqueta Los trabajos de importación o exportación se ejecutan como.

Si tu proyecto no usa el agente de servicio de Firestore, puedes usar cualquiera de estas técnicas para migrar al agente de servicio de Firestore:

La primera de estas técnicas es preferible porque localiza el alcance del efecto en un solo proyecto de Firestore. No se prefiere la segunda técnica, ya que no migra los permisos del bucket de Cloud Storage existentes. Sin embargo, sí ofrece el cumplimiento de seguridad a nivel de la organización.

Revisa y actualiza los permisos del bucket de Cloud Storage para migrar un proyecto

El proceso de migración consta de dos pasos:

  1. Actualizar los permisos del bucket de Cloud Storage (consulta la siguiente sección para obtener más detalles).
  2. Confirma la migración al agente de servicio de Firestore.

Permisos del agente de servicio sobre el bucket

Para cualquier operación de importación o exportación que use un bucket de Cloud Storage en otro proyecto, debes otorgar permisos al agente de servicio de Firestore para ese bucket. Por ejemplo, las operaciones que mueven datos a otro proyecto deben acceder a un bucket de ese otro proyecto. De lo contrario, estas operaciones fallarán después de migrar al agente de servicio de Firestore.

Los flujos de trabajo de importación y exportación que se encuentran dentro del mismo proyecto no requieren cambios en los permisos. El agente de servicio de Firestore puede acceder a los buckets del mismo proyecto de forma predeterminada.

Actualiza los permisos de los buckets de Cloud Storage de otros proyectos para otorgar acceso al agente de servicio service-project_number@gcp-sa-firestore.iam.gserviceaccount.com. Otorga al agente de servicio el rol Firestore Service Agent.

El rol Firestore Service Agent otorga permisos de lectura y escritura a un bucket de Cloud Storage. Si necesitas otorgar solo permisos de lectura o escritura, usa un rol personalizado.

El proceso de migración que se describe en la siguiente sección te ayuda a identificar los buckets de Cloud Storage que pueden requerir actualizaciones de permisos.

Migra un proyecto al agente de servicio de Firestore

Completa los siguientes pasos para migrar de la cuenta de servicio de App Engine al agente de servicio de Firestore. Una vez completada, la migración no se puede deshacer.

  1. Ve a la página Importaciones/Exportaciones de Firestore en Google Cloud Console.

    Ir a Importaciones/Exportaciones

  2. Si tu proyecto aún no se migró al agente de servicio de Firestore, verás un banner que describe la migración y un botón Verificar bucket de estado. En el siguiente paso, podrás identificar y corregir posibles errores de permisos.

    Haz clic en Verificar estado del bucket.

    Aparecerá un menú con la opción de completar tu migración y una lista de buckets de Cloud Storage. Es posible que la lista tarde unos minutos en terminar de cargarse.

    En esta lista, se incluyen los buckets que se usaron recientemente en operaciones de importación y exportación, pero que no otorgan permisos de lectura y escritura al agente de servicio de Firestore.

  3. Anota el nombre principal del agente de servicio de Firestore de tu proyecto. El nombre del agente de servicio aparece bajo la etiqueta Service agent to give access to.
  4. Para cualquier bucket de la lista que usarás en las operaciones futuras de importación o exportación, completa los siguientes pasos:

    1. En la fila de la tabla del bucket, haz clic en Corregir. Se abrirá la página de permisos del bucket en una pestaña nueva.

    2. Haga clic en Agregar.
    3. En el campo Principales nuevas, ingresa el nombre de tu agente de servicio de Firestore.
    4. En el campo Selecciona un rol, selecciona Agentes de servicio > Agente de servicio de Firestore.
    5. Haz clic en Guardar.
    6. Regresa a la pestaña que tiene la página de importación y exportación de Firestore.
    7. Repite estos pasos para otros buckets de la lista. Asegúrate de ver todas las páginas de la lista.
  5. Haz clic en Migrar al agente de servicio de Firestore. Si aún tienes buckets con verificaciones de permisos con errores, debes confirmar la migración haciendo clic en Migrar.

    Una alerta te informa cuando se completa la migración. No se puede deshacer la migración.

Consulta el estado de la migración

  1. Para verificar el estado de migración del proyecto, ve a la página Importar/Exportar en Google Cloud Console:

    Ir a Importaciones/Exportaciones

  2. Busca la principal junto a la etiqueta Los trabajos de importación o exportación se ejecutan como.

    Si la principal es service-project_number@gcp-sa-firestore.iam.gserviceaccount.com, significa que tu proyecto ya migró al agente de servicio de Firestore. No se puede deshacer la migración.

    Si el proyecto no se migró, aparecerá un banner en la parte superior de la página con un botón Verificar estado del bucket. Para completar la migración, consulta Migra al agente de servicio de Firestore.

Agrega una restricción de política para toda la organización

  • Establece la siguiente restricción en la política de tu organización:

    Requiere el agente de servicio de Firestore para importar y exportar (firestore.requireP4SAforImportExport).

    Esta restricción requiere que las operaciones de importación y exportación usen el agente de servicio de Firestore para autorizar solicitudes. Para establecer esta restricción, consulta Crea y administra políticas de la organización .

Aplicar esta restricción de política de la organización no otorga de forma automática los permisos de bucket adecuados de Cloud Storage para el agente de servicio de Firestore.

Si la restricción crea errores de permisos en algún flujo de trabajo de importación o exportación, puedes inhabilitarla para volver a usar la cuenta de servicio predeterminada. Después de verificar y actualizar los permisos del bucket de Cloud Storage, puedes volver a habilitar la restricción.