GDPR Article 30 in the Cloud: A Data Discovery Checklist for Security Teams

GDPR data discovery checklist

Article 30 of the GDPR requires controllers and processors to maintain a record of processing activities. The text is straightforward. In practice, what most organizations actually maintain is a spreadsheet last updated during an implementation project in 2018, a few rows added when GDPR questions came up during a sales due diligence, and a general feeling that the real picture is somewhere in the data team's documentation but nobody is sure exactly where.

The gap between what Article 30 asks for and what organizations actually have is fundamentally a data discovery problem. The regulation describes what you need to know about your data. It does not specify how you come to know it. Most compliance programs chose the manual approach because automated discovery did not exist in a usable form when GDPR came into force. That is no longer the situation.

What Article 30 actually requires

Article 30(1) specifies the minimum fields a controller must maintain: the name and contact details of the controller, the purposes of the processing, a description of the categories of data subjects and personal data, the categories of recipients, transfers to third countries, intended erasure timescales, and a general description of technical and organizational security measures.

Article 30(2) covers processors, requiring them to document processing carried out on behalf of each controller they serve.

The most practically difficult field is the description of categories of personal data. That field is supposed to capture what kinds of personal data you hold and where you hold it. In a cloud environment with data spread across dozens of services, answering that question accurately from memory or from documentation that predates the last infrastructure change is not realistic.

We are not saying that spreadsheet-based Article 30 records are inherently non-compliant. Supervisory authorities across EU member states have generally taken a pragmatic approach to format. The problem is accuracy and currency, not format.

Where personal data actually lives in cloud environments

A useful mental model for approaching the discovery side of Article 30: personal data in cloud environments tends to accumulate in three layers that have very different visibility.

The first layer is intentional storage: production databases, CRM systems, data warehouses. These are the systems that appear in existing documentation because someone designed them to hold personal data. Discovery here is mostly about confirming the actual field-level content matches what is documented.

The second layer is operational drift: data that was copied, exported, or replicated for a legitimate purpose and never cleaned up. Analytics staging tables holding production records. S3 prefixes that were populated for a one-time analysis. Backups that include personal data fields that were added to a schema after the backup retention policy was set. This layer is systematically underdocumented because the original actors considered it transient.

The third layer is integration and log spillage: personal data appearing in systems that were not designed to hold it. API request logs that captured full response bodies. Event streaming systems that ingested payloads richer than the consumer needed. Support tooling connected to production systems that retained customer records in their own storage.

An accurate Article 30 record needs to account for all three layers. Manual documentation typically captures the first layer reliably, partially captures the second, and almost never captures the third.

The discovery workflow that feeds Article 30

Rather than describing a checklist in the SEO-listicle sense, it is more useful to describe the workflow that produces Article 30-quality data inventory: what inputs you need, what outputs you produce, and where the hard parts are.

Step 1: Scope your cloud surface

Before scanning for personal data, you need an accurate inventory of what data stores exist. Cloud environments accumulate data stores faster than any manual asset registry keeps up with. A discovery process that starts from cloud asset APIs rather than from existing documentation is going to find things that have been running for months with no oversight.

For AWS environments, this means enumerating RDS instances, S3 buckets, DynamoDB tables, Redshift clusters, Glue data catalog entries, and any managed services that maintain their own data stores (OpenSearch domains, ElastiCache clusters with persistence enabled, SQS queues). For GCP: Cloud SQL, BigQuery datasets, Cloud Storage buckets, Firestore, and Bigtable instances. For Azure: SQL Managed Instances, Azure SQL, Blob Storage, Cosmos DB, and Data Lake Storage.

This enumeration step is the one most organizations do inadequately. The long tail of forgotten infrastructure is where the Article 30 gaps tend to be.

Step 2: Classify what is in each store

Once you have a complete surface, you need to determine which stores hold personal data and what categories. GDPR's categories of personal data include general personal identifiers (name, email, IP address, device ID) and special categories under Article 9 (health data, biometric data, genetic data, data revealing racial or ethnic origin, political opinions, religious beliefs, trade union membership, and data concerning sex life or sexual orientation).

Classification for Article 30 purposes requires field-level inspection, not just schema-level inspection. A table called user_events might or might not contain personal data depending on what the application stores in it. A column called payload of type JSONB requires content sampling to determine what it actually holds.

This is where automated classification earns its keep. Field-level inspection at cloud scale is not a manual exercise. For a moderately sized cloud environment, you are looking at thousands of tables, many containing semi-structured or unstructured data that requires sampling to evaluate.

Step 3: Map data to purposes and retention

Article 30 requires you to document the purpose of processing for each category of personal data. This is where the technical inventory and the business process documentation need to meet. The discovery output tells you what data exists and where. Mapping it to Article 30 processing purposes requires a human step: connecting the technical data asset to the business process that created it and the legal basis under which it is processed.

Retention timescales are similarly a business question that requires a technical answer. GDPR's storage limitation principle (Article 5(1)(e)) requires that personal data not be kept longer than necessary for the purpose. Knowing whether you are meeting that requires knowing when the data was created and whether it is still being actively used, which is a data-layer question.

Step 4: Document third-country transfers

Article 30 requires documentation of transfers to third countries or international organizations. In cloud environments, this is a question about where data is physically stored and processed. Cloud providers operate in multiple regions; data stored in EU regions does not automatically get replicated to non-EU regions, but backup and disaster recovery configurations can create transfers if not carefully configured.

SaaS integrations are the harder problem. When personal data flows to a SaaS application whose processing infrastructure is outside the EU, that is a third-country transfer that requires appropriate safeguards under Chapter V of GDPR. Knowing which SaaS systems hold personal data in non-EU infrastructure requires knowing which SaaS systems hold personal data at all.

Keeping the record current

Article 30 records degrade as soon as infrastructure changes. New data stores are created, existing schemas are modified, integrations are added or removed. A one-time discovery exercise produces a record that is accurate on the day of the exercise and progressively less accurate thereafter.

The practical answer is continuous discovery: a scanner that runs on a schedule (or on change events), updates the data inventory, and flags new or changed data stores for review. The human review step does not need to happen on every scan cycle. It needs to happen when the inventory changes in a material way: a new store containing personal data is found, a new category of data appears in an existing store, or data appears in a system that was not covered by existing processing documentation.

The goal is not to automate the entire Article 30 record. The purpose documentation and legal basis analysis require human judgment. The goal is to make the technical inventory accurate enough that the human judgment layer is applied to a complete picture rather than an approximation.