Skip to content

Seguridad

Modelo de confianza

Es un sitio estático público sin autenticación: todo el contenido es de acceso libre y se sirve igual a cualquier visitante (--allow-unauthenticated, .github/workflows/deploy.yml:45; nginx sin auth, nginx.conf:1-34). No hay área privada, login, sesiones ni manejo de datos de usuario. La superficie de ataque de aplicación es mínima: no hay backend ni base de datos en runtime.

Autenticación y autorización

  • En la aplicación: N/A (sin authn/authz; contenido público).
  • En el despliegue: la autenticación a GCP usa el secreto GCP_SA_KEY (.github/workflows/deploy.yml:22-25) y la Service Account blueup-docs-deployer@homelab-466309.iam.gserviceaccount.com (:51). Este es el único límite de confianza con privilegios.

Gestión de secretos

  • El único secreto es GCP_SA_KEY, referenciado desde el contexto de secrets del workflow, no hardcodeado (.github/workflows/deploy.yml:25).
  • .env y *.local están en .gitignore (.gitignore:5-6); no hay credenciales en el árbol del repo (revisado: sin tokens/keys en config ni scripts).

Cabeceras de seguridad (nginx)

Aplicadas a todas las respuestas (nginx.conf:8-11):

CabeceraValor
X-Frame-OptionsSAMEORIGIN
X-Content-Type-Optionsnosniff
X-XSS-Protection1; mode=block
Referrer-Policystrict-origin-when-cross-origin

Observaciones:

  • No se define Content-Security-Policy ni Strict-Transport-Security en nginx.conf (HSTS suele aportarlo el frontend de Cloud Run; DESCONOCIDO: configuración de CSP/HSTS a nivel de Cloud Run).
  • La caché agresiva de estáticos (expires 1y, immutable, nginx.conf:25-28) es segura porque los assets de VitePress llevan hash en el nombre.

Recursos de terceros

  • Google Fonts se cargan desde fonts.googleapis.com/fonts.gstatic.com (.vitepress/config.mts:30-32): conexión del navegador del visitante a Google.
  • Búsqueda local (sin envío de consultas a terceros) (.vitepress/config.mts:121, 188-190).

Postura Zero Trust del repo

  • No participa en la malla Zero Trust de la plataforma (sin Ziti, sin mTLS, sin NKeys): es un servicio público de borde. N/A respecto a la postura ZTA de bc/idagent/ztaclient.

Límites de confianza

mermaid
flowchart LR
    visitante([Visitante anónimo]) -->|HTTPS público| run[Cloud Run nginx]
    run -. fuente de verdad .-> gitea[(Gitea repo)]
    op([Operador]) -->|GCP_SA_KEY + SA| run
    visitante -. tipografías .-> gfonts([Google Fonts])

Cybersecurity · Technology · Leadership