I'm not sure I understand your comment.  Are you saying the "allow all inbound traffic from other hosts in the private subnet" is too permissive?  Or "allow all traffic from the bastion host" is too permissive?  Or both?

I haven't enumerated all of the various ports that hadoop uses, but I use the bastion host as a SOCKS proxy, so it needs to pass along connections on odd ports (like 50030 for the hadoop web UI).

Don't we trust all traffic coming from the bastion since it only allows SSH in?  I was assuming that if one of our keys was compromised then the whole security scheme is shot anyway...