Herramientas de gestión y de validación de la calidad y seguridad de las modificaciones de código fuente previas al despliegue.

De MediaWiki
Ir a la navegación Ir a la búsqueda
Ciclo de Especialización: Despliegue de Productos Software en Contenedores
Código: 5165 | Módulo: Metodología Devops: preparación de entornos de despliegue


UD5: Creación de acceso a repositorios de código e validación previa ao despregue

A continuación tes o contido da **Unidade Didáctica 5**, redactado en galego e en formato MediaWiki. As táboas están escritas empregando sintaxe MediaWiki estándar (`{|`, `|+`, `|-`, `!`, `|`, `|}`), evitando as formas compactas que estaban a dar problemas.

Sumario

Unidade Didáctica 5. Acceso a repositorios de código e validación da calidade e seguridade antes do despregamento

Introdución

Os procesos modernos de desenvolvemento e despregamento de software baséanse na utilización de repositorios de código fonte, ferramentas de control de versións e sistemas automatizados de validación. Antes de realizar un despregamento nun contorno de produción é necesario verificar que o código cumpre os requisitos de calidade, seguridade e funcionalidade establecidos pola organización.

Nesta unidade estudaranse as ferramentas máis utilizadas para a xestión de código fonte, o control de accesos, a validación da calidade do software e a comprobación da seguridade das dependencias e integracións externas.

Esta unidade didáctica céntrase no Resultado de aprendizaxe 5 do módulo "Metodología Devops: preparación de entornos de despregue":

  • "Crea o acceso aos repositorios de código de infraestrutura e/ou servizos, comprobando as ferramentas de xestión e de validación da calidade e seguridade das modificacións de código fonte previas ao despregue."

O obxectivo é que o alumnado sexa quen de xestionar o acceso ao código fonte e aplicar controis automáticos de calidade e seguridade antes de que calquera cambio pase a producción, dentro dun fluxo DevOps/CI/CD.

Criterios de Avaliación e Contidos Asociados

A continuación, desglósase cada criterio de avaliación coas ferramentas e conceptos clave que se deben traballar.

Repositorios de código fonte

Definición

Un repositorio de código fonte é un sistema que permite almacenar, xestionar e controlar a evolución do código dunha aplicación.

Os repositorios constitúen a base dos procesos de desenvolvemento colaborativo e das metodoloxías DevOps.

Funcións principais

  • Almacenamento centralizado do código.
  • Control de versións.
  • Rexistro de cambios.
  • Traballo colaborativo.
  • Integración con ferramentas CI/CD.
  • Auditoría de modificacións.

Sistemas de control de versións

O sistema máis empregado actualmente é Git.

As súas principais características son:

  • Distribuído.
  • Rápido e eficiente.
  • Soporte para ramas (branches).
  • Integración con plataformas cloud.

Plataformas de xestión de repositorios

Plataformas de xestión de repositorios
Plataforma Funcionalidade principal
GitHub Almacenamento e colaboración sobre repositorios Git
GitLab Repositorios Git e integración CI/CD
Bitbucket Xestión de proxectos e repositorios Git
Azure DevOps Desenvolvemento colaborativo e automatización

Ferramentas relacionadas co despregamento en contedores

As arquitecturas modernas baseadas en contedores empregan diversas ferramentas especializadas.

Ferramentas habituais de despregamento
Ferramenta Función
Docker Creación e execución de contedores
Docker Compose Xestión de aplicacións multicontedor
Kubernetes Orquestración de contedores
Helm Xestión de paquetes para Kubernetes
OpenShift Plataforma empresarial baseada en Kubernetes
Podman Execución de contedores sen daemon central

Obxectivos destas ferramentas

  • Automatizar despregamentos.
  • Garantir a reproducibilidade dos contornos.
  • Facilitar a escalabilidade.
  • Mellorar a dispoñibilidade dos servizos.
  • Simplificar a administración da infraestrutura.

Ferramentas de validación da calidade do código

Obxectivos

As ferramentas de análise de calidade permiten detectar problemas antes de que o software sexa despregado.

Permiten identificar:

  • Erros de programación.
  • Código duplicado.
  • Problemas de mantibilidade.
  • Incumprimento de estándares.
  • Débeda técnica.

Análise estática

A análise estática examina o código sen executalo.

Ferramentas de análise estática
Ferramenta Función
SonarQube Análise integral da calidade do código
ESLint Validación de código JavaScript
Pylint Validación de código Python
Checkstyle Validación de estándares Java

Métricas habituais

  • Cobertura de probas.
  • Complexidade ciclomática.
  • Código duplicado.
  • Vulnerabilidades detectadas.
  • Débeda técnica.

Ferramentas de validación da seguridade

Obxectivos

A seguridade debe verificarse de forma continua ao longo do ciclo de vida da aplicación.

As comprobacións de seguridade permiten detectar:

  • Vulnerabilidades coñecidas.
  • Dependencias inseguras.
  • Configuracións incorrectas.
  • Segredos expostos.

Ferramentas SAST

As ferramentas SAST (Static Application Security Testing) analizan o código fonte.

Ferramentas SAST
Ferramenta Función
SonarQube Detección de vulnerabilidades e malas prácticas
Semgrep Análise de seguridade baseada en regras
CodeQL Análise avanzada de seguridade do código

Ferramentas DAST

As ferramentas DAST (Dynamic Application Security Testing) analizan aplicacións en execución.

Ferramentas DAST
Ferramenta Función
OWASP ZAP Análise dinámica de aplicacións web
Burp Suite Auditoría de seguridade web

Xestión de usuarios e control de accesos

Principio de mínimo privilexio

Cada persoa usuaria debe dispoñer unicamente dos permisos necesarios para realizar o seu traballo.

Roles habituais

Roles nun repositorio de código
Rol Permisos habituais
Visitante Consulta
Desenvolvedor Lectura e escritura
Mantedor Administración de ramas e revisións
Administrador Control total do proxecto

Políticas de acceso

As organizacións adoitan definir:

  • Autenticación multifactor.
  • Políticas de contrasinais.
  • Xestión de grupos.
  • Rexistro de auditoría.
  • Revisión periódica de permisos.

Configuración do acceso aos repositorios

Autenticación

Os sistemas actuais utilizan principalmente:

  • Usuario e contrasinal.
  • Chaves SSH.
  • Tokens de acceso persoal.
  • Integración con directorios corporativos.

Autorización

A autorización determina que accións pode realizar cada usuario.

Exemplos:

  • Crear ramas.
  • Fusionar cambios.
  • Crear etiquetas.
  • Eliminar repositorios.
  • Executar pipelines.

Protección de ramas

As ramas principais adoitan estar protexidas para evitar modificacións non autorizadas.

As medidas máis habituais son:

  • Revisión obrigatoria de cambios.
  • Validación automática.
  • Restrición de escritura directa.
  • Sinatura de commits.

Validación das modificacións do código fonte

Proceso de validación

Antes de incorporar cambios ao repositorio principal deben realizarse diversas comprobacións.

Desenvolvemento
       ↓
Commit
       ↓
Análise de calidade
       ↓
Probas automáticas
       ↓
Validación de seguridade
       ↓
Revisión de código
       ↓
Integración

Revisión de código

A revisión por pares permite detectar:

  • Erros lóxicos.
  • Problemas de rendemento.
  • Vulnerabilidades.
  • Incumprimentos de estándares.

Documentación dos resultados

As validacións deben rexistrarse para facilitar:

  • Auditorías.
  • Seguimento de incidencias.
  • Cumprimento normativo.
  • Mellora continua.

Comprobación periódica dos parámetros de seguridade

Elementos a verificar

  • Configuracións inseguras.
  • Dependencias vulnerables.
  • Segredos expostos.
  • Certificados dixitais.
  • Políticas de acceso.

Automatización das comprobacións

As comprobacións poden executarse:

  • En cada commit.
  • En cada solicitude de integración.
  • De forma programada.
  • Antes de cada despregamento.

Validación de dependencias e integracións externas

Importancia das dependencias

As aplicacións modernas dependen de múltiples bibliotecas externas.

Unha vulnerabilidade nunha dependencia pode afectar toda a aplicación.

Tipos de riscos

  • Vulnerabilidades coñecidas.
  • Dependencias obsoletas.
  • Dependencias abandonadas.
  • Problemas de compatibilidade.

Ferramentas de análise de dependencias

Ferramentas de validación de dependencias
Ferramenta Función
Dependabot Actualización e detección de vulnerabilidades
Snyk Análise de dependencias e contedores
OWASP Dependency-Check Identificación de vulnerabilidades coñecidas
Trivy Análise de imaxes de contedores e dependencias

Proceso de validación

  1. Identificación das dependencias.
  2. Comprobación de vulnerabilidades.
  3. Avaliación do impacto.
  4. Aplicación de actualizacións.
  5. Execución de probas de integración.
  6. Aprobación para despregamento.

Integración destas validacións nos procesos CI/CD

Os pipelines modernos incorporan múltiples etapas de validación.

Etapas habituais dun pipeline de validación
Etapa Obxectivo
Compilación Verificar a xeración correcta do software
Probas unitarias Validar compoñentes individuais
Análise de calidade Detectar problemas de mantibilidade
Análise de seguridade Detectar vulnerabilidades
Validación de dependencias Comprobar bibliotecas externas
Despregamento Publicación da aplicación validada

Resumo

Os repositorios de código constitúen o elemento central dos procesos modernos de desenvolvemento e despregamento. A súa correcta configuración require definir usuarios, permisos e políticas de acceso adecuadas.

Antes de despregar unha aplicación deben executarse validacións de calidade, seguridade e compatibilidade das dependencias. Estas comprobacións intégranse habitualmente nos pipelines CI/CD, permitindo detectar incidencias de forma temperá e garantindo a estabilidade dos contornos de produción.



Criterios de avaliación

a) Enumeración de ferramentas de despregue en contedores

  • Criterio: *"Enumeráronse ferramentas relacionadas co despregue en contedores, describindo os seus obxectivos, características e funcionamento."*
  • Contido:

b) Clasificación de ferramentas de validación de calidade e seguridade

  • Criterio: *"Clasificáronse as ferramentas de validación de calidade e seguridade do código e dependencias de librarías externas ou integracións, describindo as súas características e aplicacións."*
  • Contido:

c) Habilitación de accesos a recursos e ferramentas

  • Criterio: *"Habilitouse o acceso aos recursos e ferramentas para despregar e/ou xestionar os contornos de produción definidos na arquitectura, definindo persoas usuarias e perfís que permitan e limiten."*
  • Contido:

d) Configuración de acceso a código fonte e políticas de seguridade

  • Criterio: *"Configurouse o acceso a un código fonte para ser xestionado a través de ferramentas, identificando os parámetros de seguridade e políticas de acceso, a través das persoas usuarias e/ou grupos asignados."*
  • Contido:
  • Control de Versións: Configuración de repositorios Git, xestión de claves SSH e tokens de acceso persoal.
  • Estratexias de Ramas (Branching): Definición de políticas de protección para ramas principais (ex: main, develop) requirindo pull requests, revisións de código e estado das comprobacións CI (Status checks).

e) Validación de modificacións do código e probas de calidade

  • Criterio: *"Validáronse unhas modificacións do código fonte, executando probas de calidade mediante ferramentas específicas e documentándoas."*
  • Contido:
  • Integración Continua (CI): Configuración de pipelines en ferramentas como Jenkins, GitHub Actions, GitLab CI, Azure Pipelines.
  • Execución Automatizada: Incorporación de jobs que executan as ferramentas do punto (b) (SonarQube, ESLint, etc.) ante cada push ou pull request.
  • Documentación: Xeración de informes de calidade e o seu almacenamento como artefactos do pipeline para a súa revisión.

f) Comprobacións periódicas de parámetros de seguridade do código

  • Criterio: *"Executáronse comprobacións de parámetros de seguridade do código, mediante ferramentas específicas e de forma periódica."*
  • Contido:
  • Escaneo Continuo: Configuración de análises programadas (diarias/semanais) ou baseadas en eventos para detectar novas vulnerabilidades (Snyk, GitHub Advanced Security).
  • Análise de Secretos: Uso de ferramentas como GitLeaks, TruffleHog ou detectores integrados para previr o commit de credenciais.
  • Revisión de "Software Composition Analysis" (SCA): Monitorización continua das librarías de terceiros en busca de CVE (Common Vulnerabilities and Exposures) coñecidos.

g) Validación de dependencias e integración con outros compoñentes

  • Criterio: *"Validáronse, con anterioridade ao despregue, as dependencias do código de librarías externas ou integracións, usando ferramentas de comprobación para verificar a seguridade e funcionalidade e integración co resto dos compoñentes do aplicativo."*
  • Contido:
  • Verificación de Compatibilidade: Validación de que as versións das librarías son compatibles coas API's internas e externas.
  • Probas de Integración: Execución de test suites que validan a interacción con servizos externos (bases de datos, sistemas de mensaxería, API's de terceiros) nun contorno de probas.
  • "Contract Testing": Uso de ferramentas como Pact para validar a comunicación entre servizos baseada en contratos.

Ferramentas Clave (Resumo Práctico)

Ferramentas para a UD5
Categoría Ferramentas Función Principal Relación co criterio
Orquestación Kubernetes, OpenShift, Docker Swarm Xestionar o ciclo de vida dos contedores a, c
Repositorio / VCS Git, GitHub, GitLab, Bitbucket Almacenar e versionar código fonte c, d
CI/CD / Automatización Jenkins, GitHub Actions, GitLab CI, Azure Pipelines Automatizar a construción, proba e despregue e, f, g
Análise Estática (SAST) SonarQube, ESLint, Pylint, SpotBugs Detectar "code smells", bugs e vulnerabilidades no código b, e, f
Análise de Dependencias (SCA) Snyk, OWASP Dependency-Check, Dependabot Detectar vulnerabilidades en librarías externas b, f, g
Seguridade en Contedores Trivy, Clair, Anchore Escanear imaxes de contedores en busca de vulnerabilidades b, f
Xestión de Secretos HashiCorp Vault, AWS Secrets Manager Almacenar e xestionar credenciais de forma segura c, d
Probas de Integración Postman/Newman, Selenium, Pact Validar a funcionalidade e integración do sistema b, e, g

Actividades Prácticas Propostas

  1. Configuración de Acceso: Crear un repositorio en GitHub, engadir colaboradores con diferentes roles (admin, write, read) e configurar a protección da rama main.
  2. Pipeline de Validación: Deseñar un pipeline en Jenkins ou GitHub Actions que, ante un pull request, execute:
    • Análise estática con ESLint (para JavaScript) ou Pylint (para Python).
    • Escaneo de dependencias con OWASP Dependency-Check ou Snyk.
    • Construción da imaxe Docker e escaneo con Trivy.
  3. Xestión de Vulnerabilidades: Analizar un código con vulnerabilidades coñecidas (ex: libraría Log4j desactualizada), usar SCA para detectala e propoñer a súa actualización.
  4. Documentación: Xerar un informe de calidade a partir de SonarQube e anexalo como artefacto do pipeline.

Recursos e Bibliografía

  • Lexislación: Real Decreto 144/2026, de 25 de febreiro (BOE-A-2026-4672) - Anexo I, Módulo 5165.
  • Documentación Oficial de Ferramentas:
  • Guías de Boas Prácticas:
  • OWASP Top 10.
  • Guía de estilos de código (Google, Airbnb, PEP 8).
  • Repositorios de Exemplo: Repositorios públicos en GitHub con pipelines de exemplo.

Esta unidade enfatiza a importancia de "shift-left" (mover a seguridade á esquerda) no ciclo de desenvolvemento. A práctica con estas ferramentas é fundamental para o rol de DevOps Engineer.