In 2020, supply chain attacks were a theoretical concern. By 2021, SolarWinds made them headline news. In 2022, the focus shifted to CI/CD pipeline security. In 2023, it was API security and AI-generated phishing. In 2024, xz-utils proved that even foundational open-source libraries could be silently compromised by patient, sophisticated attackers. In 2025, the EU's regulatory response — DORA, NIS2, CRA — transformed security from a technical discipline into a legal obligation.
Each year, the threat landscape shifted. Organisations that built security architectures as fixed, point-in-time solutions found themselves perpetually behind. The firewall rules from 2020 don't address supply chain attacks. The vulnerability scanner from 2022 doesn't understand AI model poisoning. The compliance framework from 2023 doesn't satisfy DORA.
Security engineering is not a project with a completion date. It's a continuous discipline — more like fitness than construction. You don't "finish" being secure. You maintain, adapt, and evolve. This article describes how to build the engineering practices and organisational structures that make continuous security evolution sustainable.
The Evolution Trap
Most organisations follow a predictable security cycle:
- Incident or regulation arrives → panic
- Budget allocated → buy tools, hire consultants
- Point-in-time hardening → implement controls for the specific threat
- Compliance achieved → declare victory
- Drift begins → attention shifts, configurations decay, new threats emerge
- New incident or regulation → back to step 1
This cycle is expensive, reactive, and exhausting. Each iteration starts almost from scratch because the previous solution was designed for a specific threat, not for adaptability.
Principle: Design for Change, Not for Today's Threat
The key insight is that your security architecture should be designed to evolve — not to address any specific threat perfectly. This means:
- Modular controls: Security controls that can be added, removed, or updated independently. A monolithic security appliance that handles everything is impossible to evolve — when the threat changes, you replace the whole thing
- Policy as code: Security policies in Git, not in appliance configurations. Code can be versioned, reviewed, tested, and rolled back. Appliance configurations can't
- Observable systems: You can't adapt to threats you can't see. Comprehensive logging, metrics, and tracing aren't just operational — they're security infrastructure
- Automated baselines: Every security control has an automated test that verifies it's working. When drift happens (and it always happens), automated tests catch it
Kubernetes Recipes
A practical guide for container orchestration and deployment by Grzegorz Stencel & Luca Berton (Apress).
Watch on Skillshare →Technical Evolution: Architecture Patterns
Threat Model Versioning
Your threat model is a living document — version it like code:
# threat-model/v4.2/api-service.yaml
version: "4.2"
last_reviewed: "2026-03-15"
next_review: "2026-06-15"
service: api-service
threats:
- id: T001
category: supply-chain
description: "Compromised npm dependency"
likelihood: high
impact: critical
controls:
- SBOM generation (automated)
- Dependency pinning (lockfile + digest)
- Admission control (signed images only)
status: mitigated
last_tested: "2026-03-01"
- id: T002
category: ai-specific
description: "Prompt injection via API input"
likelihood: medium
impact: high
controls:
- Input sanitisation layer
- Output filtering
- Rate limiting per tenant
status: partially-mitigated
notes: "Output filtering needs improvement — tracking in SEC-412"
- id: T003
category: zero-day
description: "Unknown vulnerability in container runtime"
likelihood: low
impact: critical
controls:
- Runtime behavioural monitoring (Falco)
- Read-only filesystem
- Microsegmentation
- Rapid node replacement capability
status: mitigated-by-design
Review threat models quarterly. New threat categories (AI-specific, quantum, regulatory) get added. Retired threats get archived. Controls get updated to reflect current implementation.
Security Architecture Decision Records
Borrow from software architecture: document every significant security decision as an Architecture Decision Record (ADR):
# ADR-2026-007: Migrate from OPA to Kyverno for admission control
## Status: Accepted
## Date: 2026-02-15
## Context
OPA/Gatekeeper requires Rego policy language, which our
platform team finds difficult to maintain. Policy update
velocity has dropped — average 3 weeks from threat
identification to policy deployment.
## Decision
Migrate to Kyverno. Policies are written in YAML, matching
our team's existing skills. Kyverno's generate and mutate
capabilities reduce the need for custom controllers.
## Consequences
- Policy deployment time: 3 weeks -> 2 days (measured)
- Team can maintain policies without Rego expertise
- Migration effort: 4 weeks for 47 policies
- Risk: Kyverno is less flexible than Rego for complex logic
ADRs create institutional memory. When a new team member asks "why do we use Kyverno instead of OPA?" the answer is documented. When the threat landscape changes and the decision needs revisiting, the original context is preserved.
Automated Security Posture Assessment
Instead of annual penetration tests that produce 200-page reports nobody reads, run continuous automated assessments:
- Weekly: Full vulnerability scan of all container images in production. SBOM freshness check. Certificate expiry audit. RBAC permission audit
- Monthly: NetworkPolicy coverage verification (are any pods running without policies?). Secret rotation compliance check. Backup restoration test
- Quarterly: Threat model review. Security architecture review against current threat intelligence. Tabletop exercise (see our simulation guide). Policy-as-code audit
- Annually: External penetration test. Red team engagement. Compliance audit preparation. Security strategy review
Organisational Evolution: People and Culture
Security Champions Network
Centralised security teams don't scale. A 5-person security team can't review every change across 20 development teams. The answer is a security champions network:
- One security champion per development team: A developer with interest in security who receives additional training and acts as the security point of contact for their team
- Monthly champions meetup: Security team shares new threats, new tools, and new policies. Champions share feedback on friction, false positives, and developer experience
- Champion-reviewed PRs: Security-sensitive changes are reviewed by the team's champion — faster than waiting for the central security team, and with better context
- Career path: Security champion experience counts toward promotion. It's a leadership role, not volunteer work
Blameless Security Culture
If developers are punished for security findings, they stop reporting them. If teams are blamed for incidents, they hide them. A security culture that evolves requires:
- Blameless post-mortems: Incidents are system failures, not personal failures. Focus on "what allowed this to happen?" not "who let this happen?"
- Reward vulnerability reporting: Internal bug bounties, public recognition, or simply saying "thank you" when someone finds a security issue before production
- Share failures openly: Publish internal post-mortem summaries (redacted as needed). When team A learns from team B's incident, the organisation evolves
Continuous Security Education
Annual security awareness training is compliance theatre. Continuous education looks different:
- Threat briefings: Monthly 15-minute briefings on new threats relevant to your stack. Not generic "don't click phishing links" — specific threats to Kubernetes, your cloud provider, your programming languages
- Capture-the-flag events: Quarterly internal CTF focused on your actual technology stack. Developers learn exploitation techniques by practising them — which makes them better at preventing them
- Security office hours: Weekly open session where developers can ask security questions without filing a ticket. Low friction, high value
Terraform for Beginners
Master Terraform to build scalable infrastructure using IaC principles.
Start on Udemy →The Regulatory Evolution
The regulatory landscape is also evolving. What's required today will expand tomorrow:
- DORA (2025): ICT risk management, incident reporting, resilience testing for financial entities
- NIS2 (2024): Expanded scope of entities, stricter incident reporting, supply chain security
- CRA (2027): SBOM mandate, vulnerability handling, product lifecycle security
- EU AI Act (2026): Risk-based AI regulation, conformity assessments, transparency requirements
- What's next: Post-quantum cryptography mandates, AI model governance, digital identity frameworks, cloud sovereignty requirements
Building security for today's regulations is necessary. Building security that can absorb tomorrow's regulations without a rewrite is wisdom.
What Open Empower Delivers
We help organisations build security engineering practices that evolve:
- Security architecture review: Assess your current posture and design for adaptability, not just today's threats
- Policy-as-code implementation: Kyverno/OPA policies in Git, versioned, tested, and continuously deployed
- Threat model development: Living threat models that evolve quarterly with structured review processes
- Security champions programme: Train and support security champions across your development teams
- Compliance-as-code: DORA/NIS2/CRA/AI Act requirements automated and continuously evaluated
- Continuous assessment: Automated security posture monitoring that replaces annual audits with continuous visibility
Security isn't a destination — it's a practice. Let's build one that evolves.
AI Readiness Assessment
Fixed-fee, 3-4 week infrastructure and compliance audit with a concrete roadmap. No big-consultancy overhead.
See Scope & Pricing →
Luca Berton
