Unencrypted RDS instance

A database with storage encryption off and backups barely configured.

28 resources · AWS::EC2::EIP · AWS::EC2::InternetGateway · AWS::EC2::NatGateway · AWS::EC2::Route · AWS::EC2::RouteTable · AWS::EC2::SecurityGroup · AWS::EC2::Subnet · AWS::EC2::SubnetRouteTableAssociation · AWS::EC2::VPC · AWS::EC2::VPCGatewayAttachment · AWS::RDS::DBInstance · AWS::RDS::DBSubnetGroup · AWS::SecretsManager::Secret · AWS::SecretsManager::SecretTargetAttachment
Your stack
Ready when you are

Press Run. The stack loaded here fails in a way worth seeing.

What the engine finds8 findings

Not examples — Unencrypted RDS instance was run through the real engine when this page was built, and this is what it returned.

2 intent checks failed· 6 informational
intent 2info 6
deletionProtection is off — a stack delete would take the data with it.INTENT
StorageEncrypted is false — set storageEncrypted: true.INTENT
6 informational findingsdeletion protection is, database on its, storage not encrypted
Deletion protection is offAwsSolutions-RDS10

The RDS instance or Aurora DB cluster does not have deletion protection enabled. Enabling Deletion Protection at the cluster level for Amazon Aurora databases or instance level for non Aurora instances helps protect from accidental deletion.

Full rule text

The RDS instance or Aurora DB cluster does not have deletion protection enabled. Enabling Deletion Protection at the cluster level for Amazon Aurora databases or instance level for non Aurora instances helps protect from accidental deletion.

Database on its default portAwsSolutions-RDS11

The RDS instance or Aurora DB cluster uses the default endpoint port. Port obfuscation (using a non default endpoint port) adds an additional layer of defense against non-targeted attacks (i.e. MySQL/Aurora port 3306, SQL Server port 1433, PostgreSQL port 5432, etc).

Full rule text

The RDS instance or Aurora DB cluster uses the default endpoint port. Port obfuscation (using a non default endpoint port) adds an additional layer of defense against non-targeted attacks (i.e. MySQL/Aurora port 3306, SQL Server port 1433, PostgreSQL port 5432, etc).

Storage not encrypted at restAwsSolutions-RDS2

The RDS instance or Aurora DB cluster does not have storage encryption enabled. Storage encryption helps protect data-at-rest by encrypting the underlying storage, automated backups, read replicas, and snapshots for the database.

Full rule text

The RDS instance or Aurora DB cluster does not have storage encryption enabled. Storage encryption helps protect data-at-rest by encrypting the underlying storage, automated backups, read replicas, and snapshots for the database.

Not deployed across availability zonesAwsSolutions-RDS3

The non-Aurora RDS DB instance does not have multi-AZ support enabled. Use multi-AZ deployment configurations for high availability and automatic failover support fully managed by AWS.

Full rule text

The non-Aurora RDS DB instance does not have multi-AZ support enabled. Use multi-AZ deployment configurations for high availability and automatic failover support fully managed by AWS.

Secret is never rotatedAwsSolutions-SMG4

The secret does not have automatic rotation scheduled. AWS Secrets Manager can be configured to automatically rotate the secret for a secured service or database.

Full rule text

The secret does not have automatic rotation scheduled. AWS Secrets Manager can be configured to automatically rotate the secret for a secured service or database.

VPC has no flow logsAwsSolutions-VPC7

With no flow logs there is no record of network traffic, so a connection you did not expect leaves no trace to find later.

new FlowLog(this, 'FlowLog', { resourceType: FlowLogResourceType.fromVpc(vpc) })
Full rule text

The VPC does not have an associated Flow Log. VPC Flow Logs capture network flow information for a VPC, subnet, or network interface and stores it in Amazon CloudWatch Logs. Flow log data can help customers troubleshoot network issues; for example, to diagnose why specific traffic is not reaching an instance, which might be a result of overly restrictive security group rules. AwsSolutions-VPC7 guide →

Presets

Or start from a stack that fails interestingly

Public S3 bucket

The single most common AI-generated CDK mistake: a bucket left open to the world.

3 rules · 2 intent checks
From Concepts · S3 · Granting public read access
Security group open to 0.0.0.0/0

SSH open to the entire internet — the classic copy-paste ingress rule.

2 rules · 1 intent check
From Concepts · EC2 · Opening the security group for HTTP
S3 static website

Website hosting straight off a bucket — no CDN, no TLS, no access logging.

3 rules · 2 intent checks
Unencrypted RDS instance

A database with storage encryption off and backups barely configured.

6 rules · 2 intent checks
Wildcard IAM policy

Action "*" on Resource "*" — the permission grant that ends incident reviews.

1 rule · 2 intent checks
Public API Gateway with no authorizer

A REST API wired to Lambda, wide open, with no access logging.

7 rules · 1 intent check
DynamoDB table without point-in-time recovery

Fast to write, impossible to restore — no PITR, no encryption choice.

1 rule · 1 intent check
CloudFront distribution allowing HTTP

A CDN that will happily serve your site unencrypted, with no logging.

6 rules · 1 intent check
Unencrypted SQS queue

A queue with no server-side encryption and no dead-letter queue.

2 rules · 2 intent checks
VPC without flow logs

Network traffic no one can reconstruct after the fact.

1 rule · 1 intent check
Cognito pool with a weak password policy

Six characters, no symbols, no MFA — defaults nobody revisited.

3 rules · 2 intent checks
Clean serverless data layerPasses

The one that passes. Encrypted, recoverable, with a dead-letter queue — what good looks like.

no findings — this is what passing looks like