tf-eu-guard — Compliance Audit Report

NIS2 (Directive 2022/2555, Art. 21) & GDPR (Reg. 2016/679, Art. 32 & 44)

Target: examples/vulnerable-awsGenerated: 2026-08-30 16:53 UTC
Scope & limitations. This report lists only Checkov control failures that map to a NIS2 or GDPR article. It is an evidence aid for an auditor, not a certification. An article not listed here was not exercised by a failing check — that is not evidence of compliance.

Executive summary

This scan surfaced 52 compliance findings across 5 file(s). Each finding is a Checkov control failure mapped to one or more NIS2 / GDPR articles. The table below counts, per framework, the distinct articles with at least one open finding and the total findings citing that framework.

FrameworkArticles with open findingsTotal findings
NIS2545
GDPR432

NIS2 controls

NIS2 Art. 21(2)(b) — Incident handling↑ top

OPEN — 9 finding(s)

SeverityResourceLocationFailed control
MEDIUMaws_vpc.main/network.tf:2-11CKV2_AWS_11
Ensure VPC flow logging is enabled in all VPCs
MEDIUMaws_db_instance.main/rds.tf:2-30CKV2_AWS_30
Ensure Postgres RDS as aws_db_instance has Query Logging enabled
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_118
Ensure that enhanced monitoring is enabled for Amazon RDS instances
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_129
Ensure that respective logs of Amazon Relational Database Service (Amazon RDS) are enabled
LOWaws_db_instance.main/rds.tf:2-30CKV_AWS_353
Ensure that RDS instances have performance insights enabled
LOWaws_s3_bucket.data/s3.tf:2-9CKV2_AWS_62
Ensure S3 buckets should have event notifications enabled
LOWaws_s3_bucket.logs/s3.tf:22-28CKV2_AWS_62
Ensure S3 buckets should have event notifications enabled
MEDIUMaws_s3_bucket.data/s3.tf:2-9CKV_AWS_18
Ensure the S3 bucket has access logging enabled
MEDIUMaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_18
Ensure the S3 bucket has access logging enabled

NIS2 Art. 21(2)(c) — Business continuity, backup management and disaster recovery↑ top

OPEN — 10 finding(s)

SeverityResourceLocationFailed control
LOWaws_db_instance.main/rds.tf:2-30CKV2_AWS_60
Ensure RDS instance with copy tags to snapshots is enabled
HIGHaws_db_instance.main/rds.tf:2-30CKV_AWS_133
Ensure that RDS instances has backup policy
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_157
Ensure that RDS instances have Multi-AZ enabled
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_293
Ensure that AWS database instances have deletion protection enabled
LOWaws_s3_bucket.data/s3.tf:2-9CKV2_AWS_61
Ensure that an S3 bucket has a lifecycle configuration
LOWaws_s3_bucket.logs/s3.tf:22-28CKV2_AWS_61
Ensure that an S3 bucket has a lifecycle configuration
MEDIUMaws_s3_bucket.data/s3.tf:2-9CKV_AWS_144
Ensure that S3 bucket has cross-region replication enabled
MEDIUMaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_144
Ensure that S3 bucket has cross-region replication enabled
MEDIUMaws_s3_bucket.data/s3.tf:2-9CKV_AWS_21
Ensure all data stored in the S3 bucket have versioning enabled
MEDIUMaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_21
Ensure all data stored in the S3 bucket have versioning enabled

NIS2 Art. 21(2)(e) — Security in network and information systems acquisition, development and maintenance↑ top

OPEN — 2 finding(s)

SeverityResourceLocationFailed control
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_226
Ensure DB instance gets all minor upgrades automatically
CRITICALaws_db_instance.main/rds.tf:2-30EUGUARD_NIS2_001
Ensure secrets are not hardcoded in Terraform (use variables/Secrets Manager)

NIS2 Art. 21(2)(h) — Policies and procedures on the use of cryptography and encryption↑ top

OPEN — 3 finding(s)

SeverityResourceLocationFailed control
HIGHaws_db_instance.main/rds.tf:2-30CKV_AWS_16
Ensure all data stored in the RDS is securely encrypted at rest
HIGHaws_s3_bucket.data/s3.tf:2-9CKV_AWS_145
Ensure that S3 buckets are encrypted with KMS by default
HIGHaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_145
Ensure that S3 buckets are encrypted with KMS by default

NIS2 Art. 21(2)(i) — Human resources security, access control policies and asset management↑ top

OPEN — 21 finding(s)

SeverityResourceLocationFailed control
HIGHaws_iam_user.app_user/iam.tf:2-8CKV_AWS_273
Ensure access is controlled through SSO and not AWS IAM defined users
CRITICALaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_287
Ensure IAM policies does not allow credentials exposure
CRITICALaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_288
Ensure IAM policies does not allow data exfiltration
CRITICALaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_289
Ensure IAM policies does not allow permissions management / resource exposure without constraints
CRITICALaws_iam_role_policy.app_role_policy/iam.tf:53-67CKV_AWS_289
Ensure IAM policies does not allow permissions management / resource exposure without constraints
HIGHaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_290
Ensure IAM policies does not allow write access without constraints
HIGHaws_iam_role_policy.app_role_policy/iam.tf:53-67CKV_AWS_290
Ensure IAM policies does not allow write access without constraints
HIGHaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_355
Ensure no IAM policies documents allow "*" as a statement's resource for restrictable actions
HIGHaws_iam_role_policy.app_role_policy/iam.tf:53-67CKV_AWS_355
Ensure no IAM policies documents allow "*" as a statement's resource for restrictable actions
MEDIUMaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_40
Ensure IAM policies are attached only to groups or roles (Reducing access management complexity may in-turn reduce opportunity for a principal to inadvertently receive or retain excessive privileges.)
MEDIUMaws_vpc.main/network.tf:2-11CKV2_AWS_12
Ensure the default security group of every VPC restricts all traffic
LOWaws_security_group.web/network.tf:61-93CKV2_AWS_5
Ensure that Security Groups are attached to another resource
MEDIUMaws_subnet.public_a/network.tf:14-24CKV_AWS_130
Ensure VPC subnets do not assign public IP by default
MEDIUMaws_subnet.public_b/network.tf:26-36CKV_AWS_130
Ensure VPC subnets do not assign public IP by default
LOWaws_security_group.rds/network.tf:96-119CKV_AWS_23
Ensure every security group and rule has a description
HIGHaws_security_group.web/network.tf:61-93CKV_AWS_24
Ensure no security groups allow ingress from 0.0.0.0:0 to port 22
MEDIUMaws_security_group.web/network.tf:61-93CKV_AWS_260
Ensure no security groups allow ingress from 0.0.0.0:0 to port 80
MEDIUMaws_security_group.web/network.tf:61-93CKV_AWS_382
Ensure no security groups allow egress from 0.0.0.0:0 to port -1
MEDIUMaws_security_group.rds/network.tf:96-119CKV_AWS_382
Ensure no security groups allow egress from 0.0.0.0:0 to port -1
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_161
Ensure RDS database has IAM authentication enabled
CRITICALaws_db_instance.main/rds.tf:2-30CKV_AWS_17
Ensure all data stored in RDS is not publicly accessible

GDPR controls

GDPR Art. 32(1)(a) — Pseudonymisation and encryption of personal data↑ top

OPEN — 3 finding(s)

SeverityResourceLocationFailed control
HIGHaws_db_instance.main/rds.tf:2-30CKV_AWS_16
Ensure all data stored in the RDS is securely encrypted at rest
HIGHaws_s3_bucket.data/s3.tf:2-9CKV_AWS_145
Ensure that S3 buckets are encrypted with KMS by default
HIGHaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_145
Ensure that S3 buckets are encrypted with KMS by default

GDPR Art. 32(1)(b) — Confidentiality, integrity, availability and resilience of processing systems↑ top

OPEN — 21 finding(s)

SeverityResourceLocationFailed control
CRITICALaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_287
Ensure IAM policies does not allow credentials exposure
CRITICALaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_288
Ensure IAM policies does not allow data exfiltration
CRITICALaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_289
Ensure IAM policies does not allow permissions management / resource exposure without constraints
CRITICALaws_iam_role_policy.app_role_policy/iam.tf:53-67CKV_AWS_289
Ensure IAM policies does not allow permissions management / resource exposure without constraints
HIGHaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_290
Ensure IAM policies does not allow write access without constraints
HIGHaws_iam_role_policy.app_role_policy/iam.tf:53-67CKV_AWS_290
Ensure IAM policies does not allow write access without constraints
HIGHaws_iam_user_policy.app_user_policy/iam.tf:11-29CKV_AWS_355
Ensure no IAM policies documents allow "*" as a statement's resource for restrictable actions
HIGHaws_iam_role_policy.app_role_policy/iam.tf:53-67CKV_AWS_355
Ensure no IAM policies documents allow "*" as a statement's resource for restrictable actions
MEDIUMaws_subnet.public_a/network.tf:14-24CKV_AWS_130
Ensure VPC subnets do not assign public IP by default
MEDIUMaws_subnet.public_b/network.tf:26-36CKV_AWS_130
Ensure VPC subnets do not assign public IP by default
HIGHaws_security_group.web/network.tf:61-93CKV_AWS_24
Ensure no security groups allow ingress from 0.0.0.0:0 to port 22
MEDIUMaws_db_instance.main/rds.tf:2-30CKV2_AWS_30
Ensure Postgres RDS as aws_db_instance has Query Logging enabled
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_161
Ensure RDS database has IAM authentication enabled
CRITICALaws_db_instance.main/rds.tf:2-30CKV_AWS_17
Ensure all data stored in RDS is not publicly accessible
CRITICALaws_db_instance.main/rds.tf:2-30EUGUARD_NIS2_001
Ensure secrets are not hardcoded in Terraform (use variables/Secrets Manager)
HIGHaws_s3_bucket.data/s3.tf:2-9CKV2_AWS_6
Ensure that S3 bucket has a Public Access block
HIGHaws_s3_bucket.logs/s3.tf:22-28CKV2_AWS_6
Ensure that S3 bucket has a Public Access block
HIGHaws_s3_bucket_public_access_block.data/s3.tf:12-19CKV_AWS_53
Ensure S3 bucket has block public ACLS enabled
HIGHaws_s3_bucket_public_access_block.data/s3.tf:12-19CKV_AWS_54
Ensure S3 bucket has block public policy enabled
HIGHaws_s3_bucket_public_access_block.data/s3.tf:12-19CKV_AWS_55
Ensure S3 bucket has ignore public ACLs enabled
HIGHaws_s3_bucket_public_access_block.data/s3.tf:12-19CKV_AWS_56
Ensure S3 bucket has 'restrict_public_buckets' enabled

GDPR Art. 32(1)(c) — Ability to restore availability and access to personal data in a timely manner↑ top

OPEN — 7 finding(s)

SeverityResourceLocationFailed control
HIGHaws_db_instance.main/rds.tf:2-30CKV_AWS_133
Ensure that RDS instances has backup policy
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_157
Ensure that RDS instances have Multi-AZ enabled
MEDIUMaws_db_instance.main/rds.tf:2-30CKV_AWS_293
Ensure that AWS database instances have deletion protection enabled
MEDIUMaws_s3_bucket.data/s3.tf:2-9CKV_AWS_144
Ensure that S3 bucket has cross-region replication enabled
MEDIUMaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_144
Ensure that S3 bucket has cross-region replication enabled
MEDIUMaws_s3_bucket.data/s3.tf:2-9CKV_AWS_21
Ensure all data stored in the S3 bucket have versioning enabled
MEDIUMaws_s3_bucket.logs/s3.tf:22-28CKV_AWS_21
Ensure all data stored in the S3 bucket have versioning enabled

GDPR Art. 44 — General principle for transfers of personal data to third countries↑ top

OPEN — 1 finding(s)

SeverityResourceLocationFailed control
HIGHaws.default/main.tf:11-13EUGUARD_GDPR_001
Ensure the AWS provider region is in the EU (GDPR data residency, Art. 44-49)