Check ID:
Provider: AWS
Service:
Severity: CRITICAL
Categories:
Resource type:
kafka_cluster_is_publicProvider: AWS
Service:
kafkaSeverity: CRITICAL
Categories:
internet-exposedResource type:
AwsMskClusterWhat this check verifies
Amazon MSK clusters with broker endpoints exposed to the public Internet. Serverless clusters are private by default; provisioned clusters are evaluated for theirpublic access configuration.
Risk
Public brokers erode CIA:- Confidentiality: unauthorized consumers can read topics
- Integrity: rogue producers inject or alter events
- Availability: floods or scans strain brokers
Recommendation
Keep brokers private within the VPC by disabling public access and limiting exposure to trusted networks. Enforce strong auth (SASL/IAM, SASL/SCRAM, or mTLS), require TLS, and apply Kafka ACLs. Provide access via VPN, bastion, or private networking (peering/Transit Gateway). Apply least privilege and monitor broker connections.Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/msk/latest/developerguide/public-access.html
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/aws/MSK/public-access-msk-cluster.html
- https://docs.aws.amazon.com/msk/latest/developerguide/client-access.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = kafka_cluster_is_public. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks