Co je IaC Security?
Infrastructure as Code (IaC) Security zahrnuje procesy a nástroje pro zabezpečení vaší infrastruktury definované v kódu. Když píšete infrastrukturu jako kód (např. Terraform, CloudFormation), automaticky vytváříte dokumentaci vaší infrastruktury a můžete použít nástroje pro validaci bezpečnostních konfigurací ještě před jejich nasazením.
Proč je IaC důležité pro bezpečnost?
Představte si, že vaše infrastruktura byla větší - měli byste development, staging a production prostředí, více GitLab runnerů, databázové servery a další. Kdybychom všechno konfigurovali manuálně, nastaly by problémy:
- Pomalá konfigurace: Manuální vytváření zdrojů je časově náročné a obtížně škálovatelné
- Nekonzistence: Obtížné zajistit stejnou konfiguraci napříč prostředími
- Chybějící dokumentace: Bez IaC nemáte přehled jak byla infrastruktura vytvořena
- Riziko miskonfigurací: Lidé dělají chyby - zapomenou uzavřít port, smazat nepotřebného uživatele
- Žádný audit trail: Bez verzování nevíte kdo co změnil a proč
- Obtížná obnova: Po útoku nevíte jak obnovit původní stav
Výhody Infrastructure as Code
- Kód je sám o sobě dokumentací vaší infrastruktury
- Můžete použít nástroje pro validaci bezpečnostních problémů
- Peer reviews a security audity kódu
- Verzování a audit trail všech změn
- Rychlá obnova po incidentu - stačí aplikovat kód
GitOps principy pro IaC
GitOps je přístup kde Git repozitář slouží jako single source of truth pro vaší infrastrukturu. Všechny změny prochází přes pull requesty, code review a automatizované testy.
GitOps Workflow pro IaC
1. Code & Version Control
Všechna infrastruktura je v Git repozitáři
- Terraform/CloudFormation/Pulumi kód
- Branch protection rules
- Required reviews před merge
2. Automated Validation
CI pipeline automaticky validuje změny
- terraform validate - syntaxe a struktura
- tfsec/Checkov - security scanning
- terraform plan - preview změn
3. Review & Approval
Lidská kontrola před nasazením
- Code review od kolegů
- Security review pro kritické změny
- Approval gates v pipeline
4. Automated Deployment
Centralizované nasazení přes pipeline
- terraform apply pouze z pipeline
- Remote state management
- Audit log všech deploymentů
IaC Security Scanning nástroje
tfsec
Security scanner specifická pro Terraform kód. Detekuje bezpečnostní miskonfigurace.
- 300+ built-in pravidel
- Podpora custom pravidel
- CI/CD integrace
- SARIF output format
Checkov
Policy-as-code nástroj pro IaC scanning - Terraform, CloudFormation, Kubernetes a další.
- Multi-framework podpora
- 1000+ built-in policies
- Custom policies v Python
- Graph-based analysis
Terrascan
Static code analyzer pro Infrastructure as Code s podporou OPA policies.
- 500+ policies
- OPA Rego policies
- Kubernetes, Docker, Terraform
- Webhook integration
terraform validate
Built-in Terraform příkaz pro validaci syntaxe a struktury.
- Syntax validation
- Variable references
- Module validation
- Provider requirements
Praktický příklad: CI/CD Pipeline pro Terraform
Příklad tfsec výstupu
Bezpečný Terraform kód - příklady
Security Group - správně vs špatně
S3 Bucket - encryption a access control
IaC Security Best Practices - Shrnutí
GitOps & Version Control
- Všechna infrastruktura v Git repozitáři
- Branch protection - žádné přímé pushe do main
- Required code reviews před merge
- Signed commits pro audit trail
- Semantic versioning pro releases
Automated Security Scanning
- tfsec nebo Checkov v každém PR
- Blokovat merge při kritických findings
- Generovat reporty pro audit
- Pravidelně aktualizovat pravidla
- Custom policies pro vaše požadavky
Secure Terraform Practices
- Remote state s encryption (S3 + DynamoDB lock)
- Sensitive values v variables, ne v kódu
- Používat data sources místo hardcoded values
- Moduly pro znovupoužitelnou infrastrukturu
- terraform plan review před apply
Co NEDĚLAT
- Hardcoded secrets v Terraform kódu
- terraform apply z lokálního počítače
- Ignorovat security scan výsledky
- Wildcard permissions (0.0.0.0/0 na všech portech)
- Vypnuté encryption pro storage
- Chybějící tagy pro audit a cost tracking