Compliance as code means keeping compliance requirements somewhere a machine can act on them. It tracks whether you’re meeting them as you go, instead of you piecing it together by hand across a dozen tools.

What can be done with compliance as code depends on the requirement. If the requirement comes down to a property of a running system, such as whether this bucket is public or this database has encryption at rest, it can be evaluated outright. If the requirement comes down to human activity or judgement, such as a risk assessment performed or a supplier reviewed before onboarding, no machine will ever evaluate it (or at least it shouldn’t). But automation can still alert you when the work is due, assign it to the right person, hold the evidence, and base your compliance status on whether that work got done.

Almost all the attention goes to the first: it’s what compliance automation tooling is built for, and what people usually mean by “compliance on autopilot”. It’s also the easy half. Automating the second is harder, but a lot of it is winnable, some of it quickly. This post is about which parts, and how.

Automating technical checks

The checks worth automating are the ones whose answer can change without anyone telling you. Configuration drifts as people ship, joiners and leavers move through the company, and something you verified in January is only a claim by March. Running the check continuously is how you find out in between.

Ideal candidates also often have tens if not hundreds of “things” that need to conform and ideally should be checked. Manually it would take ages, but an automation can do it at scale.

  • Configuration check for employee devices, read from the EDR or MDM agent: disk encryption on, automatic lock after inactivity, agent alive and reporting etc.
  • A standard configuration across all repositories in GitHub or GitLab: protected main branch, merges approved by someone other than the author, secret scanning switched on
  • MFA configuration check for IdP in your SSO: MFA enforced, no accounts belonging to people who have left, admin rights held by the few who need them

On the other hand, there are also things that could be possibly automated but the effort might not be worth it.

  • Guest WiFi isolated from the corporate network: one setting, in one office, on one controller.
  • The DMARC policy on your primary email domain: one DNS record, changed when you move mail providers and otherwise never.

Automating things like these definitely can save time and help you scale quality - since you’ll be able to check more frequently and won’t be limited only to a sample of a full population of devices, accounts etc.

You might disagree with some these, and that’s the point. Your program and program automations should come from your organisation’s risk levels and needs.

Automating parts of the management system

The platforms sold as compliance on autopilot ship their own library of best-practice controls and check continuously that yours hold, through integrations with your cloud, identity provider and HR systems. They cover a fair number of framework requirements, and satisfy some fully.

But no platform gets you full coverage out of the box. Every company is different, so you’ll need to fine-tune the checks that ship by default and add your own. And even then, technical checks alone won’t cover an entire information security framework.

That’s because these frameworks don’t only describe configuration: they also mandate what governance and management of the program should look like. That means making sure humans do and assess things at a certain cadence, with evidence that they did:

  • Regular risk reviews
  • Internal audit programmes
  • Review of the suitability of existing controls, and design of new ones

Making sure these happen on schedule is, in some ways, more boring than the technical checks, but it often has a bigger impact on the health of the program than the technical checks do.

For true automation, you need a system that makes sure the right humans do the right things at the right time. For example:

  • Each control is reviewed, and potentially redesigned to stay suitable for the organisation’s needs, once a quarter
  • Each control is audited once a quarter, to confirm it’s functioning as designed

That means each control needs one person responsible for managing it, with a task and reminder triggered automatically for the review and redesign. Internal audits also require segregation of duties: a different person auditing that the control is actually functioning and that the evidence produced is suitable.

At minimum, that requires three things:

  • A place to store controls and the people responsible for designing, reviewing and auditing them
  • A place to coordinate the work: tasks, schedules
  • A place to store evidence, ideally connected back to the control it proves

Once you have that, you can automate the governance side too: creating tasks in a ticketing system when something needs reviewing, and sending reminders when something’s overdue.

Control implementation status can then be automated as well, tied to the results of both automated checks and the work humans do. If anything is overdue or fails, the control gets marked as failing, and the same mechanic can alert the right people when asset, risk and vendor reviews come due.

Where Kordon fits

Kordon is built to be that place: a single source of truth where the results of all your compliance as code scripts get stored, as part of the same system of record and system of engagement for your ISMS. The programme lives there as connected objects — requirements, controls, risks, assets, vendors, business processes, findings and tasks — and every one of them is addressable over a REST API that covers everything the interface does, with an official n8n node for teams who would rather wire the workflow visually than write against the API.

That’s what your checks write into:

  • A check that passes closes its task and leaves its output as evidence on the control it was written for.
  • A check that fails opens a finding against the same control, assigned to whoever owns it.

The result lands on the object it says something about, and stays connected to it.

The human half runs on the same objects. Controls carry recurring tasks with named owners, and tasks come in three types:

  • Maintenance: the work itself
  • Review: someone has to record a verdict
  • Audit: the formal evaluation, where a Not OK moves the control to failing immediately

So does a task nobody completed by its due date.

A failing control stops counting. The risks it was mitigating go back to their unmitigated scores, and the requirements it was covering lose that coverage until the work is done and the next audit passes. Nobody sets that status; it follows from what did and didn’t happen. Kordon models ISO 27001, SOC 2, NIS2 and E-ITS, which is where the share of obligations that work this way is largest.

That’s compliance as code for the half a scanner can’t see. See how GRC engineering works in Kordon.

Common questions

Compliance as code, answered

What is compliance as code?
Compliance as code means keeping compliance requirements somewhere a machine can act on them, so you track whether you're meeting them as you go instead of piecing it together by hand. What can actually be automated depends on the requirement. A property of a running system, such as whether MFA is enforced, disk encryption is on, or a branch is protected, can be evaluated outright. Human activity or judgement, like a risk assessment performed or a supplier reviewed before onboarding, can't be evaluated by a machine, but automation can still flag when the work is due, assign it to the right person, hold the evidence, and base compliance status on whether it got done.
What is the difference between technical compliance checks and the rest of the programme?
The technical layer, checking a property of a running system like MFA enforcement in your SSO, disk encryption on employee devices, or protected branches in GitHub or GitLab, is what most compliance automation tooling is built for, and what people usually mean by 'compliance on autopilot'. It's also the easier half. The organisational obligations (risk assessments, supplier reviews, management sign-off) have no configuration to inspect, so they can't be checked the same way. The work behind them can still be scheduled, routed to an owner and evidenced automatically, even though the judgement itself stays with a person.
Is GRC as code the same as compliance as code?
Yes. The two phrases describe the same idea and get used interchangeably. The confusion in this vocabulary comes from scope rather than from the labels: people using either phrase may mean the infrastructure layer, the whole programme, or both.
Can compliance as code cover ISO 27001 or NIS2 completely?
No, not with technical checks alone: even best-practice platforms that check your cloud, identity provider and HR systems out of the box won't get you full coverage. A significant share of ISO 27001, NIS2 and E-ITS obligations describe organisational activity: risk assessments performed and reviewed, supplier due diligence completed, management review held, corrective actions closed. Those produce records about the programme rather than states of a machine. Automating them requires the programme itself to be addressable data (controls with named owners, tasks with deadlines, evidence connected to what it proves), which is a different mechanism from scanning.