Módulo 10 · Operación y automatización/Lección 66
Pipelines entre cuentas y DevSecOps
Construir una vez y promover el mismo artefacto de desarrollo a producción, con seguridad en cada etapa.
Un pipeline dentro de una sola cuenta funciona hasta que alguien con acceso a desarrollo borra, sin querer, algo de producción. La práctica recomendada es separar ambientes en cuentas distintas. El pipeline entonces tiene que cruzar fronteras de cuenta, y cada cruce es un punto que hay que asegurar.
Una cuenta por etapa
Estas cuentas viven en OU distintas de AWS Organizations, con SCP más estrictas para producción. La cuenta de tooling es la única con permiso para desplegar en las demás.
Construir una vez, promover el mismo artefacto
El artefacto (una imagen de contenedor, un zip de Lambda, una plantilla sintetizada) se construye una sola vez. Las etapas siguientes despliegan ese mismo archivo. Si recompilas en cada ambiente, lo que llega a producción no es lo que probaste: puede cambiar una dependencia, el compilador o una variable.
- Identifica las imágenes por su digest (
sha256:...), no por una etiqueta comolatest, que puede moverse. - Lo que cambia por ambiente (URL de la base de datos, tamaño de instancias) va fuera del artefacto: en Parameter Store, AppConfig o parámetros de la plantilla.
Cruzar cuentas con roles, sin llaves
CodePipeline vive en la cuenta de tooling y despliega en otra cuenta asumiendo un rol allí:
- 1
Llave de KMS administrada por el cliente
El bucket de artefactos se cifra con una llave de KMS propia, cuya política permite usarla a las cuentas destino. La llave administrada por AWS para S3 no sirve: no se puede compartir con otra cuenta. - 2
Política del bucket
El bucket de artefactos permite leer (y escribir, si hace falta) a las cuentas destino. - 3
Rol en la cuenta destino
Un rol cuya política de confianza acepta solo al rol de servicio de CodePipeline de tooling, con permisos para desplegar ahí. - 4
Acción con roleArn
Cada acción de despliegue indica el ARN de ese rol. CodePipeline lo asume y opera dentro de la otra cuenta.
Los pipelines de tipo V2 agregan lo que más se usa en este esquema: disparadores filtrados por rama, etiqueta de Git, ruta de archivos o pull request; variables a nivel de pipeline que pasas al iniciar una ejecución; modos de ejecución QUEUED, SUPERSEDED y PARALLEL; condiciones por etapa y reversión de una etapa a la última ejecución exitosa. CodeBuild compila, prueba y escanea dentro de la cuenta de tooling.
Muchos equipos usan GitHub Actions en lugar de CodePipeline. La regla es la misma: nada de llaves de acceso guardadas como secretos del repositorio. GitHub se registra en IAM como proveedor OIDC y cada ejecución recibe credenciales temporales de un rol, que solo acepta un repositorio y un ambiente concretos:
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::111122223333:oidc-provider/token.actions.githubusercontent.com"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"token.actions.githubusercontent.com:aud": "sts.amazonaws.com",
"token.actions.githubusercontent.com:sub": "repo:mi-org/tienda:environment:produccion"
}
}
}Seguridad en cada estación
DevSecOps significa que la seguridad es una estación más de la línea, automática, y no una revisión al final. Lo típico en AWS:
Amazon Inspector
El inspector de calidad
Code Security escanea el repositorio en GitHub o GitLab: código propio (SAST), dependencias (SCA) e IaC. También escanea imágenes en ECR, funciones Lambda e instancias EC2, y exporta SBOM en CycloneDX o SPDX.Amazon ECR
La bodega que revisa lo que guarda
Escaneo básico: vulnerabilidades del sistema operativo, al subir la imagen o a mano. Escaneo mejorado: delega en Inspector, suma paquetes de lenguajes y reescanea solo cuando aparecen CVE nuevos.AWS Signer
El sello de la caja
Firma imágenes de contenedor (con Notation o con la firma administrada de ECR al subir la imagen) y código de Lambda. Lambda puede rechazar código sin firma válida.AWS KMS
El candado del camión
Cifra artefactos y secretos del pipeline. Su política decide qué cuentas pueden descifrar.
| Criterio | ||
|---|---|---|
| Qué detecta | Vulnerabilidades del sistema operativo | Sistema operativo y paquetes de lenguajes de programación |
| Cuándo | Al subir la imagen o a mano | Al subir y de forma continua |
| Motor | Tecnología propia de AWS con la base de CVE | Amazon Inspector, con eventos a EventBridge |
La firma cierra el círculo: el pipeline firma la imagen después de escanearla y el clúster solo acepta imágenes firmadas. Con Amazon EKS, la verificación se hace con un controlador de admisión; con Lambda, con una configuración de firma de código en modo Enforce. Para lo que pasa después del despliegue, mira detección de amenazas.
Desplegar con reversión automática
Las estrategias son las de despliegue continuo: en el lugar, azul/verde, canario y lineal. A escala, lo que importa es que la reversión no dependa de una persona:
- CodeDeploy: asocias alarmas de CloudWatch al grupo de despliegue y activas la reversión automática por alarma. Para Lambda y ECS hay configuraciones canario y lineal predefinidas, como
CodeDeployDefault.LambdaCanary10Percent5Minutes. - Amazon ECS: desde 2025 tiene azul/verde, lineal y canario integrados, sin CodeDeploy, con reversión por alarma.
- CodePipeline V2: una condición de etapa puede revisar alarmas y revertir la etapa si fallan.
- Aprobación manual antes de producción: una acción de aprobación avisa por SNS y espera. Úsala para decisiones de negocio, no para reemplazar pruebas automáticas.
Quiz
Pon a prueba lo que aprendiste
0 de 5 correctas · 5 sin responder
1.Un pipeline en la cuenta de tooling falla al desplegar en la cuenta de producción con AccessDenied al leer el artefacto. El bucket usa la llave aws/s3. ¿Qué corriges?
2.Un equipo usa GitHub Actions y guarda una llave de acceso de IAM como secreto del repositorio para desplegar. Seguridad pide eliminar credenciales de larga duración. ¿Qué propones?
3.Quieres que las imágenes en ECR se revisen también por vulnerabilidades en paquetes de Python y Java, y que se reanalicen cuando aparezca un CVE nuevo. ¿Qué activas?
4.Una función Lambda de pagos solo debe aceptar código que salió del pipeline oficial. ¿Qué usas?
5.Un despliegue canario de ECS debe volver solo a la versión anterior si sube la tasa de errores 5xx. ¿Qué configuras?