logo

Database

Terraform Publicly Accessible True

Description

Detects AWS RDS database instances that are configured to be publicly accessible from the internet through the 'publicly_accessible' parameter. Public database instances can be accessed directly from the internet, potentially exposing sensitive data if not properly secured with additional controls.

Detection Strategy

    • Scans Terraform configuration files for AWS RDS resources (aws_rds_cluster_instance or aws_db_instance)

    • Checks if the 'publicly_accessible' attribute is explicitly set to 'true'

    • Reports a security finding when an RDS instance is configured to allow public access

    • Applies to both standard RDS instances (aws_db_instance) and Aurora cluster instances (aws_rds_cluster_instance)

Vulnerable code example

# AWS RDS instance with public accessibility enabled (security risk)
resource "aws_db_instance" "vulnerable_db" {
  publicly_accessible = true  # VULNERABLE: Exposing database instance directly to internet
  instance_class     = "db.t3.micro"
  engine            = "mysql"
  identifier        = "mydb"
}
...

✅ Secure code example

# AWS RDS instance with public accessibility disabled (secure)
resource "aws_db_instance" "secure_db" {
  publicly_accessible = false  # SECURE: Database only accessible from within VPC
  instance_class     = "db.t3.micro"
  engine            = "mysql"
  identifier        = "mydb"
  vpc_security_group_ids = [aws_security_group.db_sg.id]  # SECURE: Restrict access using security group
}...