OpenCyber Academy
Rapid course · Lesson 3 · English
Course code: OCA-005Lesson 03: OCA-005-A003

Security governance, risk and compliance: systems, data and dependencies

Open, free learning for anyone who wants to protect people and technology. No account is required to read this text or its worked answers.

Lesson map

Lesson 03 published. Map, example, EX055.

flowchart TD
  N0["Learning outcomes"]
  N1["3.1 From services to components"]
  N2["3.2 Reading the dependency map"]
  N3["Lab — Northstar dependency map and owners"]
  N4["3.3 Data and where it goes"]
  N5["3.4 Dependencies outside the organisation"]
  N6["3.5 From map to scenarios and evidence"]
  N7["Concepts — the listing counts names, it does not gra"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Worked example"]
  EX --> Q["Exercise EX055"]

Logical drawing

flowchart LR
  N0["Learning outcomes"]
  N1["3.1 From services to components"]
  N2["3.2 Reading the dependency map"]
  N3["Lab — Northstar dependency map and owners"]
  N4["3.3 Data and where it goes"]
  N5["3.4 Dependencies outside the organisation"]
  N6["3.5 From map to scenarios and evidence"]
  N7["Concepts — the listing counts names, it does not gra"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX055"]
[Learning outcomes]
    |
    v
[3.1 From services to components]
    |
    v
[3.2 Reading the dependency map]
    |
    v
[Lab — Northstar dependency map and owners]
    |
    v
[3.3 Data and where it goes]
    |
    v
[3.4 Dependencies outside the organisation]
    |
    v
[3.5 From map to scenarios and evidence]
    |
    v
[Concepts — the listing counts names, it does not gra]
    |
    v
[Worked example] --> [Exercise EX055]

Learning outcomes

You will (1) map the systems and data behind each priority service; (2) find shared dependencies and unowned components; (3) turn the map into risk scenarios and evidence requests.

3.1 From services to components

Chapter 1 asked Northstar to name its services before choosing products. The next step is to list what each service depends on. The appointment portal needs a web host, the scheduling database, the identity provider that signs staff in and an email relay that sends confirmations. Case management needs its own database, the identity provider and file storage for documents. The volunteer roster is a shared spreadsheet that also uses the identity provider and the email relay for reminders. Writing these lists with the service owners is quick, and it often surprises them, because few people see the whole chain behind a service they use every day.

3.2 Reading the dependency map

The lab turns the lists into a small map. The identity provider supports all three services, so a failure or compromise there would affect everything at once. The email relay supports two services but has no owner. The roster spreadsheet also has no owner. Every other component has one. These two facts change Chapter 1's priorities. A restore test of the scheduling database is still valuable, but if staff cannot sign in, a perfect restore will not reopen the portal. The map therefore adds the identity provider to the restore exercise scope and adds ownership of the email relay and roster to the operations director's decision list.

Lab — Northstar dependency map and owners

"""Northstar dependency map: which services each component supports, and unowned components."""
deps = {"appointment portal": ["web host", "scheduling database", "identity provider", "email relay"],
        "case management": ["case database", "identity provider", "file storage"],
        "volunteer roster": ["roster spreadsheet", "identity provider", "email relay"]}
owners = {"web host": "IT", "scheduling database": "IT", "identity provider": "IT", "case database": "Casework",
          "file storage": "IT", "email relay": None, "roster spreadsheet": None}
use = {}
for s, cs in deps.items():
    for c in cs: use.setdefault(c, []).append(s)
for c, ss in sorted(use.items(), key=lambda x: -len(x[1])):
    print(f"{c}: supports {len(ss)} service(s); owner {owners[c] or 'NONE'}")
print("shared by all three:", [c for c, ss in use.items() if len(ss) == 3])

Run with python3 lab_deps.py. Verified output:

identity provider: supports 3 service(s); owner IT
email relay: supports 2 service(s); owner NONE
web host: supports 1 service(s); owner IT
scheduling database: supports 1 service(s); owner IT
case database: supports 1 service(s); owner Casework
file storage: supports 1 service(s); owner IT
roster spreadsheet: supports 1 service(s); owner NONE
shared by all three: ['identity provider']

3.3 Data and where it goes

Systems hold data, and data create obligations. Northstar's scheduling database holds client names, contact details and appointment reasons, some of which may reveal health or financial hardship. Case management holds detailed case notes. The roster holds volunteers' contact details. For each, the team records what data exist, why they are kept, who can see them, where copies go and how long they are retained. They find that appointment confirmations sent through the email relay include the appointment reason, which is more than clients need in an email. Reducing that content is a cheap change that lowers privacy risk without affecting the service.

3.4 Dependencies outside the organisation

Several components are run by suppliers: the web host, the identity provider and the email relay. Northstar cannot inspect their internals, but it can ask what assurance they offer, read their terms on outages and data handling and check whether it can export its data if it needs to leave. NIST CSF 2.0 places supply chain risk management within its Govern function, which matches Northstar's situation: the board does not need technical detail, but it does need to know which services depend on suppliers and whether anyone has checked them. The team records each supplier, the service it supports, the evidence available and the date it was last reviewed.

3.5 From map to scenarios and evidence

The map produces sharper scenarios in the Chapter 1 format. If the identity provider is unavailable, staff cannot reach any service, and Northstar has not tested a fallback sign-in. If the unowned email relay is misconfigured, appointment confirmations could reach the wrong people, and nobody reviews its settings. If the roster spreadsheet is shared too widely, volunteer contact details may be exposed, and access has never been reviewed. Each scenario names an evidence request: the identity provider's status history and fallback options, the relay's configuration, and the roster's sharing list. Evidence requests keep the strategy honest, because they show which beliefs have been checked and which are still assumptions.

Worked example

Northstar lists components behind three services, finds the identity provider shared by all three and two unowned components, trims appointment reasons from emails and writes three evidence-backed scenarios.

Synthetic case. All Northstar systems, suppliers and data are fictional; NIST CSF 2.0 and the NIST Privacy Framework are real.

Errors and limits

Maps omit informal tools staff use. Supplier assurance varies in scope. A shared component may have hidden redundancy the map does not show.

Concepts — the listing counts names, it does not grant a key

The laboratory program builds a dictionary of supporters. Each component collects the services that name it. Sorting uses the negative of that collection's length, so the widest support prints first. An empty owner field prints a marker rather than a blank cell. The closing line keeps a component only when its collection holds every service. None of those steps reads the signed scope, so a printed row is not a key.

Lesson table; scroll horizontally to read all columns →

Printed fact What produces it Decision it supports Decision it must not be swapped with
Identity provider, support count 3, owner IT The collection length equals 3 Add it to the restore exercise, because staff who cannot sign in still cannot reopen the portal The missing-owner decision
Email relay, support count 2, owner NONE An empty owner prints NONE Put ownership on the operations director's decision list. Do not reconfigure the relay The fact that one component supports all three services
Roster spreadsheet, support count 1, owner NONE The same empty-owner print The same decision list. Do not reconfigure the spreadsheet A reason to edit the relay before an owner exists
Case database, support count 1, owner Casework The row is present in the listing Keep the row so the shared identity dependency stays visible Permission to open or investigate that database

The first signed scope still excludes case management until next quarter. Keeping the row does not move that exclusion.

Decision flow — three questions, three different rows

flowchart TD
  A["A row from the dependency listing"] --> B{"Which question is being asked?"}
  B -->|Who supports every service| C["Collection length equals 3"]
  C --> D["The identity provider joins the restore exercise"]
  B -->|Who has no owner| E["The printed owner is NONE"]
  E --> F["Email relay and roster go to the director's list"]
  F --> G["Do not reconfigure either one yet"]
  B -->|May this row be opened| H{"Is the component inside the first signed scope?"}
  H -->|Case database, no| I["Keep the row. Do not open the database"]
  H -->|Portal chain, yes| J["The row is still not permission"]

Worked example — the case-database row is not a key

The engineer sees the case database in the verified listing and reaches for an export. The row is present so the identity provider's support of every service stays visible, including a service outside the first scope. She leaves that database closed. No suspicious account was found, so there is nothing new to report to its owner; the row alone is not an incident. Separately, the marker NONE on the email relay and on the roster spreadsheet is the missing-owner fact. Both names go to the operations director's decision list. She does not reconfigure the relay and she does not edit the spreadsheet. The identity provider's support of all three services is why that component joins the restore exercise, and she does not trade that reason for the NONE lines.

Synthetic case. No suspicious case-management account appears here. The row is only the printed listing, and the listing's order is the verified sort.

Apply

Exercises

Synthesis

A dependency map turns named services into shared components, owners, data obligations, supplier checks and evidence-backed scenarios.

Continue studying — lesson 03 (chapter 03 of 20)

← Chapter 02 · Course chapter index · Chapter 04 →

Continue to the next authored lesson.

Worked answers

EX021. The web host, the scheduling database, the identity provider and the email relay.

EX022. The identity provider.

EX023. The email relay and the roster spreadsheet.

EX024. Because if staff cannot sign in, restoring the database alone will not reopen the portal.

EX025. Assigning owners for the email relay and the roster spreadsheet.

EX026. Because it may reveal health problems or financial hardship.

EX027. Removing the appointment reason from confirmation emails.

EX028. What data exist, why they are kept, who can see them, where copies go and how long they are kept.

EX029. What assurance they offer, their terms on outages and data handling, and whether data can be exported.

EX030. Within the Govern function.

EX031. The supplier, the service it supports, the evidence available and the date last reviewed.

EX032. Northstar has not tested a fallback sign-in if the identity provider is unavailable.

EX033. Appointment confirmations could reach the wrong people.

EX034. The roster spreadsheet's current sharing list.

EX035. They show which beliefs have been checked and which remain assumptions.

EX055. Keep the row so the identity provider's support of all three services stays visible. Do not open or investigate the case database. The first scope excludes case management.

EX056. Owner NONE on the email relay, and on the roster spreadsheet, is the missing-owner fact and goes on the operations director's decision list. The identity provider's support of all three services is why it joins the restore exercise. The engineer does not reconfigure the relay.