Hi Josh -
I am sure Jim will have better ideas - and I am looking forward to hearing his response. This is me chucking my two cents into the pot.
Adding layers gives you multiple orthogonal means of securing your vault server (e.g. separate bastion versus not) - but increases complexity. A constant tradeoff in secure designs.
With that said, I would suggest you use a VPN rather than a bastion:
- Use a VPN such as OpenVPN. This allows you to configure MFA via OpenVPN.
- Configure the VPN server to be able to access the private subnet where the Vault server resides. In AWS you would put the VPN server in the public subnet in a VPC and vault in a private one. Use terraform to create it for you :D
- Setup firewall and router rules so that only the VPN server can talk to the private vault server
Reasons:
- VPN easier to manage and configure
- You have a generic way to access resources in the public subnet - you do not need to setup port forward rules for new services you put there.
- You get MFA for free. Always nice :D
Hope that helps,
Tim