Redshift Serverless workgroups should prohibit public access
A publicly accessible workgroup puts your Redshift Serverless endpoint on the internet, open to connection attempts from any IP. Even with tight security groups and strong credentials, you're still exposed to brute-force attempts, credential stuffing, and any authentication vulnerabilities that surface down the road.
Analytical workloads connect through private VPC networking, VPN, or PrivateLink. There's no legitimate reason for the endpoint to be publicly routable. Network-level isolation should be a given, not something you rely on security groups alone to enforce.
Retrofit consideration
Disabling public access on an existing workgroup triggers a brief reconfiguration. Clients using the public endpoint lose connectivity immediately, so make sure private networking is in place before flipping this setting.
Implementation
Choose the approach that matches how you manage Terraform.
Use AWS provider resources directly. See docs for the resources involved: aws_redshiftserverless_workgroup.
resource "aws_redshiftserverless_workgroup" "this" {
namespace_name = "example-namespace"
security_group_ids = ["sg-12345678"]
subnet_ids = ["subnet-12345678", "subnet-12345678", "subnet-12345678"]
workgroup_name = "pofix-abc123"
publicly_accessible = false
}
What this control checks
The control evaluates aws_redshiftserverless_workgroup and passes when publicly_accessible is set to false. It fails when the argument is true. The workgroup also needs private subnet_ids for actual network isolation, but subnet placement is outside this control's evaluation scope.
Common pitfalls
Default is safe but explicit is better
The
publicly_accessibleargument defaults tofalse, but don't rely on that. Provider defaults shift across versions, and static analysis tools often flag omitted values as ambiguous. Setpublicly_accessible = falseexplicitly in your config to document intent and prevent drift.VPC subnet selection still matters
Setting
publicly_accessible = falsestops public IP assignment, but a workgroup in a public subnet with a route to an internet gateway doesn't actually isolate the endpoint at the network layer and will raise questions during audits. Use private subnets insubnet_idsto make the private-only posture unambiguous.Confusing workgroup with namespace settings
Audit the wrong resource and you'll miss this entirely.
publiclyAccessibleis a workgroup attribute, not a namespace attribute.aws_redshiftserverless_namespacedoesn't have this field. If your compliance checks are scanning namespace resources, the control will never evaluate correctly.
Audit evidence
Config rule evaluations against redshiftserverless:GetWorkgroup should show all workgroups with publiclyAccessible: false. The Redshift Serverless console confirms this per workgroup in the Network and Security section, where 'Publicly accessible' should read 'Off'.
Security Hub findings for this control should show PASSED across all accounts and regions. CloudTrail records for CreateWorkgroup and UpdateWorkgroup API calls provide a change history confirming no workgroup was created or reconfigured with publiclyAccessible: true.
Related controls
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
redshiftserverless_workgroup_restrict_public_accessAWS Config Managed Rule:
REDSHIFT_SERVERLESS_WORKGROUP_NO_PUBLIC_ACCESSPowerpipe Control:
aws_compliance.control.redshiftserverless_workgroup_restrict_public_accessAWS Security Hub Control:
RedshiftServerless.3
Last reviewed: 2026-03-09