GDPR Compliant Terraform Modules
Enforced Before terraform apply
GDPR Article 32 requires technical measures to protect personal data. These modules enforce encryption at rest and in transit, access controls, and audit logging on every AWS resource before deployment.
If your application processes personal data of EU residents, GDPR applies regardless of where your company is based. Fines reach 4% of global annual turnover. US companies with European users are in scope.
105
Controls
3
Clauses
34
AWS Modules
No credit card or AWS account needed to start.
From the team behind terraform-aws-modules. 2B+ provisions worldwide.
Three Steps to GDPR Compliant Infrastructure
For terraform-aws-modules users, migration is a one-line change. Same workflow, same interface. Bringing your own modules? We can make those compliant too. Join the beta.
Change One Line
Run Terraform Commands
Compliance Enforced
Every compliance requirement you define is enforced automatically. Nothing to scan, nothing to remediate.
Controls Enforced for GDPR
105 controls across 3 clauses and AWS services
- CloudTrail S3 buckets should not be publicly accessible
- CloudTrail trails should be enabled in all regions
- CloudTrail trails should have at least one multi-region trail present in an account
- CloudTrail multi region trails should be integrated with CloudWatch logs
- CloudTrail S3 buckets should have access logging enabled
- CloudTrail trails should have at least one enabled trail present in a region
- CloudTrail trails should have at least one trail enabled in the AWS account
- CloudTrail trails should be integrated with CloudWatch logs
- CloudTrail trails should have logs encrypted using a customer managed KMS key
- CloudTrail trails should have log file validation enabled
- Config configuration recorders should not fail to deliver logs
- AWS Config should be enabled in all regions
- IAM password policies should have minimum length set to 14 or greater
- IAM password policies should require at least one lowercase letter
- IAM password policies should require at least one number
- IAM password policies should require at least one symbol
- IAM password policies should require at least one uppercase letter
- IAM password policies should prevent password reuse
- IAM password policies should have strong configurations with minimum length of 8 or greater
- IAM password policies should have strong configurations
- IAM inline policy should not have administrative privileges
- IAM password policies should expire passwords within 90 days or less
- IAM policies should not allow full administrative privileges
- IAM policies should not allow full '*' administrative privileges
- IAM policy should not have statements with admin access
- IAM root user should have MFA enabled for console access
- IAM root user hardware MFA should be enabled
- IAM root user MFA should be enabled
- IAM root user should not have access keys
- IAM support roles should be created to manage incidents with AWS Support
- IAM user access keys should be rotated at least every 90 days
- IAM users with access keys unused for 45 days or greater should be disabled
- IAM users with console access should have MFA enabled
- IAM users with console access unused for 45 days or greater should be disabled
- IAM user MFA should be enabled
- IAM user should not have any inline or attached policies
- IAM user credentials that have not been used in 90 days should be disabled
- IAM administrator users should have MFA enabled
- KMS CMK rotation should be enabled
- CloudWatch log metric filters should be configured for S3 bucket policy changes
- CloudWatch log metric filters should be configured for CloudTrail configuration changes
- CloudWatch log metric filters should be configured for AWS Config configuration changes
- CloudWatch log metric filters should be configured for AWS Management Console authentication failures
- CloudWatch log metric filters should be configured for AWS Management Console sign-in without MFA
- CloudWatch log metric filters should be configured for disabling or scheduled deletion of customer managed keys
- CloudWatch log metric filters should be configured for IAM policy changes
- CloudWatch log metric filters should be configured for changes to Network Access Control Lists (NACL)
- CloudWatch log metric filters should be configured for changes to network gateways
- CloudWatch log metric filters should be configured for usage of root account
- CloudWatch log metric filters should be configured for route table changes
- CloudWatch log metric filters should be configured for security group changes
- CloudWatch log metric filters should be configured for unauthorized API calls
- CloudWatch log metric filters should be configured for VPC changes
- VPC flow logs should be enabled
Additional Controls
1 additional controls enforced for GDPR
GDPR Scope: What We Handle vs. What You Own
compliance.tf handles the infrastructure configuration layer for GDPR. Here is what it covers and what stays with your team.
compliance.tf Enforces for GDPR
- Encryption at rest and in transit for all supported AWS services
- Access controls and public access blocking
- Audit logging and trail validation
- IAM policies and key rotation enforcement
- Upstream module updates (terraform-aws-modules kept in sync)
- Exception management with audit trail
Your Team Still Handles for GDPR
- Data Protection Officer (DPO) appointment
- Data Protection Impact Assessments (DPIAs)
- Consent management and legal basis documentation
- Data subject requests: access, rectification, erasure (Art. 15-22)
- Breach notification to supervisory authorities (Art. 33-34)
- Data processor agreements (Art. 28)
- Privacy policies and records of processing (Art. 30 organizational)
compliance.tf handles Article 32 technical measures: encryption, access controls, audit logging. Organizational GDPR requirements like consent management, DPIAs, data subject rights, and breach notification are your team's responsibility.
Operational Rules (lifecycle blocks, tagging, instance restrictions) are also applied alongside GDPR compliance controls.
GDPR Audit Evidence — Built Into Your Workflow
Your auditor does not need to trust compliance.tf. Evidence comes from AWS-native tools they already accept.
Evidence your auditor already trusts
Every compliance.tf module enforces controls at deploy time. When AWS Config, Security Hub, or Audit Manager evaluates your resources, they report clean findings because the controls are built into the modules, not bolted on after the fact.
- AWS Config rules validate resource configuration continuously
- Security Hub aggregates findings across accounts and regions
- Audit Manager generates assessment reports mapped to GDPR
- Downloadable control mapping matrices for your auditor
Prevention vs. Detection for GDPR
compliance.tf prevents non-compliant deployments. Scanning tools detect them after the fact. Most mature programs use both.
| Dimension | IaC Scanning Checkov / Trivy / Prowler | Compliance.tf |
|---|---|---|
| Prevents non-compliant configs before terraform apply | No (post-plan scan) | Yes |
| Maps controls to framework clause IDs | Partial | Yes |
| Produces auditor-accepted evidence (AWS-native) | Scan reports only | Yes |
| Exception management with audit trail | Suppression rules | Yes |
| Same interface as terraform-aws-modules | N/A | Yes |
| Keeps pace with upstream module updates | N/A | Yes |
| Catches runtime drift / console changes | Yes | No |
| Covers non-Terraform resources | Yes | No |
| Internal engineering time | Medium | Low |
We recommend keeping scanning tools active alongside compliance.tf for defense in depth. The scanner validates what compliance.tf already enforces.
GDPR Compliance Questions
Which GDPR articles does this cover?
Does this make me GDPR compliant?
We're a US company. Do we need GDPR modules?
How is this different from Checkov, Trivy, or Prowler?
Can I adopt this gradually, or is it all-or-nothing?
Will my auditor accept this as evidence?
What if I want to switch back or compliance.tf shuts down?
Start Deploying GDPR-Compliant Infrastructure
$1,000/year for all 34 modules, all frameworks. 30-day free trial.
No credit card required. Switch back at any time.
Stay Informed About New Features
Join the mailing list for releases, new modules, and roadmap updates. No spam. Unsubscribe anytime.
Not convinced yet or dying for a feature we don't have? Send us an email — we really want to hear your feedback!