Saltar al contenido principal
MKA1 aplica una cadena de suministro determinista donde cada imagen de contenedor es rastreable a un commit específico de origen, construida exclusivamente a través de pipelines CI automatizados y almacenada en registros privados que rechazan artefactos externos.

Qué está activo

Etiquetado inmutable de artefactos

Cada imagen de contenedor construida por la plataforma se etiqueta con el SHA del commit de git de origen. Esto crea un vínculo inmutable y uno a uno entre el código fuente y el binario desplegado:
  • Las imágenes se suben a Amazon ECR con etiquetas de commit-SHA (por ejemplo, sha-a1b2c3d), asegurando que cada artefacto sea identificable de manera única.
  • Los repositorios ECR están configurados como registros privados limitados a la cuenta de AWS de la organización.
  • Las políticas de ciclo de vida de ECR aplican una ventana de retención de 30 días para imágenes con commit-SHA, manteniendo solo la etiqueta latest indefinidamente.

Pipeline CI/CD controlado

Todas las imágenes de contenedor se originan desde flujos de trabajo de GitHub Actions — no se permiten subidas manuales de imágenes:
  • Los flujos de despliegue se autentican con AWS mediante federación OIDC (sin credenciales de larga duración).
  • GitHub Actions utiliza versiones fijadas de acciones para construcciones reproducibles y deterministas.
  • Docker Buildx produce imágenes multiplataforma desde un entorno de construcción consistente.
  • La integridad de dependencias se verifica durante las construcciones (por ejemplo, go mod verify para módulos de Go).
  • El acceso a módulos privados se controla mediante PATs de GitHub con alcance específico en lugar de credenciales amplias.

Aplicación de registros privados

Los despliegues de Kubernetes extraen imágenes exclusivamente de nuestros registros privados de Amazon ECR:
  • Todos los manifiestos de servicios hacen referencia a URIs de imagen ECR completamente calificadas dentro de la cuenta de AWS de la organización.
  • No se hace referencia a registros públicos ni de terceros en cargas de trabajo de producción.
  • El escaneo nativo de vulnerabilidades de ECR está habilitado, proporcionando una evaluación automatizada del contenido de las imágenes.

Gestión de secretos y llaves

  • Todos los secretos están cifrados en reposo usando SOPS con una clave AWS KMS gestionada por el cliente.
  • Los secretos nunca se almacenan en texto plano en el repositorio ni en los logs de CI.
  • El acceso al clúster de Kubernetes está gobernado por RBAC integrado con IAM, restringiendo quién puede interactuar con las cargas de trabajo y los registros.

Cómo lo validamos

Validamos la cadena de suministro mediante revisión de infraestructura como código e inspección en vivo del clúster. Rastreabilidad de origen a imagen: Cada etiqueta de imagen desplegada corresponde a un SHA de commit de git. Dado cualquier contenedor en ejecución, podemos identificar la revisión exacta del código fuente:
kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'
Verificación del origen del registro: Confirmamos que todas las cargas de trabajo en ejecución extraen exclusivamente de nuestro ECR privado:
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' | sort -u
Auditoría del pipeline CI: Las ejecuciones de los flujos de trabajo de GitHub Actions quedan registradas y son auditables, proporcionando un historial completo de quién disparó cada construcción y qué commit produjo cada imagen.

Evidencia

Imagen ECR con etiqueta de commit-SHA

REPOSITORY                          TAG              DIGEST
[redacted-account].dkr.ecr.us-west-2...   sha-a1b2c3d      sha256:[redacted]
[redacted-account].dkr.ecr.us-west-2...   latest           sha256:[redacted]

Pods de Kubernetes extrayendo de ECR privado

mkllm-gateway-...     [redacted-account].dkr.ecr.us-west-2.amazonaws.com/mkllm-gateway:sha-[redacted]
mkllm-worker-...      [redacted-account].dkr.ecr.us-west-2.amazonaws.com/mkllm-worker:sha-[redacted]
mk1-api-...           [redacted-account].dkr.ecr.us-west-2.amazonaws.com/mk1-api:sha-[redacted]
kong-...               [redacted-account].dkr.ecr.us-west-2.amazonaws.com/kong:sha-[redacted]

Flujo de trabajo de GitHub Actions que aplica construcciones solo desde CI

# Fragmento de deploy-mk1.yaml
on:
  push:
    branches: [main]
    paths: ["mk1/**"]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: aws-actions/configure-aws-credentials@v4
      - uses: aws-actions/amazon-ecr-login@v2
      - run: skaffold run -p ${{ matrix.environment }}