CI/CD Security
Zabezpečení CI/CD pipeline - secrets management, security gates, bezpečný deployment a integrace security scannerů do vašeho release procesu.

Proč je CI/CD Security důležitá?
Co je CI/CD security? CI/CD security je soubor postupů a kontrol, které chrání pipeline pro sestavení, testování a nasazení softwaru. Zahrnuje správu secrets, řízení přístupu k pipeline a runnerům, ověřování integrity závislostí a artefaktů a automatické bezpečnostní kontroly (SAST, SCA, skenování kontejnerů), které zastaví nasazení zranitelného kódu do produkce.
CI/CD pipeline má přístup k vašemu zdrojovému kódu, credentials, production prostředím a artifact repositories. Kompromitovaná pipeline může být využita k nasazení malware, krádeži secrets nebo přístupu do production. Zabezpečení pipeline je kritickou součástí DevSecOps strategie.
Že nejde o teorii, ukázal březen 2026: útočníci přepsali téměř všechny verzní tagy GitHub Action trivy-action na škodlivé commity a vydali podvržený Trivy v0.69.4. Aqua Security doporučuje považovat všechny secrets dostupné z runnerů, které tehdy používaly měnitelné tagy, za kompromitované (Aqua Security).
DevSecOps Pipeline architektura
Security Gates v CI/CD
1. Pre-commit
Kontroly před commitnutím kódu
- Pre-commit hooks (secrets detection)
- Linting a formátování
- Local SAST scan
2. Build Stage
Kontroly při buildování
- SAST - statická analýza kódu
- SCA - analýza závislostí
- Secret scanning (Gitleaks)
- License compliance
3. Test Stage
Security testy
- Unit testy se security asserty
- Container image scanning (Trivy)
- IaC scanning (Trivy
trivy config, Checkov); tfsec je nyní součástí Trivy
4. Deploy Stage
Kontroly před nasazením
- DAST - dynamické testování
- Approval gates pro production
- Deployment verification
5. Post-deploy
Kontinuální monitoring
- Runtime security monitoring
- Vulnerability alerts
- Compliance checks
Secrets Management
Správné zacházení se secrets (API klíče, hesla, certificates) je jedna z nejdůležitějších částí CI/CD security.
NIKDY nedělejte
- Hardcoded secrets v kódu nebo pipeline konfiguracích
- Secrets v environment variables bez šifrování
- Sdílení secrets mezi prostředími (dev/prod)
- Dlouhodobé statické access keys
- Secrets v Docker images
Správné řešení secrets
GitLab vydává jobu krátkodobý OIDC token (id_tokens), který AWS STS vymění za dočasné credentials. Postup podle dokumentace GitLabu:
Příklad: Bezpečná DevSecOps Pipeline
Příklad používá rules místo zastaralých klíčových slov only/except (GitLab Docs), příkaz gitleaks git místo detect, který je od verze 8.19.0 označen jako zastaralý (Gitleaks), a semgrep scan, který na rozdíl od semgrep ci nevyžaduje účet v Semgrep AppSec Platform (Semgrep Docs). Dependency-Check bez API klíče NVD čeká mezi požadavky výrazně déle (OWASP Dependency-Check). Volby trivy image popisuje CLI reference Trivy.
CI/CD Security Best Practices
Pipeline Configuration
- Pipeline as Code v Git repozitáři
- Protected branches - žádné přímé pushe do main
- Required code reviews
- Signed commits
- Pinned verze nástrojů a images: GitHub Actions na celý commit SHA (GitHub Docs), container images na digest
- Provenance build artefaktů podle SLSA v1.2
Secrets & Access
- OIDC/Workload Identity místo statických klíčů
- External secrets manager (Vault, AWS Secrets Manager)
- Rotace secrets
- Least privilege pro pipeline service accounts
- Audit logging všech přístupů
Security Gates
- Fail pipeline na critical findings
- Manual approval pro production deploys
- Security review pro infrastructure změny
- Rollback mechanismy
- Deployment windows
Bezpečnostní rizika v CI/CD
Podle OWASP Top 10 CI/CD Security Risks:
- Poisoned Pipeline Execution (PPE, CICD-SEC-4) - manipulace pipeline konfigurací
- Dependency Confusion jako součást Dependency Chain Abuse (CICD-SEC-3) - zneužití package managerů
- Credential theft z pipeline logů (Insufficient Credential Hygiene, CICD-SEC-6)
- Supply chain attacks přes build nástroje
- Privilege escalation přes self-hosted runnery
Zdroje
- OWASP: Top 10 CI/CD Security Risks (říjen 2026)
- Aqua Security: Trivy Supply Chain Attack: What You Need to Know (duben 2026)
- GitLab Docs: Configure OpenID Connect in AWS to retrieve temporary credentials (říjen 2026)
- GitLab Docs: Deprecated keywords (říjen 2026)
- GitHub Docs: Secure use reference (říjen 2026)
- Gitleaks: README (GitHub) (březen 2026)
- Aqua Security: tfsec is now part of Trivy (GitHub) (říjen 2026)
- Trivy Docs: trivy image CLI reference (říjen 2026)
- Semgrep Docs: Semgrep Community Edition in CI (říjen 2026)
- OWASP Dependency-Check: CLI arguments (říjen 2026)
- SLSA: Specification v1.2 (říjen 2026)