ISO 27001:2022 Annex A 8.31 Separation of development, test and production environments

ISO 27001 Annex A 8.31

Mastering ISO 27001 Annex A 8.31: How to Separate Your Environments Effectively

If you have ever accidentally deleted a live database because you thought you were on the staging server, you already know why ISO 27001:2022 Annex A 8.31 exists. It is one of those controls that sounds purely technical, but it saves organisations from catastrophic operational errors and security breaches every single day.

In the world of information security, mixing your development experiments with your live business data is a recipe for disaster. Annex A 8.31, titled Separation of development, test and production environments, is a technological control designed to enforce clear boundaries between where you build software, where you test it, and where your customers actually use it.

What is Annex A 8.31?

Simply put, this control requires you to separate your processing environments. The goal is to prevent the risks of unauthorised access or changes to the production environment (the “live” system). By keeping these areas distinct, you ensure that a bug in a new feature doesn’t take down your website, and that a developer’s testing activities don’t expose sensitive customer data.

Under the ISO 27001:2022 framework, this falls within the Technological Controls category (Clause 8). It replaces and expands upon previous controls from the 2013 version (specifically Annex A.12.1.4), placing a sharper focus on the entire lifecycle of your systems.

The Three Key Environments

To comply with this standard, most organisations establish three distinct zones. While smaller setups might combine some aspects, the “gold standard” usually involves:

  • Development (Dev): The sandbox where developers write code. It’s messy, it breaks often, and it should never contain real personal data.
  • Test / Staging: A mirror of the production environment. This is where quality assurance happens. It should be as close to “live” as possible in terms of configuration, but still isolated.
  • Production (Prod): The holy grail. This is your live environment processing real-time data. Access here should be locked down tight.

Why is Separation So Important?

Imagine if a developer had full administrative access to your live banking app to “fix a quick bug”. One wrong keystroke could wipe accounts or leak financial history. Separation mitigates several critical risks:

  • Accidental Changes: preventing untested code from impacting live users.
  • Data Leakage: ensuring real personal data (PII) isn’t sitting on a developer’s laptop.
  • Fraud and Malice: limiting the ability of a single person to modify code and push it to live without oversight (this links closely to Segregation of Duties).

Practical Implementation Steps

So, how do you actually implement this? You don’t necessarily need three separate physical server rooms anymore. In the age of cloud computing, logical separation is often enough.

1. Segregate Duties and Access

Developers should generally not have write access to the production environment. If they do, there must be a very specific, authorised reason. The rule of thumb is: Developers build, testers test, and administrators deploy. For more on the organisational side of this, you might look at controls related to segregation of duties found on ISO27001.com.

2. Secure Your Data

A common pitfall is copying a live database into the test environment so that testers have “real data” to work with. Do not do this unless you mask or anonymise the data first. Annex A 8.31 works hand-in-hand with Annex A 8.33 (Test Information), which dictates that sensitive production data should not be used for testing without valid controls.

3. Lock Down the Tools

Production servers shouldn’t have compilers, code editors, or debugging tools installed on them. These tools can be used by attackers to compile malware or bypass security controls. Keep the production environment lean and clean.

4. Clear Labelling

It sounds silly, but colouring your production terminal red and your dev terminal green can save you a world of pain. Ensure that menus, command prompts, and interfaces clearly state which environment is currently active.

Common Challenges and Auditing

When an auditor comes knocking, they will look for evidence that you are not just saying you separate environments, but that you are actually doing it. They might ask to see user access lists for your cloud environments (like AWS or Azure) to verify that the dev team cannot just log into `prod` and delete a bucket.

They will also look at your Change Management process (Annex A 8.32). They want to see a paper trail (or digital trail) showing that code moved from Dev -> Test -> Prod, and that it was approved at each gate.

Summary

ISO 27001 Annex A 8.31 is about discipline. It forces organisations to treat their live environment with the respect it deserves. By strictly separating development, test, and production, you not only tick a compliance box but also build a more resilient, secure, and professional engineering culture.

For a deeper dive into the full list of controls and how they interconnect, resources like ISO27001.com can be invaluable for cross-referencing specific clauses.

ISO 27001 Document Templates
ISO 27001 Document Templates