openskills.info
← The sensible career map

Mostly harmless, conspicuously useful

The Hitchhiker's Guide to Becoming a Security Engineer

A security engineer designs and implements controls that reduce risk across infrastructure, applications, identities, and cloud, which is a perfectly reasonable arrangement until you remember that least privilege is a design decision and not a default, that the threat model lives in a slide and dies in production, and that defense-in-depth means several layers each of which is quietly assuming another layer works. You learn to translate "make this secure" into trust boundaries, controls, identities, secrets, and a policy that grants `*` and is therefore a career decision rather than a shortcut. The application the team was proud of ships with dependencies whose names no one has read, the cloud account ships with defaults that assume the customer has read them, and the network ships with a perimeter that protects the inside from the outside in the manner of a polite fence around a building whose windows are open. This guide travels from reading a threat model without flinching to setting organisation-wide security architecture, with practical stops at principles, modeling, identity, application, cloud, operations, and the recurring discovery that a control not enforced is a control not present. The grand objective is fewer surprises the adversary can exploit; the daily evidence is usually a reviewed design, a tested control, and a dependency whose vulnerabilities are now somebody's job rather than nobody's.

Level 1 · Novice

Read the trust boundary before declaring the diagram secure

You inspect threat models, design documents, and principle catalogs without changing systems, learning how a control that works in the slide can be quietly absent from the running thing.

You begin with read-only artifacts: threat models, architecture diagrams, design documents, the CIA triad, least-privilege definitions, and a backlog of "we should fix that" notes pre-dating everyone currently employed. Security principles are the models — confidentiality, integrity, availability, least privilege, defense-in-depth, fail secure — that turn "make it secure" into a small set of questions one can ask of any design; threat modeling is the practice of identifying trust boundaries, assets, data flows, and abuse cases so that controls are placed against actual risks rather than against a feeling. You review these with developers, operators, and an experienced engineer so that the gap between "what the diagram says" and "what the system does" becomes a named list rather than a hope.

Suppose you are handed a design diagram with a "secure" label on a service that calls a database using a shared administrator password. In a review, you trace the trust boundary around the service, note that the password is shared across three other services nobody drew, and flag the finding against least privilege: a credential known to four services is a credential whose blast radius is four services wide. You record the finding, the boundary, and the principle it violates; you change nothing. Removing the shared password yourself would be efficient in the manner of a tourist who repaints a road sign, and the resulting outage would be attributed to security with impressive enthusiasm. One annotated diagram is an observation with good posture; the fix belongs to the service owner, who has not yet been told they own the password.

Words from the spaceship manual, translated

Trust boundary
A line across which data or execution passes between parties with different levels of trust — user to service, service to database, on-premises to cloud. Controls are placed at boundaries, which is why a diagram without boundaries is a picture rather than a threat model.
Least privilege
The principle that an identity should hold only the permissions it needs, and no more. It is a design decision and not a default, which is why a fresh account arrives with more power than any sensible person would ask for.
Defense in depth
The principle of layering controls so that no single failure compromises the system. It assumes each layer works, which is why the assumption must be tested rather than asserted; several layers each assuming another layer works is a defence that adds up to zero.
Abuse case
A description of what an adversary could do with the system, as distinct from what a user should do. Threat modeling answers abuse cases; requirements documents answer use cases, and the two documents have very little to say to each other.