Persistencia, secretos y seguridad pública (CLOUD-05)¶
La demo conserva CONNECTION_PROFILE=fixture por defecto. PostgreSQL es
opcional y separado del ciclo del Container App; al habilitarlo se ejecutan las
migraciones versionadas del backend y se entrega solo la referencia
DATABASE_URL_REF=env:SCHEMASAFE_DATABASE_URL.
Configuración segura¶
infra/azure/public-env.example contiene nombres de referencias, no valores.
DATABASE_URL_REF y AUTH_SIGNING_KEY_REF apuntan a variables/secretos del
entorno de ejecución. La URI, contraseña y clave nunca se incluyen en Bicep,
GitHub artifacts, frontend, logs o comandos copiados a tickets.
El origen CORS deriva de la URL HTTPS de Cloudflare Pages (FRONTEND_ORIGIN) y
el backend no expone MongoDB, CouchDB ni Cassandra públicamente. La retención
de reportes y auditoría se configura con 90 días por defecto y se revisa con la
fecha de expiración del entorno.
PostgreSQL opcional¶
- Confirma primero en Azure Portal la cuota gratuita B1ms y el presupuesto.
Mantén
SCHEMASAFE_POSTGRES_ENABLED=falsesi la cobertura no está clara. - Ejecuta
az deployment group what-ifconpostgresEnabled=truey un archivo local ignorado; aprueba cuota, presupuesto y retención. - Aplica el despliegue y entrega la conexión al gestor de secretos.
- Configura el Container App con
DATABASE_URL_REFy reinicia de forma controlada; el backend ejecuta la migración versionada antes de servir. - Verifica historial y auditoría después de un reinicio; respalda antes de eliminar el servidor al terminar la demo.
El reinicio no borra historial cuando PostgreSQL está habilitado. Si no se habilita, SQLite/fixtures siguen siendo válidos para la demo, pero el historial público no se presenta como persistente.
Token y frontend¶
SCHEMASAFE_PUBLIC_TOKEN/VITE_AUTH_TOKEN es opcional y, si se compila en la
UI, debe considerarse público y corto: no es un secreto de administración. Las
claves de firma y la URI PostgreSQL nunca se compilan en frontend.
Cierre¶
Al finalizar, exporta evidencia, ejecuta backup/restore si PostgreSQL estuvo habilitado, elimina el Resource Group dedicado y revoca la identidad federada según el procedimiento de OPS-04. La URL pública real solo se registra después del despliegue y smoke de CLOUD-03/CLOUD-06.