Skip to content
Development Practice

Data Protection by Design: The Standard Features Every Compliant System Needs

16 min read

Data protection by design is an engineering discipline, not a policy document. UK GDPR Article 25 requires it, but the regulation names principles, not features. This guide translates those principles into the standard software features every compliant system needs: data classification, deny-by-default access control, field-level masking, encryption and secrets management, an immutable audit trail, consent and suppression, data-subject-rights tooling, and retention and erasure. Each is a build constraint enforced in code and tests, designed in from the first line rather than bolted on before launch. Our data protection by design service builds these controls into bespoke systems from the outset.

What does data protection by design mean in software?

Data protection by design is the requirement to build data protection into the architecture of a system, rather than adding it once the system already works. It is set out in Article 25 of the UK General Data Protection Regulation (UK GDPR) and its European Union equivalent, and the Information Commissioner’s Office (ICO) treats it as a baseline expectation for anyone building software that handles personal data.

The phrase sounds like governance, but it is really about engineering. A policy that says “we minimise data” is worthless if the schema captures every field a developer thought might be useful. A privacy notice that promises erasure is worthless if deletion is a manual database query nobody has tested. Data protection by design means the promises in your policies are backed by controls in your code.

In practice, that resolves to a defined set of features. The rest of this guide sets them out, but the underlying shift is this: personal data is a liability to be minimised and controlled, not a table to be queried freely. Every feature below exists to make that shift real in ways an auditor, an insurer, or a regulator can verify.

Why the GDPR principles are the real specification

GDPR does not hand you a feature list. It gives you seven principles in Article 5, and every compliant feature exists to satisfy one or more of them. The most useful thing an engineering team can do early is treat those principles as a specification and map each one to a concrete control.

GDPR principle (Article 5)What it demandsThe software control that delivers it
Lawfulness, fairness, transparencyA valid basis for every use of dataConsent capture, purpose tagging, clear privacy notices
Purpose limitationData used only for why it was collectedPurpose-scoped access, no silent reuse across features
Data minimisationCollect and expose only what is neededLean schemas, field-level masking, minimisation in non-production
AccuracyData kept correct and currentAuthorised editing with audit tracking, rectification tooling
Storage limitationData kept no longer than necessaryRetention rules per data class, scheduled erasure and anonymisation
Integrity and confidentialityData protected against loss and misuseEncryption at rest and in transit, deny-by-default access control
AccountabilityDemonstrable compliance, not just claimedImmutable audit trail, data classification, records of processing

The value of the mapping is that it turns an abstract legal duty into a backlog. Once you can see that storage limitation is a retention engine and accountability is an audit trail, data protection stops being a document review and becomes a set of stories a delivery team can build and test.

The standard features every compliant system needs

The features below are the working parts of data protection by design. Treat them as the default architecture for any system that holds personal data, and reach for a deeper treatment where each links out.

Data classification

Classification is the foundation the other controls stand on. You cannot minimise, mask, encrypt, or erase data consistently if the system does not know which columns are sensitive and how sensitive they are.

A workable scheme has two dimensions. A sensitivity tier, from public through internal, confidential, and restricted, records how damaging exposure would be. A set of handling overlays, such as special-category health data, children’s data, financial-instrument data, or free text, records why a field needs extra care. An asset takes the highest tier any of its fields demands.

The important move is to make the classification machine-readable rather than a spreadsheet. When each sensitive column carries its label in code and in the database, redaction, export, and erasure can be driven from the classification instead of hand-coded per query. Our data classification implementation guide covers how to build this so it cannot drift.

Access control: deny by default, scoped, and server-side

Access control is where most systems quietly fail data protection, because they hide sensitive fields in the user interface and leave them wide open to an export, an application programming interface (API) call, or an integration.

Three properties separate a compliant access layer from a cosmetic one:

  • Deny by default. The system grants access only on an explicit positive permission check. If a permission lookup errors or a role is missing, the answer is no. This is a fail-closed posture, and it is the opposite of how most software behaves.
  • Scoped to an organisational boundary. In any multi-tenant or multi-site system, a user should operate only within their own scope. A role granted at one level resolves to everything beneath it and nothing above or beside it.
  • Enforced on the server. The permission check lives in the query handler, not the front end. No client, script, or integration can reach data the role should not see, because the boundary is real rather than presentational.

A clean permission model is the product of business modules and actions, for example Finance combined with View or People combined with Export. Keeping the meaning of each permission in one catalogue, tested for parity across the API and the interface, stops the model rotting as the system grows.

Field-level masking

Access control decides whether a caller can see a record. Masking decides which fields within that record they see. A support agent may legitimately need a member’s account without needing their medical notes or bank details.

The control that matters here is masking in the service layer, driven by the classification and the caller’s permissions. A caller without the specific permission receives the sensitive field in a masked form rather than a blank one. Masking rather than blanking keeps downstream consumers honest, because an explicit mask cannot be mistaken for data that was never captured. Done well, the same classification tags that mark a field sensitive also drive its redaction, so the rule is declared once rather than reimplemented in every query.

Encryption and secrets management

Encryption is the control auditors and insurers ask about first, and the one that retrofits most easily.

  • In transit. Enforce Transport Layer Security (TLS) everywhere, and pin the minimum version so a driver or proxy cannot silently downgrade it.
  • At rest. Enable transparent database encryption and encrypted object storage as first-class infrastructure, not an afterthought. For the most sensitive free text, such as special-category notes, assess application-layer encryption so an ordinary database reader never sees cleartext.
  • Secrets. Keep credentials, keys, and provider tokens in a managed key vault, never in source control or the application database. A strong pattern is to store only a pointer to the secret in the database, with write access gated behind a naming policy and a kill switch so a leaked pointer is useless on its own.
  • Payment data. Never store card numbers. Delegate card capture to a payment provider that tokenises client-side, which keeps the system out of the riskiest scope entirely.

An immutable audit trail

Accountability is the principle you cannot fake. The system must be able to answer “who changed this, when, and why” from data rather than from memory or a developer’s query.

The design that delivers this makes the audit trail immutable by construction. Audit records are created and read but never updated or deleted, and every business record references the audit events that created and last modified it. Financial and safeguarding records go further, keeping a full event history so each state transition is preserved rather than overwritten. An immutable trail is also what makes lawful erasure possible without losing accountability, a tension covered in the data subject rights and erasure guide.

Consent is data, not an inference. A compliant system captures it explicitly and granularly, per channel and per purpose, so email marketing consent is a distinct fact from text-message consent. Consent state is itself personal data and should be classified accordingly.

Alongside consent sits suppression: a durable no-contact list that blocks outbound contact regardless of other flags. Suppression entries must survive retention purges, because a request never to be contacted has to keep being honoured after the rest of a record is gone. The rule that ties it together is that consent and suppression are the source of truth checked before any data leaves the platform for a downstream processor.

Data-subject-rights tooling

The UK GDPR gives individuals rights of access, rectification, erasure, restriction, portability, and objection. A compliant system treats these as features, not favours.

Access and portability need a permission-gated export that assembles an individual’s data in a portable format on demand. Rectification needs authorised editing with audit tracking. Objection and restriction are served by the consent and suppression mechanisms above. Each request has a statutory deadline, so the tooling has to be reliable rather than heroic. The data subject rights, retention, and erasure guide covers the engineering in depth.

Retention and erasure

Storage limitation is the principle most systems ignore, because keeping everything is the path of least resistance. A compliant system sets retention periods per data class, and enforces them automatically.

The design that works keeps retention rules as data, keyed per data class and per jurisdiction, with no silent fallback so a missing rule is a visible gap rather than an accidental “keep forever”. A scheduled job evaluates records against their rules and either anonymises or deletes them, logging every evaluation so the system can prove a rule was assessed even when nothing was purged. Distinguish three states clearly: soft deletion hides a record while keeping its history, anonymisation strips the personal data while keeping non-personal reporting residue, and erasure removes it. Legal holds must override all of this, because data under investigation cannot be purged on schedule.

Minimisation and non-production data

Minimisation applies to environments as well as schemas. Live personal data has no business sitting in a developer’s test database or a screenshot in a ticket.

The discipline is that no unobfuscated personal data exists in any non-production environment. Test data is either synthetic or obfuscated, ideally through a deterministic anonymiser that produces realistic but fake values while keeping foreign keys consistent, so systems still behave correctly. Where a pre-production environment must hold real data to validate a migration, control it to the same standard as production.

Breach detection and notification support

The UK GDPR requires notifiable breaches to reach the ICO within 72 hours. Software cannot own the legal process, but it can make it feasible.

That means monitoring and alerting that surface anomalies, database auditing that records who accessed classified data, and the classification metadata that lets you answer the regulator’s first question quickly: whose data, and how sensitive. A system that can scope the blast radius of an incident in hours rather than weeks is the difference between a manageable notification and a crisis.

The control stack, from data to demonstrable compliance

The features above are not a menu. They stack, each depending on the ones beneath it, from the moment data is captured to the point where you can demonstrate compliance to a regulator.

Why “by design” beats “bolted on”

Every control above can, in theory, be added to a system after it ships. In practice, the late-added version is weaker, more expensive, and full of gaps.

Consider classification. Add it on day one and every new sensitive column gets a label as a matter of course, enforced by a test that fails the build if a column is missed. Add it in year three and someone has to reverse-engineer the sensitivity of hundreds of columns across a schema that has already grown organically, with no guarantee they find them all. The same asymmetry applies to deny-by-default access, to erasure that has to reach data the original developers never expected to delete, and to an audit trail that has to reconstruct history it never recorded.

Designing in also changes team behaviour. When protection is a build constraint enforced by tests, the developer who adds a sensitive field fixes the classification before they can merge. When it is a review at the end, the same gap becomes a finding in an audit, discovered at the worst possible time and fixed under pressure. The economics and the risk both favour building it in.

How this maps to certifications you may already hold

If your organisation holds security certifications, you have a head start, but not a finish line.

ISO 27001 gives you an information security management system and controls for access management, cryptography, supplier management, and secure development. Those are the security foundation that data protection by design stands on. Cyber Essentials Plus covers technical baseline hygiene such as patching, boundary firewalls, and access control.

Neither proves GDPR compliance, because neither requires data minimisation, consent handling, purpose limitation, or subject rights. An organisation with ISO 27001 typically has the confidentiality and integrity controls in place and the accountability discipline to document them. The gap is the data-specific work: classifying the data, wiring subject rights, and building retention and erasure. Our approach to GDPR treats the certifications and the data controls as one programme rather than two.

Extending beyond the UK

Everything above is framed against the UK GDPR, but the same architecture extends to other regimes with less rework than teams expect. Data minimisation, access control, audit, and erasure are near-universal expectations, from the European Union GDPR to Australia’s Privacy Act, Canada’s privacy laws, and beyond.

What changes across borders is data residency, breach-notification routing, and specific consent and localisation rules. A platform built for one regime can serve many if residency is treated as topology and jurisdiction is a first-class attribute in the data model. The multi-jurisdiction data protection guide covers how to extend a UK-grade baseline across countries without forking the product.

Where to start

If you are commissioning or building a system that will hold personal data, sequence the work like this:

  1. Classify the data first. You cannot protect what you have not catalogued. Assign a tier and overlays to every field before you design the controls.
  2. Make access deny-by-default and server-side. Close the gap where the interface hides data the API exposes.
  3. Turn on encryption and move secrets to a vault. These retrofit well and answer the questions auditors ask first.
  4. Build the audit trail as immutable. It underpins both accountability and lawful erasure.
  5. Wire subject rights, retention, and consent. These are the data-specific controls that certifications do not cover.
  6. Keep non-production data synthetic or obfuscated. Live personal data belongs in production only.

Data protection by design is not a phase at the end of a project. It is the shape of the project from the beginning. If you are scoping a build that will hold personal data and want the controls designed in from the first sprint, book a consultation to talk it through.

Frequently asked questions

What does data protection by design mean in software?
Data protection by design is the UK GDPR Article 25 requirement to build data protection into a system's architecture from the outset, rather than adding it after the fact. In engineering terms it means a defined set of features: data classification, deny-by-default access control, encryption at rest and in transit, an immutable audit trail, consent and suppression handling, data-subject-rights tooling, and retention and erasure. Each is a build constraint enforced in code and tests, not a checklist reviewed at the end.
Which software features does GDPR actually require?
GDPR does not name features, it names principles: lawfulness, purpose limitation, data minimisation, accuracy, storage limitation, integrity and confidentiality, and accountability. Each principle maps to a concrete control. Minimisation maps to collecting fewer fields and masking the rest. Storage limitation maps to a retention and erasure engine. Integrity and confidentiality map to encryption and access control. Accountability maps to an immutable audit trail. Building the controls is how you satisfy the principles.
Is data protection by design a legal requirement or best practice?
Both. Article 25 of the UK GDPR makes data protection by design and by default a legal obligation for data controllers, and the Information Commissioner's Office expects it. It is also best practice, because retrofitting access control, audit, and erasure into a live system is far more expensive and error-prone than designing them in. The legal requirement and the engineering economics point the same way.
How is data protection by design different from security?
Security protects a system against attackers. Data protection by design protects individuals against misuse of their data, including misuse by authorised insiders. The two overlap heavily on controls like encryption and access management, but data protection adds obligations that pure security does not: data minimisation, consent, purpose limitation, subject-access requests, and the right to erasure. A system can be secure and still fail data protection if it collects too much, keeps it too long, or cannot honour a deletion request.
Can you add data protection to an existing system later?
You can, but it is harder and less complete than designing it in. Some controls retrofit reasonably well, such as encryption at rest, transport hardening, and audit logging. Others are structurally difficult to add late, including field-level classification, deny-by-default access scoping, and crypto-shredding erasure, because they depend on decisions made when the schema and access layer were first built. The pragmatic path is to classify the data first, then close the highest-risk gaps in priority order.
How does data protection by design relate to ISO 27001 and Cyber Essentials?
They reinforce each other. ISO 27001 provides the information security management system and controls such as access control, cryptography, and supplier management that data protection by design depends on. Cyber Essentials covers technical baseline hygiene. Neither certification proves GDPR compliance on its own, because they do not require data minimisation, consent handling, or subject rights. But an organisation with ISO 27001 has most of the security foundation in place, and the gap is usually the data-specific controls.

Ready to transform your software?

Let's talk about your project. Contact us for a free consultation and see how we can deliver a business-critical solution at startup speed.