# Iac Security Scanner

> Subagent Scope Guard

- Skill: `gonzalezpazmonica/iac-security-scanner` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add gonzalezpazmonica/iac-security-scanner`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gonzalezpazmonica/iac-security-scanner/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: gonzalezpazmonica (https://skillmd.com/u/gonzalezpazmonica)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/gonzalezpazmonica/iac-security-scanner

---


## Subagent Scope Guard

> Si fuiste invocado como subagente para una tarea concreta, ejecuta solo esa
> tarea, reporta DONE / DONE_WITH_CONCERNS / BLOCKED y retorna. No actives
> el workflow de orquestación completo.

# IaC Security Scanner Skill

## §0 Cuándo usar

- Después de que `terraform-developer` o `infrastructure-agent` genera IaC
- Antes de presentar una propuesta `terraform plan` al humano
- En CI antes de merge de PRs que tocan `*.tf`, `Dockerfile`, `*.bicep`, `docker-compose*.yml`
- Cuando el humano pide explícitamente revisar la seguridad del IaC

## §1 Integración con terraform-developer

Tras generar IaC, `terraform-developer` debe incluir en su output:

```
Antes de ejecutar terraform plan/apply, ejecuta:
  bash scripts/iac-security-scan.sh --path <directorio_infra>
```

El humano recibe siempre el IaC junto con su security score.

## §2 Uso básico

```bash
# Escanear directorio IaC
bash scripts/iac-security-scan.sh --path ./infra/

# Solo CRITICAL (más estricto)
bash scripts/iac-security-scan.sh --path ./infra/ --severity CRITICAL

# Incluir escaneo de imagen Docker
bash scripts/iac-security-scan.sh --path ./infra/ --image myapp:latest

# Sin actualizar DB (modo offline)
bash scripts/iac-security-scan.sh --path ./infra/ --skip-update
```

## §3 Auto-detección de tipos IaC

El script detecta automáticamente:
- **Terraform**: ficheros `*.tf`
- **Bicep**: ficheros `*.bicep`
- **Dockerfile**: ficheros `Dockerfile*`
- **docker-compose**: `docker-compose*.yml`
- **Kubernetes**: manifests YAML con `kind:`

## §4 Configurar Trivy sin instalación local

Si Trivy no está disponible, el script usa Docker automáticamente:

```bash
docker run --rm -v "$(pwd):/workspace" aquasec/trivy:latest config /workspace
```

## §5 Gestión de falsos positivos

```bash
# Generar baseline de misconfiguraciones conocidas
bash scripts/iac-security-baseline.sh --path ./infra/ --output .trivyignore
# → Revisar el fichero antes de commitear
# → Cada supresión requiere justificación en comentario
```

## §6 Output

```
output/security/iac-scan-YYYYMMDD.json   ← report completo
output/security/iac-scan-YYYYMMDD.md     ← summary para humano
```

## §7 Misconfiguraciones más comunes en IaC generado por LLMs

| Recurso | Misconfig habitual | ID Trivy |
|---|---|---|
| S3 Bucket | ACL pública | AVD-AWS-0089 |
| Security Group | 0.0.0.0/0 ingress all ports | AVD-AWS-0105 |
| IAM Role | `*` en actions/resources | AVD-AWS-0057 |
| RDS / Storage | Sin cifrado en reposo | AVD-AWS-0077 |
| Container | Ejecuta como root | DS002 |

Ver política completa: `docs/rules/domain/iac-security-policy.md`

