Secure by Design – Part 7
Why Platforms Have Become the Actual Security Architecture of Modern Infrastructures In the …

In recent years, Infrastructure as Code has become one of the most crucial components of modern platform architectures. Hardly any organization today operates larger cloud or Kubernetes environments without Terraform, OpenTofu, Ansible, or similar tools. Infrastructure is described, versioned, and deployed automatically. From an operational perspective, this undoubtedly represents a significant advancement over manual processes.
At the same time, a remarkable assumption has taken hold: The mere use of Infrastructure as Code will automatically lead to reproducible and controllable systems.
This assumption is only partially correct.
Infrastructure as Code describes a desired state. Whether this state can actually be reproducibly achieved depends on a variety of other factors that are often underestimated in practice. The real challenge begins where not only the code itself is considered but also the conditions under which this code is executed.
At this point, an operational question becomes a security issue.
When looking at a Terraform repository, one often gets the impression that the infrastructure is fully described. The definitions are in the source code, changes are versioned, and every adjustment can be traced.
However, the reality of modern platforms is more complex.
Between an infrastructure definition and its actual execution, there is an additional layer that is often inadequately considered in many discussions: the runtime.
Terraform itself is continuously evolving. Providers receive new features. Dependencies change. Ansible Collections are updated. Python libraries get new versions. Kubernetes tools change their behavior between releases.
This creates a problem that many organizations only notice when the first inconsistencies arise.
Two teams can execute the same code and still get different results.
Not because the code is faulty.
But because the environment in which this code is executed is not identical.
From a platform development perspective, this is a quality issue.
From a security perspective, it is a control issue.
Security is often equated with protective mechanisms. Firewalls, access controls, encryption, or network segmentation are considered classic security measures. Less obvious is the fact that almost every security decision is based on a fundamental prerequisite:
Predictability.
An organization can only assess risks if the behavior of its systems is sufficiently known. Security policies can only be effectively enforced if the underlying infrastructure operates consistently. Compliance requirements can only be verified if it remains traceable how a particular state was achieved.
Once the same infrastructure definition can produce different results under different conditions, this predictability begins to erode.
The actual risk does not lie in individual deviations.
The risk lies in the gradual decoupling between the desired and actual state.
Many security incidents do not arise from spectacular attacks. They arise from small differences that go unnoticed over long periods.
An unupdated runtime.
A differing provider version.
A local adjustment on an administrator workstation.
An outdated Ansible Collection.
Each deviation initially seems harmless. In their sum, however, they lead to the organization losing control over its own infrastructure.
This development becomes particularly problematic where technical dependencies are no longer explicitly documented.
Many platform teams are familiar with this phenomenon.
A deployment works reliably on a specific workstation, while the same execution fails on another system. Certain Terraform plans produce unexpected changes. Ansible playbooks behave differently, even though they are executed on identical target systems.
The cause often does not lie in the visible code.
It lies in implicit assumptions about the environment.
| Visible Component | Hidden Dependency |
|---|---|
| Terraform Code | Terraform Version |
| Provider Configuration | Provider Release |
| Ansible Playbook | Python Runtime |
| Kubernetes-Manifest | kubectl Version |
| Deployment Pipeline | Container Image |
| Git Repository | Local Toolchain |
These implicit dependencies represent one of the greatest obstacles to reproducible infrastructure. As long as they exist outside the actual platform model, every execution remains dependent on factors that are difficult to control.
Interestingly, many discussions about Infrastructure as Code focus on the definition of infrastructure. The execution environment itself is often considered a technical side issue.
Yet it is a central part of the system.
In software development, this insight was accepted years ago. Modern build pipelines define not only the source code but also the complete build environment. Containerization has become prevalent precisely because it provides a reproducible runtime.
The same principle applies to infrastructure automation.
If the runtime influences the outcome, it must become part of the architecture.
Tools like Terraform, OpenTofu, Ansible, or Kubernetes clients can no longer be dependent on individual workstations. Instead, they must be operated within controlled and reproducible execution environments.
Only then does a reliable foundation for consistent automation emerge.
The importance of reproducible executions extends far beyond operational stability.
Governance ultimately relies on the ability to trace and verify decisions. However, an organization can only establish robust governance if identical inputs lead to identical results.
Otherwise, every analysis of changes becomes an interpretation.
As soon as it remains unclear which runtime was used, which dependencies were active, or which tools were actually employed, the creation process of an infrastructure state can only be approximately reconstructed.
For Compliance, this may already be problematic.
For incident response, it becomes critical.
Because reconstructing an incident requires that the underlying processes are reproducible.
A platform whose behavior is not reproducible can be operated.
However, it can only be controlled to a limited extent.
If Secure by Design is viewed solely as a collection of security mechanisms, it is easy to get the impression that security is primarily achieved through additional protective layers.
The reality is much more fundamental.
Secure by Design primarily means designing systems so that their properties remain predictable.
Reproducibility is therefore not a comfort feature of modern platforms.
It is a prerequisite for security.
Only when infrastructure can be consistently created, modified, and operated does the necessary foundation for governance, auditability, and reliable security decisions arise.
The discussion about Secure by Design inevitably leads to one realization:
Not every automated infrastructure is controllable.
And not every controllable infrastructure is reproducible.
However, only systems that are both can be operated securely in the long term.
In the next part of this series, we will therefore look at an area that is closely linked to reproducibility and yet receives surprisingly little attention in many organizations: the handling of privileged identities, secrets, and machine access rights within modern platform architectures.
Why Platforms Have Become the Actual Security Architecture of Modern Infrastructures In the …
Why Standardization is Not a Limitation but a Security Strategy Few terms are as frequently …
It’s a classic in IT operations: A critical service suddenly becomes unreachable, browsers …