Chapter 4 — Security architecture and engineering: guided lab and applied synthesis
Lesson map
Lesson 04 published. Map, example, EX039.
flowchart TD
N0["Learning outcomes"]
N1["4.1 The guided lab"]
N2["Lab — Checking loan system settings against a baseli"]
N3["4.2 Reading the results"]
N4["4.3 Prioritising actions"]
N5["4.4 Verifying the fix"]
N6["4.5 Synthesis and plan"]
N7["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Worked example"]
EX --> Q["Exercise EX039"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["4.1 The guided lab"]
N2["Lab — Checking loan system settings against a baseli"]
N3["4.2 Reading the results"]
N4["4.3 Prioritising actions"]
N5["4.4 Verifying the fix"]
N6["4.5 Synthesis and plan"]
N7["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX039"]
[Learning outcomes]
|
v
[4.1 The guided lab]
|
v
[Lab — Checking loan system settings against a baseli]
|
v
[4.2 Reading the results]
|
v
[4.3 Prioritising actions]
|
v
[4.4 Verifying the fix]
|
v
[4.5 Synthesis and plan]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX039]
Learning outcomes
You will (1) check a system's settings against a baseline in a guided lab; (2) turn results into prioritised actions; (3) synthesise the month's learning into a short plan.
4.1 The guided lab
Felix sets a guided lab using synthetic settings exported from a loan system like Saltmarsh's. The lab compares each setting with a short baseline drawn from the month's principles: multi-factor sign-in for staff, sessions that time out, no shared accounts, upload links that expire, audit logging on and administrator rights limited to two people. Leah runs the script and reads the output line by line. The lab runs offline on fictitious data, so nothing touches a real system. Felix walks the class through the first two checks.
Lab — Checking loan system settings against a baseline
# Check loan system settings against a baseline (synthetic exports before and after fixes).
rules = {"staff_mfa": lambda v: v == "on", "session_timeout_min": lambda v: v <= 30,
"shared_accounts": lambda v: v == 0, "upload_link_expiry_days": lambda v: v is not None and v <= 14,
"audit_logging": lambda v: v == "on", "admin_count": lambda v: v <= 2, "public_links": lambda v: v == "off"}
after = {"staff_mfa": "on", "session_timeout_min": 30, "shared_accounts": 0, "upload_link_expiry_days": 14,
"audit_logging": "on", "admin_count": 2, "public_links": "off"}
before = dict(after, session_timeout_min=480, admin_count=5, upload_link_expiry_days=None)
for label, cfg in (("before", before), ("after", after)):
fails = [f"{k}={cfg[k]}" for k, ok in rules.items() if not ok(cfg[k])]
print(f"{label}: {len(rules) - len(fails)}/{len(rules)} settings meet baseline; fails {fails}")
Run with python3 lab_baseline.py. Verified output:
before: 4/7 settings meet baseline; fails ['session_timeout_min=480', 'upload_link_expiry_days=None', 'admin_count=5']
after: 7/7 settings meet baseline; fails []
4.2 Reading the results
The lab reports four of seven settings meeting the baseline. Three do not: sessions stay open for eight hours instead of thirty minutes, five people hold administrator rights instead of two, and upload links never expire. Leah notes that the earlier link-sharing fix closed the public access issue but did not set expiry. Reading results carefully matters, because a pass on one setting may hide a related weakness that the baseline describes separately. She writes each gap in her notes with the setting name, the current value and the baseline value, so the vendor can act on it.
4.3 Prioritising actions
Leah ranks the three gaps. Administrator rights come first, because any of five accounts could change security settings or export all loan documents. Link expiry is second, since old links could leak if forwarded. Session timeout is third, as branch PCs already lock after five minutes. For each action she names an owner and a date and asks the vendor which changes can be made through settings. All three can, and the vendor confirms they will not disrupt loan processing.
4.4 Verifying the fix
After the changes, Leah reruns the lab with an updated export. All seven settings now meet the baseline. She keeps both outputs as evidence, dated, in the review folder. Felix stresses that verification closes the loop: a change requested is not a change made until a check confirms it. He also suggests rerunning the check every quarter, because vendor updates and staff changes can quietly undo settings over time. Leah records the date of each run and the export file used, so the evidence can be traced. She adds the quarterly check to the operations calendar with her own name as owner.
4.5 Synthesis and plan
To finish the course, Leah writes a one-page plan for Saltmarsh's next six months: individual email accounts as decided in chapter 1, a quarterly baseline check of the loan system, a tested break-glass procedure for the identity provider, an annual update of the architecture overview and vendor security questions for every new supplier. Each item links to a principle or finding from the course. Her manager approves the plan. Felix notes that the course's aim was not expertise, but a working habit of mapping, checking and recording that Leah can keep using.
Worked example
Leah runs a baseline lab on synthetic loan settings, finds three gaps, prioritises and fixes them, verifies with a rerun and writes a six-month plan.
Synthetic case. Settings, vendor and plan are synthetic.
Errors and limits
Baselines cover only listed settings. Quarterly checks lapse without an owner.
Exercises
- EX039 — Baseline items. Name three items in the lab's baseline. Rubric: 3 = multi-factor sign-in, session timeout, no shared accounts, link expiry, audit logging, two admins;; 2 = two;; 1 = vague;; 0 = none.
- EX040 — First result. How many settings met the baseline at first? Rubric: 3 = 4 of 7;; 2 = four;; 1 = vague;; 0 = none.
- EX041 — Session gap. What session setting failed? Rubric: 3 = sessions stayed open eight hours instead of thirty minutes;; 2 = eight hours;; 1 = vague;; 0 = none.
- EX042 — Admin gap. How many people held administrator rights? Rubric: 3 = five instead of two;; 2 = five;; 1 = two;; 0 = none.
- EX043 — Hidden weakness. What did the earlier link fix not cover? Rubric: 3 = link expiry;; 2 = expiry;; 1 = vague;; 0 = none.
- EX044 — Top priority. Why are administrator rights the top priority? Rubric: 3 = any of five accounts could change settings or export all documents;; 2 = broad power;; 1 = vague;; 0 = none.
- EX045 — Timeout rank. Why is session timeout ranked third? Rubric: 3 = branch PCs already lock after five minutes;; 2 = PC lock;; 1 = vague;; 0 = none.
- EX046 — Second run. How many settings passed after the changes? Rubric: 3 = 7 of 7;; 2 = all;; 1 = vague;; 0 = none.
- EX047 — Change made. When is a requested change truly made, according to Felix? Rubric: 3 = when a check confirms it;; 2 = verified;; 1 = when requested;; 0 = none.
- EX048 — Quarterly rerun. Why rerun the check each quarter? Rubric: 3 = updates and staff changes can undo settings;; 2 = drift;; 1 = vague;; 0 = none.
- EX049 — Plan items. Name two items in Leah's six-month plan. Rubric: 3 = individual email, quarterly baseline, break-glass test, overview update, supplier questions;; 2 = one;; 1 = vague;; 0 = none.
- EX050 — Course aim. What was the course's aim, according to Felix? Rubric: 3 = a working habit of mapping, checking and recording;; 2 = habit;; 1 = expertise;; 0 = none.
Synthesis
A guided baseline check, prioritised fixes, verification and a short plan turn a month of learning into lasting practice.
Continue studying — chapter 04 of 04
← Chapter 03 (draft) · Course chapter index · Worked results ↓ · Next course via chapter index →