Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

When embracing the Security by design approach you must embrace at least the following principles:

If you think a principle is not applicable for your situation: Think again. Or better write down your motivation and ask for an expert review on your motivation.

Cheat sheet

PrincipleSummaryKey Rule
Minimise attack surface areaRemove unnecessary features, endpoints, entry points.Less code → fewer holes.
Establish secure defaultsDefault configs must be secure out-of-the-box.Deny by default.
Least privilegeEvery component/user gets minimum privileges to function.Keep once, not twice.
Separation of dutiesNo single actor has excessive authority.Split critical functions across multiple actors.
Defence in depthLayer independent security controls.One failure ≠ system compromise.
Fail securelyOn failure, default to closed (deny) state.Never fail open.
Complete mediationEvery access request must be checked.No cached decisions.
Economy of mechanismKeep security-critical designs simple and small.complexity = NOT secure.
Open designNo security by obscurity.Assume attackers have your docs/code.
Zero TrustNever implicitly trust internal/external services.Verify everything.
CompartmentalisationIsolate components.Breach in one ≠ breach of all.
Protect data everywhereEncrypt data at rest, in transit, and in-use.Even during processing.
Design for secure updatesSystems must safely apply patches.Update ability is a security feature.

Learn more

These Security by Design principles represent distilled wisdom and long-standing experience from the field. You must always apply them when shaping an architecture or making design decisions.