How to Pass Every Audit - Policies & Standards
Credibility
I have directly led the response to numerous federal regulator exams (which can last three months or more) covering cloud, vulnerability management, network security, and resiliency. I have also led the response to dozens of internal audits across cloud, DLP, endpoint security, and incident response. I have managed relationships with state examiners, federal examiners, and FHFA, and have supported many additional audits and exams.
I have built programs in nearly every aspect of cybersecurity and many in technology, including incident response, endpoint security, cloud security, network security, risk management, data loss, resiliency, security architecture, and more.
Having been through this process many times, I have seen many ways to properly prepare and manage an audit, and I have seen many ways not to.
Where to Start
Every audit, whether internal, SOX, regulatory, or otherwise, begins with your defined policies and standards. A program's ability to properly define and write policies and standards is crucial to its ability to operate freely within an organization and minimize being bogged down in corporate red tape.
The response to this is often: "It doesn't matter how I write the policy or standard, there is so much red tape in my organization that I can never get to my actual job." This is a very real scenario for many cybersecurity teams. I've lived it. It is also what we signed up for by taking a job at a large corporation. Instead of acting surprised, we need to expect it. So then what?
Then come the policies and standards. Many people loathe this topic because it is not pretty and it is not fun. But if you are responsible for any aspect of a program, your success hinges on your ability to do this well.
The next pushback I often hear is: "We are required to comply with [framework or control catalog] and I have no way around it." This is also simply not true. Every framework I have ever worked with (NIST CSF, ISO27001, and others) allows for scope definition, exception processes, and documented explanation, full stop. But if a policy stops at "this program must comply with NIST 800-53," you have your back against the wall. There is no exception process, no object or scope definition, and no out-of-scope definition.
Where We Go Wrong
The first mistake is conflating standards, policies, control catalogs, and frameworks. We need to clearly distinguish between them, and especially between a control catalog and a framework. A control catalog is not designed to measure compliance. It exists to provide a menu of potential controls for potential risks.
It rarely makes sense for a program to adopt multiple frameworks to organize around, as it creates conflict and makes audit responses more painful. It is possible to be audited against a framework you have not defined as your own, but it is usually straightforward to explain why and provide appropriate answers. In our case we will use NIST CSF (my preference).
Take MFA as an example. NIST CSF does not define anything specific about MFA, but it does state that access controls should exist: Protect → Identity Management & Access Control (PR.AA).
If we simply say "all users must use MFA," we are backing ourselves into a corner again. What about IAM roles in AWS? What about service accounts? What about Kerberos, machine identities, or API keys? This is exactly where an auditor gets you. "You say all users need MFA, but I see that your service accounts don't use MFA." It can seem petty, and sometimes it is, but there is a better way to set yourself up for success. It just requires writing your policy and standard statements in a way that works for you.
If the policy states that all human users (employees, contractors, and third parties) must use MFA for access, then the standard can get more specific. We can bring in a couple of control catalogs to help, because NIST 800-63 was not designed to account for non-human identity types, and I find that CIS Controls apply well in cloud environments but not as well on-premises. For identity, we will specify that CIS Controls apply in cloud and NIST 800-63 applies on-premises.
Within each control catalog, we then select the controls that are applicable. We do not necessarily need to explain every exclusion or why we didn’t use every control in the standard itself, but we need to be able to. We will also note clearly that this standard applies specifically to human identities. Remember the control’s purpose is to move the needle from the inherent risk to the residual risk in line with a risk appetite, and that rarely requires all of the controls in a catalog.
This sets us up to answer quickly and confidently how and why we protect access for human users and just as importantly, it gives us a defensible boundary when an auditor starts asking about everything else.
Overall Design of a Policy and Standard
The simplest answer is that a policy covers the what and a standard covers the how. In your policy, keep it high level and define where it applies, who it applies to, and why it is necessary. In your standard, describe how the requirement is implemented, how it is measured, where it does not apply, and how exceptions are managed.
Summary
A large cybersecurity program will inevitably produce a large number of documents to cover all of this. But balancing detail with clarity goes a long way toward ensuring your program can operate transparently and respond to an audit with minimal disruption to day-to-day work.