Skip to content

Secretos del piloto de captura privada

Estado: plantilla; no contiene valores y no autoriza un despliegue.

Nombres canónicos

Docker secret Montaje en el contenedor Consumidor
eppa_private_capture_s3_access_key /run/secrets/eppa_private_capture_s3_access_key API y worker
eppa_private_capture_s3_secret_key /run/secrets/eppa_private_capture_s3_secret_key API y worker
eppa_private_capture_kek /run/secrets/eppa_private_capture_kek API y worker; exactamente 32 bytes
eppa_minio_bootstrap_access_key no se monta en runtime operador de bootstrap
eppa_minio_bootstrap_secret_key no se monta en runtime operador de bootstrap

El JWT existente conserva su propio secreto. Las credenciales root/admin de MinIO nunca se montan en la API, el frontend ni el worker.

Plantilla Compose sin valores

Los archivos host viven fuera del checkout, con propietario del servicio y modo 0400. La misma definición se puede montar en el color azul o verde:

services:
  eppa-private-capture-candidate:
    secrets:
      - eppa_private_capture_s3_access_key
      - eppa_private_capture_s3_secret_key
      - eppa_private_capture_kek
    environment:
      EPPA_PRIVATE_CAPTURE_S3_ACCESS_KEY_FILE: /run/secrets/eppa_private_capture_s3_access_key
      EPPA_PRIVATE_CAPTURE_S3_SECRET_KEY_FILE: /run/secrets/eppa_private_capture_s3_secret_key
      EPPA_PRIVATE_CAPTURE_KEK_FILE: /run/secrets/eppa_private_capture_kek

secrets:
  eppa_private_capture_s3_access_key:
    file: ${EPPA_PRIVATE_CAPTURE_S3_ACCESS_KEY_HOST_FILE:?required}
  eppa_private_capture_s3_secret_key:
    file: ${EPPA_PRIVATE_CAPTURE_S3_SECRET_KEY_HOST_FILE:?required}
  eppa_private_capture_kek:
    file: ${EPPA_PRIVATE_CAPTURE_KEK_HOST_FILE:?required}

Variables no secretas obligatorias:

EPPA_PRIVATE_CAPTURE_ENABLED=false
EPPA_PRIVATE_CAPTURE_TTL_SECONDS=86400
EPPA_PRIVATE_CAPTURE_BUCKET=eppa-private-capture-pilot
EPPA_PRIVATE_CAPTURE_S3_ENDPOINT=https://minio.internal.example
EPPA_PRIVATE_CAPTURE_S3_REGION=us-east-1
EPPA_PRIVATE_CAPTURE_KEY_VERSION=v1
EPPA_PRIVATE_CAPTURE_ALLOWED_ORIGIN=https://eppa-pilot.example
EPPA_PRIVATE_CAPTURE_MAX_BYTES=<limite-aprobado>
EPPA_PRIVATE_CAPTURE_MAX_PIXELS=<limite-aprobado>

EPPA_PRIVATE_CAPTURE_ENABLED queda en false hasta que todos los gates del runbook estén aprobados. No se usan variables NEXT_PUBLIC_* para secretos.

Rotación y revocación

  1. Crear una identidad runtime nueva con la misma política acotada.
  2. Montar sus secretos sólo en el color candidato.
  3. Probar CRUD y purge con un fixture sintético.
  4. Conmutar tráfico; verificar que el color anterior ya no recibe sesiones.
  5. Deshabilitar la identidad anterior y confirmar que sus requests reciben AccessDenied.
  6. Destruir las copias host anteriores según el procedimiento del vault.

La KEK requiere un plan de re-encriptado o purga total antes de retirarla. No se elimina una versión de KEK mientras exista un objeto cifrado que la referencie.