First off: Vault is fantastic, and obviously holds amazing future promise as well.
I am thinking through details of using it in production within a few large-scale deployments in AWS, and the potential to mitigate (if not solve) the chicken-or-egg problem for machine authentication of automated resources is great news.
So obviously, I am looking hard at app-id auth, but like some others on this thread, am not yet completely satisfied with an approach to using app-id in cloud deployments.
Ultimately, I need to handle two separate types of automated machine deployments:
* full EC2 instances
* individual Docker containers (both in ECS and on custom Docker hosts)
Seems like the best approach for user-id might differ between the two. Here are some thoughts and questions I have right now. I'd be interested in any comments from the thread at large.
* I agree with Michael Fischer in that the MAC address is potentially easily visible to many parties, even remotely
* Instance-id also could be pretty visible to others in a number of scenarios
* For EC2 instances, I've considered leveraging IAM roles/instance profiles for bootstrapping the user-id. Perhaps the EC2 instance could leverage its instance profile to access a restricted S3 bucket and fetch a user-id value. In this scenario each instance with the same role would probably use the same user-id, which would somewhat limit the granularity of Vault audit logs, but that might be an ok tradeoff
* For Docker containers, I am not sure yet. Do folks have ideas as to a semi-secret derivable user-id in a containerized environment? (I believe the app-id auth docs mention containers as a use case, so I am wondering if Hashicorp has any thoughts and/or examples about best practices with app-id auth in containers.)
* What is the current thinking (if any) about scripting a secure out-of-band process to dynamically create user-id/app-id maps in Vault when EC2 instances and ECS containers are instantiated in, say, an autoscaling event?