Independent thinking. Informed defence.

CISO Times

Intelligence for the people behind the defence.

The CISO Decision Brief

How do we…

How do we test whether a security control actually works between audits?

8 decision pointsThe pack behind this answer: Security Control Assurance

Add to board memo

The short answer

Recommendation
Test the control against its written statement, check its design first, then have an independent tester take the population from the system of record, choose the sample and inspect each occurrence's records. Have someone other than the tester review the workpaper before the conclusion is final.
Reasoning
A policy or an owner's assurance says what should happen; a test shows what did. A design that could not keep the risk in check is fixed before its operation is tested, because testing it would give a false result (rule CA-01). Asking someone is never enough: every test inspects records, observes the control or re-performs it (rule CA-03). The tester takes the population and chooses the sample, because a list the owner filtered can leave out the occurrences that failed (rule CA-04).
Considerations
  • The figures are the pack's defaults: a design check at least every 12 months, review within 10 working days, and tests every 6, 12 or 24 months for Higher, Standard or Lower risk controls.
  • An owner's check on their own control is a self-check. It does not count as a test, and the control stays untested (rule CA-10).
  • A control that should have run and did not is a failed occurrence, not an empty population. Not tested applies only where nothing fell due.
  • Effective means the control ran as designed on the sample for that period. It is not an internal audit or a statement that you comply with any law or standard.

The decision, step by step

Select any step for the reasoning behind it and where the pack covers it.

  • Start
  • Step
  • Decision
  • Outcome

Keyboard: Tab to a step, arrow keys move along the flow, Enter pins its explanation, + and − zoom, 0 fits the diagram, Esc closes. The text version below has the same content.

Where a step quotes a number, it is the default in the CISO Times pack. Your own standard may set a different one.

Read as text

The same flow written out: each step, its reasoning and where the pack covers it. 22 steps.
  1. Start

    A control is due for a test between audits

    A test checks, from records the tester chooses, that a control ran as designed every time it should have, throughout a stated period. A policy or an owner's assurance says what should happen; a test shows what did. It is not an internal audit, a certification audit, a maturity assessment or a statement of compliance, though its results can feed each of them.

    In the pack

  2. Decision

    Is it written as who does what, how often, and its record?

    A control is tested against its written statement, not against what the owner says usually happens. "Access is reviewed regularly" cannot be tested. "The system owner and information security review privileged access every three months and record a decision for every account" can. The attributes the tester checks on each occurrence come from the statement.

    In the pack

  3. Decision

    Does the tester own or perform none of this control?

    No one tests a control they own or carry out, manage the people who carry it out, or wrote the procedure for. An owner's own check is useful to them, but it is a self-check: it does not count as a test, and the control stays untested in every report. If you are unsure, take the cautious branch.

    In the pack

  4. Step

    Assign a tester and a reviewer who are independent of it

    The pack suggests, in order, a colleague from another function trained on the method, a tester from a peer team, internal audit, or a contracted tester. The reviewer must be someone other than the tester. Never let a self-check stand in for the test because no one else was free.

    In the pack

  5. Step

    Set the testing period and confirm the risk rating

    The period runs from the end of the last tested period, or from when the control started, to the end of the period being tested, and is never longer than the control's test cycle. The rating, Higher, Standard or Lower, sets that cycle and the sample size. Copy the statement, owner, performer and attributes onto a new workpaper from the inventory.

    In the pack

  6. Decision

    Would the design keep the risk in check if run as written?

    Choose one recent occurrence and follow it with the performer from trigger to record, inspecting each record. Ask whether it reaches every system and person in scope, and whether its timing is tight enough. A leaver process that misses systems with local accounts fails here, however faithfully it runs. The pack's default is a design check at least every 12 months and whenever the control changes.

    In the pack

  7. Outcome

    Record a design deficiency; test operation only after the fix

    Conclude the design Deficient and record the operation as Not tested, with the reason. Testing the operation of a control that could not work wastes the test and gives a false result. Log the deficiency in your own tracker, rate it, and agree a fix with the owner. Then check the design again before the operating test.

    In the pack

  8. Decision

    Did the control run at least once in the testing period?

    A control with no occurrence in the period has nothing to sample. Find out why: "no leavers in the period" is not the same as "the review that should have happened did not". For a monthly or quarterly control, count every month or quarter in the period: one with no record is an exception, not a smaller population.

    In the pack

  9. Decision

    Should it have run in the period?

    A quarterly review whose first quarter has not ended, or a control that started after the period, had no reason to run. A review that fell due and was not held did. If you cannot tell, treat it as a control that should have run.

    In the pack

  10. Outcome

    Conclude Not tested, with the reason and the first due date

    Nothing ran, so nothing can be concluded. Record why and when the control will first run. Not tested is not a pass: it counts as untested in every report until a test is concluded, so put the test back in your plan.

    In the pack

  11. Step

    Treat the missed run as one failed occurrence

    If the control should have run and did not, that is a failure of the control, not an empty population. Test it as one occurrence that failed, and conclude Not effective.

    In the pack

  12. Step

    Take every occurrence yourself from the system of record

    The system of record is where the trigger is recorded apart from the control: the HR system's leaving dates, not the list of accounts removed; the scanner's detections, not the list of fixes. Extract it yourself or watch it run. Record the system, the report, when it ran, the filter and the count. A list the owner prepared and you cannot check is not a population.

    In the pack

  13. Decision

    Does its count agree with a second source?

    Compare the count with a source that records the same events independently, such as payroll for HR leavers. A list the owner filtered can leave out the occurrences that failed. Explain each difference and add any missing occurrence. If you cannot show the list is complete, take the cautious branch.

    In the pack

  14. Outcome

    Do not sample; take it to the assurance lead

    Do not sample from a list you cannot check. Look for another source first. If none exists, the person who runs control testing decides whether the control has a design deficiency, because it leaves no record that can be tested. A population found to be incomplete is itself an exception.

    In the pack

  15. Step

    Choose the sample yourself, spread across the period

    The size comes from the pack's default table, by population and risk rating; you may raise it but never lower it. Where the population is no larger than the sample, test every occurrence. Write down the rule for choosing before you look, such as one from each part of the period picked at random. Never take the first, the latest, or the ones the owner points to, and do not tell the owner which you chose until you ask for the records.

    In the pack

  16. Step

    Check every attribute by inspection, observation or re-performance

    Inspect the records the control left, watch it run, or do it again from the same inputs. Asking someone only explains what you saw; an answer is never the evidence. Where a record cannot be found, the attribute fails. Do not let anyone create or correct a record during the test.

    In the pack

  17. Decision

    Did any sampled occurrence fail an attribute?

    An occurrence that fails any attribute is an exception, even if another control later caught and corrected it. Write down what failed, by how much, and the reason the owner gives. The reason explains the exception; it does not remove it. This differs on purpose from a maturity assessment, which rates a whole practice with its own checks.

    In the pack

  18. Step

    Apply the exception rule before concluding

    One exception in a manual control whose population is at least twice the sample lets you add the same number again, chosen the same way; Effective only if none of them fails. Any other exception, including any in an automated control or a fully tested population, makes the control Not effective. Never drop or replace the occurrence that failed.

    In the pack

  19. Step

    Write the result in counts; an independent reviewer signs it

    The workpaper holds the population and its source, the sample, the attributes, each result, the exceptions and the proposed conclusion, written as counts and never as a share. Someone other than the tester reviews it, by default within 10 working days of the last test step. The conclusion is final only when they sign.

    In the pack

  20. Decision

    Is the signed conclusion Effective?

    A test ends Effective, Not effective or Not tested. Effective means the control ran as designed on the sample for that period. It does not mean you meet any law or standard.

    In the pack

  21. Outcome

    File it and set the next test date from the rating

    Name any exception the test recorded, and give it to the owner. File the workpaper with its evidence where the owner cannot change it. The next test is due within the control's cycle from the end of this testing period: by default 6, 12 or 24 months for Higher, Standard or Lower.

    In the pack

  22. Outcome

    Log a deficiency, rate it and tell the risk owner

    A Not effective result is a deficiency, confirmed on the day the reviewer signs. Log it in your own tracker, rate it High, Medium or Low, and tell the owner of every risk that relies on the control at once. Agree a fix with the control owner, rate the control Higher until a retest passes, and close it only on that retest.

    In the pack

Practical checklist

  1. Check that the control is written as who does what, how often, and the record it leaves.
  2. Assign a tester and a reviewer who own and perform none of it.
  3. Set the testing period and confirm the risk rating.
  4. Walk one occurrence from trigger to record to check the design.
  5. Take every occurrence from the system of record, and agree the count to a second source.
  6. Choose the sample yourself from the pack's table, spread across the period.
  7. Check each attribute by inspection, observation or re-performance, and apply the exception rule.
  8. Have the reviewer sign, then file the workpaper or log the deficiency and tell the risk owner.

Evidence to have ready

  • The workpaper: the population and its source, the second-source check, the sample and how it was chosen, each attribute's result, the exceptions and the conclusion.
  • The design walkthrough record for the occurrence followed.
  • The reviewer's signature and date, from someone other than the tester.
  • The records relied on, filed where the control owner cannot change them.

Assumptions

  • You keep an inventory of your controls with an owner for each, and the controls leave records in systems a tester can read.
  • Someone who owns and performs none of the controls in scope can test them, and someone else can review the workpapers.
  • You use your own testing method's values. The figures here are the pack's defaults, which your method may change.

Not covered here