Herramientas de gestión y de validación de la calidad y seguridad de las modificaciones de código fuente previas al despliegue.
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
- 1 Unidade Didáctica 5. Acceso a repositorios de código e validación da calidade e seguridade antes do despregamento
- 2 Criterios de Avaliación e Contidos Asociados
- 2.1 Repositorios de código fonte
- 2.2 Ferramentas relacionadas co despregamento en contedores
- 2.3 Ferramentas de validación da calidade do código
- 2.4 Ferramentas de validación da seguridade
- 2.5 Xestión de usuarios e control de accesos
- 2.6 Configuración do acceso aos repositorios
- 2.7 Validación das modificacións do código fonte
- 2.8 Comprobación periódica dos parámetros de seguridade
- 2.9 Validación de dependencias e integracións externas
- 2.10 Integración destas validacións nos procesos CI/CD
- 2.11 Resumo
- 3 Criterios de avaliación
- 3.1 a) Enumeración de ferramentas de despregue en contedores
- 3.2 b) Clasificación de ferramentas de validación de calidade e seguridade
- 3.3 c) Habilitación de accesos a recursos e ferramentas
- 3.4 d) Configuración de acceso a código fonte e políticas de seguridade
- 3.5 e) Validación de modificacións do código e probas de calidade
- 3.6 f) Comprobacións periódicas de parámetros de seguridade do código
- 3.7 g) Validación de dependencias e integración con outros compoñentes
- 4 Ferramentas Clave (Resumo Práctico)
- 5 Actividades Prácticas Propostas
- 6 Recursos e Bibliografía
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
| 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.
| 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.
| 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.
| 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.
| 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
| 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
| 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
- Identificación das dependencias.
- Comprobación de vulnerabilidades.
- Avaliación do impacto.
- Aplicación de actualizacións.
- Execución de probas de integración.
- Aprobación para despregamento.
Integración destas validacións nos procesos CI/CD
Os pipelines modernos incorporan múltiples etapas 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:
- Orquestradores: Kubernetes, Red Hat OpenShift, Docker Swarm.
- Plataformas de Nube: AWS (EKS, ECS), Google Cloud Platform (GKE), Microsoft Azure (AKS).
- Ferramentas de empaquetado: Docker, Podman, Buildah.
- Rexistros de contedores (Registries): Docker Hub, Amazon ECR, Google Container Registry, Harbor.
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:
- Análise Estática (SAST): SonarQube, ESLint, Pylint, SpotBugs, PMD.
- Análise de Dependencias (SCA): OWASP Dependency-Check, Snyk, GitHub Dependabot, Mend (antes WhiteSource).
- Análise de Seguridade en Contedores: Trivy, Clair, Anchore Engine, Sysdig Secure.
- Probas Dinámicas (DAST) e de Integración: OWASP ZAP, Postman + Newman, Selenium.
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:
- Xestión de Acceso e Identidade (IAM): Creación de usuarios, grupos e roles en plataformas cloud (AWS IAM, GCP IAM, Azure AD), en clústeres Kubernetes (RBAC) e en repositorios (GitHub, GitLab, Bitbucket).
- Políticas de Seguridade: Principio de mínimo privilexio, autenticación multifactor (MFA), xestión de secrets (HashiCorp Vault, AWS Secrets Manager).
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)
| 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
- 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.
- 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.
- 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.
- 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.