¿Qué hace protegiendo-imágenes-de-registro-de-contenedores?
Protege imágenes de registros de contenedores (ECR, ACR, GCR, Docker Hub) escaneándolas con Trivy y Grype, firmándolas con Cosign y Sigstore, configurando controles de acceso al registro y construyendo pipelines CI/CD que bloquean imágenes no escaneadas o sin firmar. Úsalo al establecer controles de seguridad en el registro o al aplicar verificaciones de escaneo/firma antes de la promoción de imágenes.
Características
- Escaneo de vulnerabilidades: Integración con Trivy y Grype para detectar vulnerabilidades en las imágenes.
- Firma de imágenes: Uso de Cosign y Sigstore para firmar imágenes criptográficamente.
- Control de acceso: Configuración de políticas de acceso en registros como ECR, ACR y GCR.
- Pipelines CI/CD: Creación de pipelines que verifican escaneo y firma antes de permitir la promoción de imágenes.
Requisitos
- Herramientas CLI:
trivy,grype,cosign,docker,aws(para ECR),az(para ACR),gcloud(para GCR). - Permisos: Acceso de lectura/escritura al registro de contenedores y permisos para firmar imágenes.
Uso
Escaneo con Trivy
trivy image --severity HIGH,CRITICAL --exit-code 1 my-image:latest
Escaneo con Grype
grype my-image:latest --fail-on high
Firma con Cosign
cosign sign --key cosign.key my-registry/my-image:latest
Verificación de firma
cosign verify --key cosign.pub my-registry/my-image:latest
Ejemplo de Pipeline CI/CD (GitHub Actions)
name: Secured Image Pipeline
on:
push:
branches: [main]
jobs:
build-and-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Image
run: docker build -t my-registry/my-image:latest .
- name: Scan with Trivy
uses: aquasecurity/trivy-action@master
with:
image-ref: 'my-registry/my-image:latest'
format: 'table'
exit-code: '1'
severity: 'HIGH,CRITICAL'
- name: Sign with Cosign
run: |
echo "${{ secrets.COSIGN_PRIVATE_KEY }}" > cosign.key
cosign sign --key cosign.key my-registry/my-image:latest
- name: Push Image
run: docker push my-registry/my-image:latest
Configuración de Acceso
AWS ECR
aws ecr set-repository-policy --repository-name my-repo --policy-document file://policy.json
Azure ACR
az acr update --name myregistry --anonymous-pull-enabled false
GCR
gcloud container images add-iam-policy-binding gcr.io/my-project/my-image --member='user:[email protected]' --role='roles/storage.objectViewer'
Buenas Prácticas
- No uses imágenes sin escanear en producción.
- Siempre firma las imágenes después del escaneo.
- Configura alertas para vulnerabilidades críticas.
- Revisa periódicamente las políticas de acceso.