The GDPR in digestible bullet points for software developers, implement it seamlessly!

1. Introduction

The General Data Protection Regulation (GDPR) is a definitive and far reaching data protection law applicable to countries in the European Union. It came into effect on May 25th, 2018.

data/admin/2020/8/EU-memberstates.png

The EU member states are in blue.

1.1 Key points

As software developers, this has an important impact on the design of our applications. Given that EU itself likes to think of the GDPR as “the toughest privacy and security law in the world”, we shouldn't underestimate it's importance! [1]

I’ve decided to read through the law and break down all its key areas and articles that directly impact on our software development processes. I then offer some solutions for each one.

The document itself contains hundreds of pages’ worth of new requirements for organizations around the world.

Why on earth would I consciously choose to endure all of this?

Well, I took a module in EU law during my undergrad and am armed with a familiarity of its jargon. Furthermore, this article is also opportune as I develop many of the same considerations into the code of this blog.

Disclaimer: this is not legal advice and should not be construed as such. I am not a lawyer; I am a developer presenting the research I have done on the subject and which might just save you a lot of worry and expense. Your circumstances may be different and for that you need seek out the professionals.

2. Definitions

We will quickly address some terminological definitions that regularly appear in the articles. Most of the terminology is defined in Article 4 of the treaty, here's a rundown:

2.1 Data subject

The data subject is essentially the end user, identifiable by the personal data you are collecting directly or indirectly.

2.2 Personal data

Outlined in Article 4(1) and is defined as 'any information relating to an identified or identifiable natural person (referred to as "data subject").' [2]

The same article expands on this definition. Personal data is information that can identify an individual:

As you can see, it covers a broad scope, here are some examples of personal data where they relate to natural persons (people!):

The GDPR considers some data as particularly sensitive and requires the data subject to give informed and express consent.

2.3 Controller

The GDPR defines the controller as:

"The natural or legal person, public authority, agency or other body which, alone or jointly with others, determines the purposes and means of the processing of personal data". [Article 4:7]

In other words, it is the entity, typically the individual or department, responsible for complying with the GDPR.

2.4 Processor

The processor is the employee that processes the data on behalf of the data controller. [Article 4(8)]

The GDPR differentiates between a controller and a processor in order to recognize that not all entities involved have the same degree of accountability.

data/admin/2020/8/DataSubject_Controller_Processor.png

This is so that clear roles and responsibilities are established, and both the organisation concerned, and the authorities can determine where responsibility lies in the event of a breach.

2.5 Anonymisation vs Pseudonymization

The GDPR draws an important distinction between anonymisation and pseudonymization.

Anonymisation aims to make it irreversibly impossible to identify individuals from personal data sets.

That must make it impossible to:

Once anonymised, the data is no longer considered 'personal data' and thus not subject to the GDPR.

Pseudonymization aims to make it impossible to identify individuals without additional information.

The additional information must be kept separate and secure in order to avoid re-identification of data subjects. Contrary to anonymisation, pseudonymization is a reversible process.

This can consist of replacing identifying information such as names, addresses, etc. with aliases as well as encrypting IP address, user ID, e-mail addresses to reduce their sensitivity.

3. Key areas and their implementation

Now that we've defined some key terms, let’s get to work with the articles.

The GDPR document itself, at over 250 pages, with 99 main provisions (Articles) and 173 supplementary “recitals” is quite the mouthful.

So, I’ve extracted the articles and areas that I consider the most meaningful and cover all the important areas of 1. Consent 2. Right to be forgotten 3. Right to access and restrict data processing 4. Minimisation 5. Data portability 6. Data retention 7. Data security

Being mindful of these core principles and integrating them into your development should help to ensure compliance for most circumstances. Although, seek advice if you’re unsure. Large organizations will tend to have a department dealing with this stuff.

Note that you could handle many of these features with manual processes such as manual database queries. However, automating them is significantly better for scalability and efficiency.

Covered in:

The lowdown:

  1. Users must be able to give consent to any sort of processing and use of their personal data.
  2. This applies in the following cases:
    • Direct data collection such as from a form, online purchases, subscription, opening a bank count, or via devices or technologies that track the activity of individuals, geolocation and Wi-Fi analytics.
    • Indirect collection such as data retrieved from data brokers, trading partners, publicly available sources.
  3. Consent must be attained:
  1. Consent must be fully informed, concise and in plain language.
  2. Users have the right to easily withdraw their consent at any time.
  3. If the above is found to have been infringed, the perceived consent is no longer binding.

Implementation:

Smart kids will cheat but you’ve done your job as far as your responsibilities are concerned, parents also share a responsibility in safeguarding the privacy of their young ones.

3.2 RIGHT TO BE FORGOTTEN

Covered in:

The lowdown:

Implementation:

• Implement a method in your application which takes a userId and deletes all of that user's personal data. You may or may not want to implement this as button on your user’s admin page, but either way, ensure customers know where to make the request.

• Where records in other tables rely on a user, you may need to delete all related records via cascades or allow for nullable foreign keys. For example, setting the userId for a purchase order to null.

• If the order is used to for accounting purposes or tracking stock, etc. you implement a way to remove a past event and generate an intermediate snapshot.

• Consider how you handle backups. You may want to have a separate table of “forgotten ids” in place and each time you restore a backup, run a function to redelete the data associated with those ids.

3.3 RIGHT TO ACCESS AND RESTRICT DATA PROCESSING

Covered in:

The lowdown:

Implementation:

A good example of the implementation of right to access in the real world is Google maps which shows your location history - all the places you've recently been to.

• If a request is made, you must ensure that data is also deleted on third party APIs linked to your application such as twitter or Salesforce. [Article. 19] They usually provide a means on their APIs to delete such personal data.

• Ensure you also remove public profile pages containing personal data from your website so that they do not appear on search engines like Google. Returning a 404 HTTP status on the page tells the Google crawler to remove it from their index.

3.4 MINIMISATION

Covered in:

At a glance:

Implementation:

3.5 DATA PORTABILITY

Covered in:

At a glance:

Implementation:

3.6 DATA RETENTION

Covered in:

At a glance:

Implementation:

3.7 DATA SECURITY

Covered in:

At a glance:

Implementation:

4. Final notes

Although developers maintaining mature systems prior to the introduction of GDPR weren't as lucky, adopting good GDPR compliance for new applications proves significantly easier than shoehorning them in retroactively.

Many of the considerations presented above are generally good practice anyway, many developers and software designers have already up'd their game and incorporated privacy by design in their work in the same way they think about accessibility, performance and security.

It's not all quite as daunting as it looks, and shouldn't be, it's just a way in which we must develop.

As well being mindful of them during the design and testing stages of your app, I also suggest drawing up a sort of checklist and regularly auditing their implementation among your colleagues/dev teams.

Communicating openly and honestly on how you use data to improve user experience on your platform demonstrates that you value their data which can only have a positive impact on your credibility and organisation's trust. Especially in a world where most reputable organisations are already onboard.

Using robust and well-maintained data protection policies will improve confidence in the analytics enhancing customer experience and helping to minimise cyber-security flaws. Providing you're honest and don't spam your users with disingenuous marketing material, they'll be happy to grant you consent.

[1] https://gdpr.eu/what-is-gdpr

[2] https://gdpr-info.eu/art-4-gdpr/