What are some approaches or best practices for managing SSH access by many devops to many AWS instances? I'd like to have the ability to e.g. add or remove access for a user to multiple instances through a single simple and secure operation, instead of going instance by instance and adding/removing their public key from the authorized_keys. And of course, I wouldn't want the same private key to be used by more than one user...
The two big methods here are:
- Use a central authentication system such as LDAP.
- Use a configuration management system to manage SSH keys and associated files.
The first isn't very Linuxy since it requires people to use a password on their first entry to a system. That said, it does allow large installations to work rather well.
The second can be engineered so access is granted via Pull Request or Merge Request into a code-repository, after code-review. A workflow software engineers understand rather well.
Check out userify.com. It's written by a hardcore security nut and is pretty much exactly the situation that you're describing.
Disclaimer: the creator is a friend of mine, but I don't get anything for recommending it.