<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yanik Peiffer</title>
    <description>The latest articles on DEV Community by Yanik Peiffer (@yanikpei).</description>
    <link>https://dev.to/yanikpei</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F97374%2F2da1ac51-d3fb-41eb-9a4e-2ce103f9baff.JPG</url>
      <title>DEV Community: Yanik Peiffer</title>
      <link>https://dev.to/yanikpei</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yanikpei"/>
    <language>en</language>
    <item>
      <title>GDPR for Developers: What You Actually Need to Know</title>
      <dc:creator>Yanik Peiffer</dc:creator>
      <pubDate>Thu, 05 Feb 2026 10:36:28 +0000</pubDate>
      <link>https://dev.to/yanikpei/gdpr-for-developers-what-you-actually-need-to-know-45l1</link>
      <guid>https://dev.to/yanikpei/gdpr-for-developers-what-you-actually-need-to-know-45l1</guid>
      <description>&lt;h1&gt;
  
  
  GDPR for Developers: What You Actually Need to Know
&lt;/h1&gt;

&lt;p&gt;Nobody gets into software engineering because they're excited about data regulations. GDPR is one of those topics that most of us want to hand off to the legal team and never think about again. And for the most part, that's fine. You don't need to become a privacy lawyer.&lt;/p&gt;

&lt;p&gt;But if you're building systems that touch personal data, and you almost certainly are, there are parts of GDPR that land squarely on your desk. Not as legal questions, but as engineering requirements. The regulation doesn't just say "protect user data" in some vague sense. It defines specific things your system must be able to &lt;em&gt;do&lt;/em&gt;, and those things have real architectural implications.&lt;/p&gt;

&lt;p&gt;This post is my attempt to break down the parts of GDPR that actually matter to us as developers. No legalese, no compliance checklists, just the stuff you need to know to build systems that won't get your company into trouble.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Post Covers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What counts as personal data (it's broader than you think)&lt;/li&gt;
&lt;li&gt;The core principles that should shape how you handle data&lt;/li&gt;
&lt;li&gt;The rights users can exercise against your system&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Is Personal Data?
&lt;/h2&gt;

&lt;p&gt;GDPR defines personal data as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Any information relating to an identified or identifiable natural person, where identifiable means someone who can be identified directly or indirectly by reference to identifiers like a name, identification number, location data, or an online identifier."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The key phrase here is &lt;strong&gt;directly or indirectly&lt;/strong&gt;. The definition is intentionally broad, and it catches more than most developers expect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The obvious stuff:&lt;/strong&gt; names, email addresses, phone numbers, physical addresses, dates of birth. No surprises there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The less obvious stuff:&lt;/strong&gt; IP addresses, server access logs, cookie identifiers, session IDs, device fingerprints, user-agent strings. If you can trace it back to a specific person, even by combining it with other data, it's personal data. Your nginx logs? Personal data. Your analytics events with user IDs? Personal data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The important nuance:&lt;/strong&gt; pseudonymized data is still personal data. Hashing an email address or replacing a name with a UUID doesn't get you off the hook if the mapping between the pseudonym and the real identity exists somewhere in your system. Only fully &lt;strong&gt;anonymized&lt;/strong&gt; data, where it's genuinely impossible to re-identify the person, falls outside GDPR's scope.&lt;/p&gt;

&lt;p&gt;This matters because it affects decisions you make every day: what you log, what you store in your databases, what you pass between services, and what you send to third-party analytics tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  GDPR Concerns for Developers
&lt;/h2&gt;

&lt;p&gt;GDPR is a rabbit hole nobody wants to enter. The full regulation is dense, and most of it deals with organizational and legal obligations that aren't your problem as a developer. But there are two categories that absolutely are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How you handle data&lt;/strong&gt;, a set of principles that should shape your architecture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What users can demand&lt;/strong&gt;, a set of rights that translate directly into system capabilities&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's go through both.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 7 Principles of Data Handling
&lt;/h2&gt;

&lt;p&gt;Think of these as design constraints. They're defined in Article 5 of the GDPR, and every one of them has implications for how you build your systems.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Lawfulness, Fairness &amp;amp; Transparency
&lt;/h3&gt;

&lt;p&gt;Any data processing must be legal and fair, and the information about what you're doing with user data must be easily accessible and written in plain language.&lt;/p&gt;

&lt;p&gt;For you as a developer, this means: build clear consent flows, surface honest privacy notices, and don't do any hidden data collection. If your app is silently sending data to a third-party service that the user doesn't know about, that's a problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Purpose Limitation
&lt;/h3&gt;

&lt;p&gt;Data should only be collected for specified, explicit, and legitimate purposes. You can't repurpose it for something the user didn't agree to.&lt;/p&gt;

&lt;p&gt;A classic violation: collecting an email address for login, then silently feeding it into a marketing pipeline. If the user signed up to use your app, that's not consent to receive your newsletter.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Data Minimisation
&lt;/h3&gt;

&lt;p&gt;Processing must be adequate, relevant, and limited to what is necessary. Don't collect more than you need.&lt;/p&gt;

&lt;p&gt;Don't ask for a date of birth if all you need is an age verification boolean. Don't log full HTTP request bodies if you only need status codes for monitoring. Every additional piece of personal data you collect is a liability in terms of storage, security, and compliance.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Accuracy
&lt;/h3&gt;

&lt;p&gt;Personal data must be kept up to date, and inaccurate data should be corrected promptly.&lt;/p&gt;

&lt;p&gt;This means your system needs mechanisms for users to update their own data. Think profile update endpoints, data validation on input, and workflows for handling correction requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Storage Limitation
&lt;/h3&gt;

&lt;p&gt;Data should only be stored for as long as it's necessary for the purpose it was collected for. Once it's no longer needed, it should be deleted.&lt;/p&gt;

&lt;p&gt;This is where things get interesting in distributed architectures. You need TTLs on your data, retention policies, and automated deletion jobs. But when a user's data lives across ten different microservices, each with its own database, cache layer, and possibly a separate event store, coordinating that cleanup is a real engineering challenge.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Integrity &amp;amp; Confidentiality
&lt;/h3&gt;

&lt;p&gt;Personal data must be processed securely, with protection against unauthorized access, accidental loss, and damage.&lt;/p&gt;

&lt;p&gt;The practical checklist: encryption at rest and in transit, proper access controls, audit logging, and regular security assessments. Nothing new here, but GDPR makes it a legal requirement, not just a best practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Accountability
&lt;/h3&gt;

&lt;p&gt;You must be responsible for, and able to &lt;em&gt;demonstrate&lt;/em&gt;, compliance with all of the above.&lt;/p&gt;

&lt;p&gt;Good intentions aren't enough. You need audit trails, processing records, and documentation that proves your system handles data correctly. If a regulator comes knocking, "we think we're compliant" doesn't cut it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rights That Users Can Exercise
&lt;/h2&gt;

&lt;p&gt;This is where GDPR gets very concrete for developers. Users have a set of rights they can actively exercise against your system, and each one translates into a capability your software must support.&lt;/p&gt;

&lt;p&gt;Here's the short version:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access:&lt;/strong&gt; &lt;em&gt;"Show me what you have on me."&lt;/em&gt;&lt;br&gt;
Your system must be able to locate and export all personal data you hold on a given user, across all services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rectification:&lt;/strong&gt; &lt;em&gt;"Fix my data."&lt;/em&gt;&lt;br&gt;
Users can request corrections to inaccurate data, and those corrections need to propagate everywhere the data lives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Erasure:&lt;/strong&gt; &lt;em&gt;"Delete everything about me."&lt;/em&gt;&lt;br&gt;
The right to be forgotten. Every service, every cache, every search index, every backup, all of it needs to be covered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portability:&lt;/strong&gt; &lt;em&gt;"Give me my data so I can take it elsewhere."&lt;/em&gt;&lt;br&gt;
You need to provide the user's data in a structured, machine-readable format, typically JSON or CSV.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Restriction:&lt;/strong&gt; &lt;em&gt;"Stop processing my data, but don't delete it."&lt;/em&gt;&lt;br&gt;
Your system needs a way to freeze data in place without actively using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Objection:&lt;/strong&gt; &lt;em&gt;"I don't want you using my data for this purpose."&lt;/em&gt;&lt;br&gt;
Users can opt out of specific processing activities, like marketing or profiling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Automated Decisions:&lt;/strong&gt; &lt;em&gt;"Don't let an algorithm decide things about me."&lt;/em&gt;&lt;br&gt;
If your system makes automated decisions that significantly affect users (credit scoring, automated rejections, etc.), you need a human-review fallback.&lt;/p&gt;

&lt;p&gt;The bottom line: users can ask you to &lt;strong&gt;find&lt;/strong&gt;, &lt;strong&gt;fix&lt;/strong&gt;, &lt;strong&gt;freeze&lt;/strong&gt;, &lt;strong&gt;export&lt;/strong&gt;, or &lt;strong&gt;delete&lt;/strong&gt; their data at any time, and &lt;strong&gt;you have 30 days to comply&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>gdpr</category>
      <category>regulations</category>
    </item>
    <item>
      <title>Best Practices for AWS IAM: Strengthening Your Security</title>
      <dc:creator>Yanik Peiffer</dc:creator>
      <pubDate>Thu, 05 Oct 2023 13:17:54 +0000</pubDate>
      <link>https://dev.to/yanikpei/best-practices-for-aws-iam-strengthening-your-security-1cjl</link>
      <guid>https://dev.to/yanikpei/best-practices-for-aws-iam-strengthening-your-security-1cjl</guid>
      <description>&lt;p&gt;Amazon Web Services (AWS) Identity and Access Management (IAM) is the cornerstone of security when it comes to managing access to AWS resources. And everyone that has worked with AWS knows, how powerful and sometimes complicated IAM can be. At least I had some trouble when I began diving into the AWS universe. &lt;/p&gt;

&lt;p&gt;To make your AWS account, but also your infrastructure, secure, there are many best practices out there that we can, and probably should, implement. From my experience, the following ten practices are crucial when using AWS as a production environment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What security best practices do you always make sure to follow?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. Safeguard Your AWS Root User Access Keys
&lt;/h3&gt;

&lt;p&gt;This should be your first action after setting up your AWS account. You never want someone to have access to your AWS account as a root user. There are horror stories out there, where people had to pay immense AWS bills because their root account got hijacked. And no one wants to be that person who needs to ask AWS to regain access (if that's even possible). &lt;/p&gt;

&lt;p&gt;To avoid your root access being stolen, give it a very secure password, store it in a vault, and just never use it to access AWS. You can create yourself as an IAM user with the required permissions for your daily operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Enable Multi-Factor Authentication (MFA)
&lt;/h3&gt;

&lt;p&gt;The second action you want to do after setting up your AWS account is to enable multi-factor authentication. In a perfect world, every IAM user should have MFA enabled. But for sure your root access user needs to have it. With MFA you can add a layer of security by requiring users to provide a second authentication factor, such as a time-based one-time password (TOTP) generated by a phone. It is not even bound to a specific app, you can use e.g. &lt;a href="https://support.google.com/accounts/answer/1066447?hl=de&amp;amp;co=GENIE.Platform%3DAndroid" rel="noopener noreferrer"&gt;Google Authenticator&lt;/a&gt; or &lt;a href="https://www.microsoft.com/de-de/security/mobile-authenticator-app" rel="noopener noreferrer"&gt;Microsoft Authenticator&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Use Roles for Delegating Permissions
&lt;/h3&gt;

&lt;p&gt;IAM roles are a powerful feature in IAM that allows you to grant permissions to entities like AWS services, users, or resources without the need to share long-term access keys. Roles work by defining a set of permissions, which are specified in an IAM policy, and then allowing trusted entities to assume the role. Once, a service or a user makes use of the role, AWS creates temporary credentials. You can use roles throughout your whole AWS infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Follow the Principle of Least Privilege
&lt;/h3&gt;

&lt;p&gt;The principle of least privilege means, that by default, a user or a role does not have any permission at all. Depending on the needs, you grant atomic permission required to perform only necessary tasks. Every additional, not necessary permission, can create a security vulnerability. &lt;/p&gt;

&lt;p&gt;Sounds good in theory, right? Especially when starting with AWS, it is quite difficult and time-consuming to only apply the least privilege to users. There are many situations where I'm stuck debugging because some roles do not have the correct permissions. But anyway, this practice is crucial when setting up a production environment. We can start with giving wider permissions, but at some point, we need to take our time and focus on securing all roles down to the least privileges.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Begin with AWS Managed Policies
&lt;/h3&gt;

&lt;p&gt;A good starting point when digging into IAM and policies is to use the default policies that AWS offers. There are many and for every scenario, you can find a matching policy. In many cases though, the default policies give a user/role too many permissions. Always consider modifying the policy and remove all unnecessary permissions.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Implement a Strong Password Policy
&lt;/h3&gt;

&lt;p&gt;Strong passwords should be used by any user who wants to work with AWS. Make sure to force everyone to have a strong password by defining robust password policies for your IAM users. IAM gives you various options to configure: require complex passwords, regular password changes, and lockouts after too many failed login attempts. &lt;/p&gt;

&lt;h3&gt;
  
  
  7. Utilize Roles for Applications on EC2 Instances
&lt;/h3&gt;

&lt;p&gt;When you want to connect applications that run on an EC2 instance to other resources such as databases or S3 storage, you can make use of roles. As an alternative to storing credentials within your EC2 instance, roles simplify the whole access to those resources. AWS automatically creates temporary credentials when your EC2 instance makes use of a provided role. On top of simplicity, you make your setup more secure.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Avoid Sharing Access Keys
&lt;/h3&gt;

&lt;p&gt;I cannot think of any scenario where it is really necessary to share access keys. We always want to make sure that we know who is using our infrastructure. Make sure to create independent access keys for every user who needs to interact with AWS. This might be more effort setting up all users, but in the end, it is easier to reject access to single parties if you have to.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Remove Unnecessary Access Permissions
&lt;/h3&gt;

&lt;p&gt;I created a recurring reminder to check our AWS permissions every three months. Most of the time there is no need to modify anything, but this way I make sure that we always use policies with the least privileges and only authorized users have access to our AWS account.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Monitor and Audit AWS Activities
&lt;/h3&gt;

&lt;p&gt;Services like AWS CloudTrail allow you to track actions across your AWS account, focusing on security compliance and threat detection. It helps you maintain security compliance by tracking and recording all API calls and actions performed within your AWS account. Monitoring activities allows you to detect suspicious or unauthorized actions. You can set up alerts and triggers to notify you when specific events occur, such as failed login attempts, changes to security groups, or access to sensitive data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, implementing these AWS IAM best practices is not just about ticking off items on a security checklist, it's about building a robust, and secure foundation for your AWS environment. In my opinion, there are more exciting topics within the AWS world, but mastering IAM is one of the most important ones. We should always focus on improving the security of our infrastructures. And of course, it let's us sleep better at night, knowing we won't wake up to a data breach. 😉&lt;/p&gt;

</description>
      <category>aws</category>
      <category>iam</category>
      <category>guide</category>
      <category>security</category>
    </item>
  </channel>
</rss>
