Trusted Automation Execution
Trusted Automation Execution¶
The core proposition
Credentials enable access. They should not, by themselves, establish trust in the automation exercising that access.
Most privileged automation is trusted for one reason: it has the credentials.
The script lives on the automation server. The server holds a service account. The service account can reach every device in the estate. Whatever runs there runs with that authority, whether it is the version that was reviewed last month, a copy someone edited at 2am, or something that was never reviewed at all.
Protecting passwords, keys, and tokens is essential, and the secrets and credentials principle covers it. But it answers only one question: can this workload authenticate? There is another question, and it should be asked first.
The central question
Your automation has valid credentials. But should you trust the automation itself?
Answering it means being able to say:
Why should this automation artefact, requested by this identity, in this context, be permitted to exercise this capability against these resources — now?
What this is, and what it is not
This is a reference architecture and an engineering proof of concept — a Nautomation Prime design proposal. It is not a claim of NIST certification, of formal compliance with any framework, or of a finished security product.
The Problem: Authentication Standing In for Trust¶
A common automation path looks like this:
graph LR
W[Automation workload] -->|retrieves or already holds a credential| T[Privileged target]
style W fill:#fff4e6
style T fill:#ffe0e0
If holding the credential is the practical gate to execution, authentication and trust have quietly become the same thing. A valid credential proves that a principal can authenticate. It proves nothing about whether:
- the artefact running is the approved one, unmodified
- it is running in an acceptable context
- the operation it is about to perform is one it was authorised for
- the target is one it was approved to touch
- this is a time it was approved to act
Trusted Automation Execution replaces that implicit assumption with explicit trust decisions, made before privilege is exercised, by something other than the workload being constrained. The same path, with the trust decision in front of it:
graph TD
R[Execution request] --> Q1[Who requested it?]
Q1 --> Q2[What will execute?]
Q2 --> Q3[Can we trust the artefact?]
Q3 --> Q4[Is this operation authorised?]
Q4 --> Q5[Is the target in scope?]
Q5 --> G[Grant only the required authority]
G --> X[Execute]
X --> V[Validate the outcome]
V --> E[Preserve evidence]
style Q1 fill:#c8e6c9
style Q2 fill:#c8e6c9
style Q3 fill:#c8e6c9
style Q4 fill:#c8e6c9
style Q5 fill:#c8e6c9
style G fill:#ffe0e0
style X fill:#fff4e6
style V fill:#e1f5ff
style E fill:#eeeeee
The difference looks small and changes the security model considerably. The credential is no longer the thing that establishes trust. It becomes something the workload is permitted to obtain, or use, after trust and authorisation have been established.
Not a Python Problem, and Not Only a Network One¶
This architecture started with Python-based network automation, and most of the examples on these pages are network examples, because that is what this site is about. But the further the problem is followed, the less the language matters.
The same questions apply to PowerShell, Ansible, Terraform, and Bash; to CI/CD pipelines, cloud automation, containers, and scheduled jobs; to infrastructure agents; and to AI-triggered operations. Any of them can hold authority over a large part of an estate. Any of them can be modified, replaced, or pointed at something it was never meant to touch, while its credential stays perfectly valid.
Where the boundary is
The language is not the security boundary. The privileged execution is.
Trusted Automation Execution is therefore not "security for Python". It is a security model for privileged automation, whatever it happens to be written in.
Relationship to Zero Trust¶
None of the underlying principles are new. The composition is.
NIST SP 800-207 describes Zero Trust as a move away from implicit trust based on network location or asset ownership, towards a focus on users, assets, and resources, with authentication and authorisation performed before access. It is explicit that Zero Trust is an architectural approach, not a product. SP 800-207A extends the same thinking to applications and services, with policy based on application and service identities. CISA's Zero Trust Maturity Model describes the staged journey — Traditional, Initial, Advanced, Optimal — and counts Applications and Workloads among its pillars.
Trusted Automation Execution applies those principles to the one workload most estates still trust implicitly: their own automation. It does not accept that a script is trusted because it lives on an automation server, runs from a trusted subnet, or ran successfully yesterday.
The framing in one line
Treat the automation workload as a privileged subject. Require evidence before privilege, constrain what follows, and preserve evidence afterwards.
Ten Invariants¶
These are what the architecture holds constant. Every profile, from a single hardened runner to a full enterprise deployment, keeps all ten. What changes is how strongly each one is enforced.
| Invariant | Why it exists |
|---|---|
| No implicit trust | Location, filename, ownership, and previous success are not substitutes for an explicit decision |
| Default deny | Unknown or incomplete evidence must never silently become permission |
| Verify before privilege | Powerful authority should not exist before the trust decision, wherever the platform can avoid it |
| Identity is not capability | Recognising a workload is not the same as granting it every operation the platform can perform |
| Enforcement is external | The workload being constrained must not be able to authorise itself |
| Least privilege | The accepted blast radius matches the approved operation and target scope, and no more |
| Outcome is independently validated | Permission to run is not evidence that the desired state was achieved |
| Evidence survives the run | Operators and auditors must be able to reconstruct both the decision and the result |
| Trust is revocable | Approval can be withdrawn without editing every workload |
| Failures are explicit | Security and operational failures become machine-readable outcomes, never ambiguous success |
The one that does most of the work is enforcement is external. Every other invariant can be implemented weakly and strengthened later. A design in which the workload decides whether it is allowed to run has no boundary to strengthen.
The Model in Nine Sentences¶
The whole architecture reduces to an ordered sequence. The reference architecture page is organised around it, one section per sentence.
- Prove who is asking.
- Prove what will run.
- Establish where it came from.
- Decide what it may do.
- Constrain where it may do it.
- Grant only the authority required.
- Execute within defined boundaries.
- Validate the resulting state independently.
- Prove what happened.
The order is the point. Steps 1 to 5 complete before any privilege exists. Step 6 creates it. Steps 7 to 9 constrain it, check it, and record it. Most automation today starts at step 6, because the credential is already there, and treats the rest as optional.
Steps 4 and 5 are separate on purpose. What a workload may do and where it may do it are different questions, and a design that answers only one of them has a gap. A verified compliance workload is still not permitted to reload a device. An approved change workload is still not permitted to touch every device it can reach.
Between the Lines
In her 2002 Reith Lectures, and for years afterwards, Onora O’Neill argued that “more trust” is the wrong thing to want. What matters is trust placed well — given to what has shown itself trustworthy, withheld from what has not — and placing it well takes evidence, not a feeling.
Everything in this section is an attempt to place trust well in something that cannot earn it the way a colleague does. The reward is not suspicion. It is being able to stop checking — to go home knowing that what ran overnight was what you approved, and that it can prove it.
Risk, Not Size¶
The controls change with capability, risk, and maturity. The trust model does not.
Organisation size is deliberately not the axis. A small organisation operating critical infrastructure may need stronger controls than a much larger one running low-impact automation. The adoption profiles are therefore graded by risk and by the systems you already have, never by headcount.
How It Connects to the Rest of the Foundation¶
| Existing material | How it relates |
|---|---|
| Governed Automation Reference Architecture | The estate-level layers. This architecture details the hand-off between the governed service layer, security services, and orchestration for privileged runs |
| Remediation Packs | The immutable artefact for a change. Trusted Automation Execution applies the same discipline to the code that applies it |
| Automation Risk Classification | The R0–R4 classes, used here unchanged to decide what the gateway demands |
| Governed AI for Network Operations | An AI agent is one more requester, never a privileged exception |
| Automation Control Catalogue | Most components map to existing NP-* controls. The mapping shows where this architecture goes further |
In This Section¶
- The Full Reference Architecture — The target state, component by component, with the reason for each
- Threat and Failure Model — What it defends against, how it behaves when its own parts fail, and what it explicitly does not claim
- Adoption Profiles — Four profiles from Foundation to High-Assurance, the control progression between them, and a phased roadmap
- Worked Example: Azure and Cisco — Full adoption on one illustrative stack, with alternatives for every component and the gaps no product closes
- Proof of Concept v1 — Small enough to build, complete enough to prove the idea, and honest about the difference. A specification; no code is published
Sources¶
The external work this model draws on. These sources support the principles. The specific composition, the profiles, and the risk-class mapping are Nautomation Prime design proposals, not standards published by these organisations.
- NIST SP 800-207, Zero Trust Architecture
- NIST SP 800-207A, A Zero Trust Architecture Model for Access Control in Cloud-Native Applications in Multi-Cloud Environments
- CISA, Zero Trust Maturity Model, Version 2.0
- NIST CSWP 20, Planning for a Zero Trust Architecture: A Planning Guide for Federal Administrators
- SLSA, Provenance and Build: Verifying artifacts
- SPIFFE, Overview
- Microsoft, Implement a privileged access architecture
- OWASP, CI/CD Security Cheat Sheet
Continue¶
- Next: The Full Reference Architecture
- Section index: Reference Architectures
- Related: Governed Automation Reference Architecture · Automation Control Catalogue