I currently have an AWS setup with 3 VPCs, one for the bastion, then a Dev and a Prod VPC, those last two only being SSH accessible via the bastion of course (layout from this great guide). I'm looking for the best way to manage having between 3-5 users access the systems. Long term I hope to have automation and external logging to a place where nobody has to SSH in, but for now, SSH it is.
After reading over ideas from this question on ssh key management I am thinking about setting up my AWS access as follows:
- 2 accounts on bastion, sudoable@bastion and non-sudoable@bastion. sysadmins go through one, devs through the other. (devs have no reason to do anything but pass through the bastion)
- the authorized_keys file in each bastion account holds the public key of the sysadmins or devs, respectively
- Dev/Prod VPC instances each have a single, sudoable account: it@devVPC and it@prodVPC.
- Devs get the private key for instances at it@devVPC, sysadmins get the private key for both VPCs instances.
- If someone joins/leaves the company, their pubkey is added/removed from the correct authorized_keys file on the bastion.
- Since the devVPC/prodVPC instances are behind the bastion, even though the worker who left may still have the private key to those servers, there is no way to access them since the bastion won't allow them through
I think this should keep me from having to manage individual useradd/userdel accounts on each instance. Without getting into LDAP and things I wouldn't want long term anyway (again, hopefully nobody needs to SSH into AWS servers in the future), does this seem like a legitimate/secure setup for a small team?
I haven't used it but I've also seen AWS OpsWorks mentioned as a method for controlling SSH keys? Does my situation sound like a good use case for it?