learn-cyber-security-with-phoebe / Leader session 6 of 6
Learn Cyber Security with Phoebe · Leader session 6 of 6

The first hour, and the report

Five sessions have been about the doors: which ones exist, which control closes each, which log sees the ones that stay open. Tonight assumes a door was used anyway. Somebody at Ironwood is looking at an alert at three in the morning, and the quality of the next hour is decided almost entirely by what was written down before it. Then the calmer half: the security paragraph in the customer questionnaire, rewritten from a list of controls into three numbers that a board can compare month to month, and that would have shown the firewall-only answer for what it was.

🟠 Advanced Data and technology leaders 45 min
0-3 · Welcome 3-20 · Containment decisions and who to tell 20-40 · Build-along: the one-page plan and the three-number report 40-45 · Q&A
Part 0

Where tonight sits in the leader track

Session 1 counted nine paths to Ironwood's customers table. Session 2 put the six NIST CSF 2.0 functions over the estate and left Respond and Recover for tonight. Session 3 walked the kill chain, session 4 made the backups survive the admin login, and session 5 put a log on the paths prevention cannot close. What remains is the hour in which all of it is tested at once, and the page on which all of it is reported. Ironwood is still the estate: twelve tables, one customers table worth stealing, an ETL service key, an analyst and an admin login, an export bucket, a CI runner, and since session 4 a copy of the warehouse that the admin login cannot delete.

Live = presented in the 45 minutes Self-study = the full depth, after class 🔍 Every diagram zooms

★ What you walk out with tonight. Three containment decisions written as one sentence each, with the name of the person allowed to take them, so nobody has to argue about the ETL at 03:00. A notification order for your own estate, with the point where the technical incident becomes a legal one clearly marked. And a security report of three numbers: Ironwood's went from 9 open paths, 9 unseen and 0 recoverable tables to 1, 0 and 12, while the firewall-only answer everyone had been happy with was sitting at 7, 7 and 0.

LiveWhy the first hour is decided before it starts3 min▶

Every containment action in a data incident costs something the business wants. Revoking the suspected key stops the pipeline that feeds the morning dashboards. Cutting egress to external stages breaks the partner feed. Restoring from the immutable copy throws away a day of legitimate writes. At three in the morning, with an incomplete picture and a tired on-call, the argument for waiting always sounds reasonable, and waiting is how a contained incident becomes a breach.

The fix is not braver on-calls. It is that the decision has already been taken, in daylight, by the person whose budget it costs, and written down with their name. The on-call then executes a decision rather than making one. That single change is worth more than most tooling purchases, and it costs an afternoon.

Real world

Ironwood's alert fired at 02:40: the ETL service key authenticating from an address nobody recognised, running SELECTs against customers. The on-call engineer spent fifty minutes on a call trying to reach somebody senior enough to approve revoking the key, because revoking it would break the 06:00 load. The reads continued for the whole fifty minutes. The person they were trying to reach would have said yes in five seconds, and had never been asked to say it in advance.

Self-studyFive words for tonight3 min▶
  • Containment - stopping the attacker's current path from being used further: revoke, cut, isolate. It removes an edge from the live graph, at a cost to the business that must be paid without a meeting.
  • Respond - the NIST CSF 2.0 function covering actions taken regarding a detected incident: analysis, containment, communication, evidence. It ends when the attacker can no longer act.
  • Recover - the separate CSF function that restores assets and operations. It is only possible if a copy exists that the attacker could not reach, which is the whole argument of session 4.
  • Evidence preservation - keeping the attacker's traces intact: their objects, the query history, the login records. The postmortem is built from them, and the instinct to clean up destroys them.
  • The three numbers - open paths to the crown jewels, how many cross no log, and how many tables are recoverable if the admin login is lost. The report, in the form a board can compare across months.
Part 1 · covers containment, notification, Respond against Recover, and evidence

The first hour is decided before it starts

9 min live

The first hour has five movements: detect, contain, notify, preserve, recover. Only the first one happens to you. The other four go well or badly according to what was agreed in advance, and each has one decision that people reliably get wrong under pressure.

minute 0 minute 5 minute 15 throughout when the attacker is out Detect an alert fires, or a person notices the on-call confirms it is real the clock starts the only stage that happens to you mistake: waiting for certainty Contain three pre-agreed decisions, named: 1 revoke the key, even if ETL breaks 2 cut egress to external stages 3 restore from the immutable copy mistake: a meeting at 03:00 Notify in this order: 1 the on-call 2 the data owner 3 the security lead 4 legal and comms regulator and customer duties: the governance course owns them mistake: telling everyone at once Preserve do not delete the attacker's objects snapshot the query history and logins keep the egress log the postmortem is built from these mistake: tidying up Recover restore from the immutable copy not from the current tables rotate every key possible only because the copy survived mistake: trusting what is there Only detection happens to you. The other four go as well as what was written down before.
🔍 Click to zoom - the first hour in five movements, and the mistake each one invites.
LiveThree decisions nobody can make well at 03:004 min▶

Each of these is cheap to agree in daylight and ruinous to debate at night. Each is written as one sentence, names the role that may take it without asking, and names what it will break, so that the breakage is a known cost and not a surprise.

  • Revoke the suspected credential, even if it breaks the ETL. A key that is authenticating from an unknown place is an attacker's key until proven otherwise. The 06:00 load failing is a bad morning; the reads continuing for the fifty minutes it takes to find an approver is a breach. Ironwood's sentence: "The on-call may revoke any service key or disable any login on suspicion of misuse, and the platform lead owns the resulting outage."
  • Cut egress to external stages. A read that stays inside the warehouse is a smaller event than a copy that leaves. Disabling the paths by which data exits, external stages, shares, export buckets, contains the size of the incident while the credential question is worked out. It breaks the partner feed. That is the cost, and the data owner has already accepted it.
  • Restore from the immutable copy rather than trust the current tables. Once an attacker has held write access, every row is suspect. The clean state is the copy they could not reach, and the day of legitimate writes lost is the price of certainty. Without session 4's immutable copy this decision does not exist, because there is nothing clean to restore from.

The test of a pre-agreed decision is that it can be taken by one person, alone, at night, without a call. If the sentence contains "consult" or "escalate", it is not a decision, it is the meeting that was supposed to be avoided.

LiveWho is told, in which order, and where the hand-off is3 min▶

Notification has an order because each person on the list has a decision to make, and telling everyone at once means nobody knows whose decision is next. The order is a chain of ownership, not a chain of seniority.

OrderWhoTheir decisionWithin
1The on-callIs it real, and which of the three containment decisions appliesMinutes
2The data ownerWhich tables are in scope, whether the export and the partner feed are cut15 minutes
3The security leadWhether the incident is wider than the warehouse, and who leads the investigation30 minutes
4Legal and communicationsWhether a regulator or a customer must be told, and by whenWithin the hour

Step 4 is where the technical incident becomes a legal one. What must be reported, to whom, and within how many hours varies by jurisdiction and by the kind of data, and it is a matter of law rather than platform. Those duties are taught properly in the data-governance course under breach response. What belongs on the platform side is only this: legal and communications are on the list, they are told within the hour, and they are handed the evidence rather than a summary.

LiveRespond and Recover are two functions, and only one of them is guaranteed2 min▶

NIST CSF 2.0 keeps Respond and Recover as separate functions for a reason that shows up in the first hour. Respond is the set of actions taken about a detected incident: confirming it, containing it, communicating it, preserving what it left behind. Every organisation can Respond, well or badly, because responding only requires acting on what is in front of you.

Recover is restoring the assets and the operations. It requires something to restore from, and that thing has to have survived an attacker who held the admin login. Ironwood's ladder reports recoverable tables at 0 until immutable, restore-tested backups are on, and 12 afterwards. Before session 4, Ironwood could Respond and could not Recover, and no amount of good decision-making in the first hour changes that. The first hour is where a leader finds out whether the backup decision was made.

Real world

Ironwood's earlier incident plan had a step called "restore from backup" with no owner and no date of a last successful restore. The backup it referred to was the warehouse's own time travel, which shares an account with the thing being restored. Respond went fine. Recover was a sentence in a document.

Self-studyPreserve the evidence: the postmortem is built from what the attacker left4 min▶

The strongest instinct in the first hour is to clean up: drop the strange table, delete the unfamiliar stage, remove the user nobody recognises. Every one of those actions destroys the record of what happened, and the postmortem that decides what to fund next is built from exactly that record. Contain by revoking access to the objects; do not remove the objects.

  • Leave the attacker's objects in place. A stage they created, a table they wrote, a role they granted. Revoke every grant on them so nothing can use them, then leave them for the investigation. Their creation timestamps and owners are the timeline.
  • Snapshot the query history now. Most warehouses keep query history for a bounded window and it is not immune to housekeeping. Copy the rows for the suspect accounts, for the whole retention window, into a table the incident team owns and nobody else can write to.
  • Snapshot the login history and the egress log. Which credential, from which address, at which time, and what left. The notification decision in step 4 depends on knowing what left, and the log that says so is the one that gets rotated first.
  • Record who did what, when, during the response. Containment actions are themselves changes to the estate. A postmortem that cannot separate the attacker's changes from the responders' changes reaches the wrong conclusions.
  • Do not rotate the evidence away. Rotating every key is the right recovery action, and it must wait until the login records tied to the old keys have been copied. The order is copy, then rotate.

The postmortem's job is one question: which edge on the inventory did this path use, and why was the control that should have closed it not there. That question can only be answered from evidence that survived the first hour.

Part 2 · covers the three numbers, what to fund, the cadence, and what not to promise

The report: three numbers, not a control count

8 min live

Ironwood's questionnaire answer for three years was "customer data is protected by role-based access and a firewall". It was true, and it described an estate with seven open paths to the customers table, none of them logged, and backups that went with the admin login. The report that would have caught that has three numbers on it and no list of controls.

Before: nothing on 9 open paths 9 cross no log 0 tables recoverable the honest starting point Perimeter firewall only 7 open paths 7 cross no log 0 tables recoverable what "RBAC and a firewall" was hiding After: the whole design 1 open path, logged 0 cross no log 12 tables recoverable chosen, logged, recoverable a control list says: 1 more control a control list says: 8 controls, all green the three numbers say: one path, the support read, and it is seen A control count cannot tell the middle state from the right one. Three numbers can, every month.
🔍 Click to zoom - 9 / 9 / 0 against 1 / 0 / 12, and the 7 / 7 / 0 a control list called protected.
LiveThe three numbers, and why each one is on the page3 min▶
NumberThe question it answersIronwood beforeFirewall onlyIronwood after
Open paths to the crown jewelsHow many ways in are left971
Paths that cross no logWould we know if one were used970
Tables recoverable if the admin login is lostDoes Monday exist0 of 120 of 1212 of 12

The second and third numbers exist because two rungs of the ladder move them while the first stands still. Query logging and egress alerting leave the path count at 3 and take unseen paths from 3 to 0. Immutable backups leave the count at 3 and take recoverable tables from 0 to 12. A report with only the first number would show both controls doing nothing, and a report with only a control count would show them as one line each, indistinguishable from the firewall.

The firewall column is the reason the report matters. Seven open paths and seven unseen is a bad estate. The questionnaire answer that described it was accurate, approved, and repeated for three years, because nobody had asked for a number that could be compared to anything.

LiveWhich number is worst decides what to fund next3 min▶

The report is also the budget. Each number, when it is the worst of the three, points at a family of controls and away from the others. Spending on the wrong family is how an estate ends up with an excellent firewall and a dark warehouse.

If the worst number isFundWhat it moves on Ironwood's ladder
Open paths, highIdentity first: MFA on every human login, then service-key rotation with expiry9 to 6, then 6 to 5. The cheapest reduction on the board
Open paths, still high after identityThe storage and supply-chain doors: private export bucket, pinned and verified dependencies5 to 4, then 4 to 3
Unseen paths, any number above zeroQuery logging on the crown-jewel tables and egress alerting on external stages, and a person who reads themUnseen 3 to 0, paths unchanged
Recoverable tables, zeroImmutable, restore-tested backups, before anything else on the listRecoverable 0 to 12, paths unchanged
Open paths, a stubborn 3Least privilege on the analyst role, and the process that takes grants back3 to 1. The last one is the support read, kept and logged

Recoverable at zero jumps the queue regardless of the other two, because it is the only number that decides whether there is a business to protect after the incident. Everything else is a question of how much is lost; that one is whether anything is left.

Self-studyThe monthly cadence: three lines, one page, same day every month3 min▶

The report is worth nothing as a one-off, because the estate changes every month: a new export bucket for a new agency, a contractor's login that stayed, a key that was rotated on paper. The report is a monthly page with three parts, and its value is the diff against last month.

  • The inventory file, diffed. Which nodes and edges appeared or disappeared since last month. A new edge with a blank "closed by" cell is the finding, and it is found by a diff rather than by an audit.
  • The three numbers, with last month's beside them. Paths up by one means somebody opened a door; unseen up by one means a log was switched off or a copy of the data was made somewhere the log does not reach.
  • The date of the last successful restore, from the immutable copy, of the crown-jewel table, into a place somebody could query. If the date is more than a quarter old, recoverable is reported as unknown, not as 12, because a backup that has not been restored is a hope.
Real world

Ironwood's third monthly page showed paths at 2 rather than 1. The diff showed the new edge: a reporting tool's service account had been granted a role that read customers, for a dashboard that needed three columns of it. Nobody had done anything wrong. The report found it in one line, eleven days after it happened, instead of at the next annual review.

Self-studyWhat not to promise3 min▶
  • Never zero paths. A support agent reads customer records to do the job. That is a path, it cannot be closed without stopping the work, and a report that says zero has either stopped the work or stopped counting insiders. Promise instead that every remaining path is one the business chose to keep, and that every one of them is logged and reviewed.
  • Never "no breach is possible". Promise the three numbers, their direction of travel, and the date of the last restore. Those are things the estate can deliver every month; the other sentence is a thing no estate has ever delivered.
  • Never a control count as the answer. "Fourteen of sixteen controls in place" describes a checklist. The firewall-only estate scored well on one, at 7 open paths and 7 unseen. If a questionnaire insists on a control list, attach the three numbers underneath it.
  • Never a recovery time without a restore date. A recovery objective is a wish until a restore has been done, timed, and written down. Report the date and the duration of the last one, or report that it has not been done.
Build-along

The one-page plan and the three-number report

★ 20 min · everyone builds

One page, in plain words, for one estate. If you do not have your own numbers to hand, use Ironwood's and write your own names into the decisions. The page is finished when a stranger could act on it at three in the morning without calling you.

Write the three containment decisions as one sentence each, with the name of who may take them. Revoke the suspected credential even if it breaks the pipeline; cut egress to external stages and shares; restore from the immutable copy rather than trust the current tables. Each sentence names a role that may act alone and a person who owns the resulting outage. If a sentence needs "consult", it is not finished.

Write the notification order for your estate. The on-call, the data owner, the security lead, then legal and communications, each with a name, a second name for when the first is on holiday, and the time by which they are told. Mark step 4 as the hand-off to the breach-notification duties that the governance side owns, and write that the evidence, not a summary, goes with it.

Rewrite your questionnaire's security paragraph as three numbers, with today's values. Open paths to the crown jewels, paths that cross no log, tables recoverable if the admin login is lost. Take the values from your inventory file. If you cannot produce one of them, write "unknown"; unknown is an honest finding and a control list is not.

Write the date of the last restore. From the immutable copy, of the crown-jewel table, into somewhere a person queried it. If there is no such date, write "never", and put it at the top of the funding list ahead of everything else, because recoverable at zero outranks every other number.

Put all of it on one page. Decisions at the top, notification order beneath, the three numbers with last month's beside them, the restore date at the bottom. Store it with the inventory file, in version control, and put the same day each month in the calendar for the diff. A plan in a slide deck is a picture; a page that is diffed monthly is a control.

Read the page aloud as the on-call at 02:40. Every place you would hesitate is a sentence that needs a name or a number. Ironwood's first draft had four such places; the fifty-minute call in the story lived in one of them.

Homework

Closing the leader track

45 min
  1. Take the one page to the person whose budget each containment decision costs, and get their name on the sentence. A decision without the owner's name is a request to the on-call to make it alone.
  2. Ask legal and communications how they want to be told, and what they need in the first hour to decide on notification. Write their answer into step 4 of the order. The duties themselves are their territory; making sure they are reached is yours.
  3. Produce this month's three numbers from your inventory file, and put next month's diff in the calendar. If any number is "unknown", make finding it the first task of the month.
  4. Find the date of your last successful restore. If it is older than a quarter or does not exist, schedule one before the next report, and report recoverable as unknown until it has been done.
Check yourself

Three questions

Why is "revoke the suspected key even if it breaks the ETL" agreed in advance, with a named owner, rather than decided during the incident?

Ironwood's on-call spent fifty minutes finding somebody to approve a decision that person would have taken in five seconds. The pre-agreed sentence turns a decision into an execution.

Recover is a separate NIST CSF 2.0 function from Respond. On Ironwood's ladder, what makes Recover possible at all?

Time travel goes with the account, so an attacker holding admin deletes it on the way out. Responding well does not create something clean to restore from; only the copy the attacker could not reach does.

Ironwood's questionnaire said "role-based access and a firewall" for three years. What did the three-number report show about that state?

The firewall really did close one door, a leaked key used from outside, so 9 became 7. Phishing, the CI runner, the export bucket and both insider paths were untouched, none was logged, and the backups still went with the admin login.

Sources covered

What tonight maps to

✓ NIST CSF 2.0 - Respond and Recover functions Respond as actions regarding a detected incident, Recover as restoring assets and operations, and why the second depends on a copy the attacker could not reach.
✓ Containment decisions, notification order, evidence preservation The three pre-agreed decisions with owners, the four-step notification chain, and what to keep for the postmortem. Taught as professional norm with the reason.
✓ The three-number report and what to fund Open paths, unseen paths, recoverable tables from the attack-path bench: 9 / 9 / 0 to 1 / 0 / 12, with 7 / 7 / 0 as the firewall-only state. Monthly cadence and the restore date.
◐ Breach notification law and regulator duties Named as step 4 of the notification order and handed to the data-governance course, where breach response is taught as law and programme.
◐ Immutable, restore-tested backups Assumed from leader session 4. Here they appear as the thing that makes the third containment decision and the Recover function possible.
· Forensic attribution and offensive investigation Not covered by design. Evidence is preserved and handed on; who the attacker was and how to pursue them is another discipline.

Session 6 cheat sheet

Three decisions, pre-agreedRevoke the credential even if ETL breaks. Cut egress to external stages. Restore from the immutable copy. One sentence each, with a name.
The test of a decisionOne person, alone, at night, no call. "Consult" means it is a meeting, not a decision.
Notification orderOn-call, data owner, security lead, then legal and communications within the hour. Step 4 hands regulator and customer duties to governance.
Respond is not RecoverEveryone can Respond. Recover needs a copy the admin login could not delete: 0 of 12 without it, 12 with it.
Preserve, do not tidyLeave the attacker's objects, snapshot query and login history, copy before you rotate. The postmortem is built from it.
Three numbersOpen paths, paths crossing no log, recoverable tables. Ironwood: 9 / 9 / 0 to 1 / 0 / 12. Firewall only: 7 / 7 / 0.
Worst number sets the budgetRecoverable at zero jumps the queue. Unseen above zero buys logging and a reader. Paths buy identity first.
Never promise zeroPromise that every remaining path is chosen and logged, and give the date of the last restore. Monthly, diffed, one page.