Communitygithub.com

Construcción de Pipeline DevSecOps con GitLab CI

Configura un pipeline de CI/CD en GitLab que integra SAST (Semgrep, SpotBugs, Gosec, Bandit, NodeJsScan), DAST, escaneo de contenedores, escaneo de dependencias y detección de secretos utilizando las herramientas nativas de GitLab.

¿Qué es Construcción de Pipeline DevSecOps con GitLab CI?

Esta habilidad te permite construir un pipeline DevSecOps completo en GitLab CI/CD, integrando todas las capacidades de seguridad nativas de GitLab: SAST (análisis estático con múltiples analizadores como Semgrep, SpotBugs, Gosec, Bandit, NodeJsScan), DAST (pruebas dinámicas en aplicaciones en ejecución), escaneo de contenedores (Trivy para CVEs), escaneo de dependencias y detección de secretos. Es ideal para equipos que buscan integrar seguridad desde el inicio del desarrollo (shift-left) y cumplir con requisitos de cumplimiento normativo. Soporta GitLab Ultimate como plataforma principal y proporciona una configuración YAML completa, políticas de aprobación, reglas SAST personalizadas y gestión de vulnerabilidades a través del panel de seguridad. La IA de GitLab Duo ayuda a reducir falsos positivos en SAST, permitiendo a los equipos de seguridad enfocarse en amenazas reales.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/building-devsecops-pipeline-with-gitlab-ci

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Construcción de Pipeline DevSecOps con GitLab CI?

Visión General

GitLab proporciona una plataforma DevSecOps integrada que incorpora pruebas de seguridad directamente en el pipeline de CI/CD. Al aprovechar los escáneres de seguridad integrados de GitLab (SAST, DAST, escaneo de contenedores, escaneo de dependencias, detección de secretos y cumplimiento de licencias), los equipos pueden adelantar la seguridad, detectando vulnerabilidades durante el desarrollo en lugar de después del despliegue. La IA de GitLab Duo ayuda con la detección de falsos positivos para vulnerabilidades SAST, ayudando a los equipos de seguridad a centrarse en problemas reales.

Cuándo Usarlo

  • Al implementar o configurar capacidades de construcción de pipeline devsecops con gitlab ci en tu entorno
  • Al establecer controles de seguridad alineados con requisitos de cumplimiento
  • Al construir o mejorar la arquitectura de seguridad para este dominio
  • Al realizar evaluaciones de seguridad que requieran esta implementación

Prerrequisitos

  • Licencia GitLab Ultimate (requerida para el conjunto completo de escáneres de seguridad)
  • GitLab Runner configurado (compartido o auto-alojado)
  • Familiaridad con la configuración del pipeline .gitlab-ci.yml
  • Docker-in-Docker (DinD) o Kaniko para compilaciones de contenedores
  • Aplicación desplegada en un entorno de prueba para el escaneo DAST

Etapas Principales de Escaneo de Seguridad

Pruebas de Seguridad de Aplicaciones Estáticas (SAST)

SAST analiza el código fuente en busca de vulnerabilidades antes de la compilación. GitLab admite más de 14 lenguajes utilizando analizadores como Semgrep, SpotBugs, Gosec, Bandit y NodeJsScan. La inclusión más simple utiliza las plantillas gestionadas de GitLab.

Pruebas de Seguridad de Aplicaciones Dinámicas (DAST)

DAST prueba aplicaciones en ejecución simulando cargas de ataque contra endpoints HTTP. Detecta XSS, SQLi, CSRF y otras vulnerabilidades en tiempo de ejecución que el análisis estático no puede encontrar. DAST requiere una URL objetivo desplegada y accesible.

Escaneo de Contenedores

Utiliza Trivy para escanear imágenes Docker en busca de CVEs conocidos en paquetes del SO y dependencias de aplicaciones. Se ejecuta después de la etapa de compilación de Docker para filtrar imágenes antes de que lleguen a un registro.

Escaneo de Dependencias

Inspecciona manifiestos de dependencias (package.json, requirements.txt, pom.xml, Gemfile.lock) en busca de versiones vulnerables conocidas. Opera a nivel de código fuente, complementando el escaneo de contenedores.

Detección de Secretos

Escanea commits en busca de credenciales, claves API, tokens y claves privadas cometidas accidentalmente mediante coincidencia de patrones y análisis de entropía. Se ejecuta en cada commit para evitar que los secretos lleguen al repositorio.

Implementación

Configuración Completa del Pipeline

# .gitlab-ci.yml

stages:
  - build
  - test
  - security
  - deploy-staging
  - dast
  - deploy-production

variables:
  DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
  SECURE_LOG_LEVEL: "info"

# Incluir plantillas de seguridad gestionadas por GitLab
include:
  - template: Security/SAST.gitlab-ci.yml
  - template: Security/Secret-Detection.gitlab-ci.yml
  - template: Security/Dependency-Scanning.gitlab-ci.yml
  - template: Security/Container-Scanning.gitlab-ci.yml
  - template: DAST.gitlab-ci.yml
  - template: Security/License-Scanning.gitlab-ci.yml

build:
  stage: build
  image: docker:24.0
  services:
    - docker:24.0-dind
  variables:
    DOCKER_TLS_CERTDIR: "/certs"
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build -t $DOCKER_IMAGE .
    - docker push $DOCKER_IMAGE
  rules:
    - if: $CI_COMMIT_BRANCH

unit-tests:
  stage: test
  image: $DOCKER_IMAGE
  script:
    - npm ci
    - npm run test:coverage
  coverage: '/Lines\s*:\s*(\d+\.?\d*)%/'
  artifacts:
    reports:
      junit: junit-report.xml
      coverage_report:
        coverage_format: cobertura
        path: coverage/cobertura-coverage.xml

# Sobrescribir SAST para ejecutarlo en la etapa de seguridad
sast:
  stage: security
  variables:
    SAST_EXCLUDED_PATHS: "spec,test,tests,tmp,node_modules"
    SEARCH_MAX_DEPTH: 10

# Sobrescribir escaneo de contenedores
container_scanning:
  stage: security
  variables:
    CS_IMAGE: $DOCKER_IMAGE
    CS_SEVERITY_THRESHOLD: "HIGH"

# Sobrescribir escaneo de dependencias
dependency_scanning:
  stage: security

# Sobrescribir detección de secretos
secret_detection:
  stage: security

# Escaneo de cumplimiento de licencias
license_scanning:
  stage: security

deploy-staging:
  stage: deploy-staging
  image: bitnami/kubectl:latest
  script:
    - kubectl set image deployment/app app=$DOCKER_IMAGE -n staging
    - kubectl rollout status deployment/app -n staging --timeout=300s
  environment:
    name: staging
    url: https://staging.example.com
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

# DAST se ejecuta contra el entorno de pruebas desplegado
dast:
  stage: dast
  variables:
    DAST_WEBSITE: https://staging.example.com
    DAST_FULL_SCAN_ENABLED: "true"
    DAST_BROWSER_SCAN: "true"
  needs:
    - deploy-staging
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

deploy-production:
  stage: deploy-production
  image: bitnami/kubectl:latest
  script:
    - kubectl set image deployment/app app=$DOCKER_IMAGE -n production
    - kubectl rollout status deployment/app -n production --timeout=300s
  environment:
    name: production
    url: https://app.example.com
  when: manual
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

Políticas de Aprobación de Seguridad

Configura políticas de ejecución de escaneos para exigir escaneos de seguridad obligatorios:

  1. Navega a Seguridad y Cumplimiento > Políticas
  2. Crea una "Política de Ejecución de Escaneos" que requiera SAST y detección de secretos en todas las ramas
  3. Crea una "Política de Aprobación de Solicitudes de Fusión" que requiera la aprobación del equipo de seguridad cuando se detecten vulnerabilidades críticas

Configuración Personalizada de Reglas SAST

Crea .gitlab/sast-ruleset.toml para personalizar el comportamiento del analizador:

[semgrep]
  [[semgrep.ruleset]]
    dirs = ["src"]

  [[semgrep.passthrough]]
    type = "url"
    target = "/sgrep-rules/custom-rules.yml"
    value = "https://semgrep.dev/p/owasp-top-ten"

  [[semgrep.passthrough]]
    type = "url"
    target = "/sgrep-rules/java-rules.yml"
    value = "https://semgrep.dev/p/java"

Panel de Seguridad y Gestión de Vulnerabilidades

Informe de Vulnerabilidades

GitLab consolida todos los hallazgos de los escáneres en un único Informe de Vulnerabilidades accesible en Seguridad y Cumplimiento > Informe de Vulnerabilidades. Cada vulnerabilidad incluye:

  • Clasificación de gravedad (Crítico, Alto, Medio, Bajo, Informativo)
  • Fuente del escáner (SAST, DAST, Contenedor, Dependencia, Secreto)
  • Ubicación en el código fuente o capa de imagen
  • Guía de remediación y correcciones sugeridas
  • Seguimiento de estado (Detectado, Confirmado, Descartado, Resuelto)

Widget de Seguridad en Solicitudes de Fusión

Cada solicitud de fusión muestra un widget de escaneo de seguridad que muestra:

  • Nuevas vulnerabilidades introducidas por la MR
  • Vulnerabilidades corregidas resueltas por la MR
  • Comparación con la línea base de la rama objetivo

Optimización del Pipeline

  • Ejecución en paralelo: Los escáneres de seguridad se ejecutan concurrentemente en la etapa de seguridad
  • Caché: Usa caché de CI para descargas de dependencias y acelerar el escaneo
  • Escaneo incremental: SAST puede escanear solo archivos modificados usando SAST_INCREMENTAL: "true"
  • Condiciones de fallo: Establece allow_failure: false en escáneres críticos para imponer puertas de calidad

Monitoreo y Métricas

MétricaDescripciónObjetivo
Cobertura de seguridad del pipelinePorcentaje de proyectos con todos los escáneres habilitados> 95%
Tiempo medio de resolución (MTTR) de vulnerabilidades críticasTiempo desde la detección hasta la resolución de hallazgos críticos< 48 horas
Tasa de falsos positivosPorcentaje de hallazgos descartados como falsos positivos< 15%
Tasa de bloqueo de detección de secretosPorcentaje de commits de secretos bloqueados por reglas de push> 99%

Referencias

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados