AWS Security Hub · EMR
EMR.1: An EMR primary node has a public IP
Written and reviewed by Emnode · Last reviewed
What does AWS Security Hub EMR.1 check?
EMR.1 checks whether an EMR cluster's primary (master) node has a public IPv4 address on its network interface. It reads the `PublicIp` field, evaluates only clusters in `RUNNING` or `WAITING` state on a periodic schedule, and reports FAILED the moment a public address is present. It's backed by the `emr-master-no-public-ip` Config rule.
Why does EMR.1 matter?
A public IP turns the cluster's control plane into an internet-reachable target. The primary node exposes the YARN/Spark management UIs and SSH, and it typically holds broad IAM permissions over sensitive data in S3, HDFS, and Hive metastores. With a routable address, any misconfigured security group or inbound rule becomes direct exposure. The cruel part: you can't disassociate a public IP from a running primary node — the only fix is to relaunch.
How do I fix EMR.1?
- Relaunch the offending cluster into a private subnet.
- Fix the subnet's auto-assign-public-IP attribute that caused it.
- Turn on EMR block public access at the account level.
- Enforce private-by-default with a Config rule and launch templates.
Remediation script · bash
# Close the highest-impact public exposure first: databases.
for db in $(aws rds describe-db-instances \
--query 'DBInstances[?PubliclyAccessible==`true`].DBInstanceIdentifier' --output text); do
aws rds modify-db-instance --db-instance-identifier "$db" \
--no-publicly-accessible --apply-immediately
echo "$db: public access removed"
done
# Ratchet S3 shut at the account level so no bucket can be made public again.
aws s3control put-public-access-block --account-id 123456789012 \
--public-access-block-configuration \
'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true' Full walkthrough (console steps, edge cases and verification) in the lesson Block public access to AWS resources.
Is EMR.1 a false positive?
There's no in-place remediation — teams expect to detach the IP from the running node, but EMR doesn't allow it, so the finding only clears by relaunching the cluster correctly.