Thanks Thomas.
I am setting up a salt service for multiple tenants. Each tenant is able to add his own minions in the service. Each tenant should have complete rights over his own minions, but should have no rights over others' minions. I'm not using client_acl or eauth. I'm building my own authentication/authorization system, and then use salt client API to talk to minions. In summary, the service requires:
1. Multiple tenants coexist in the same system
2. Each tenant having different set of minions
3. Tenant A cannot access Tenant B's minions
4. Tenant A and Tenant B use different AES keys
If I understand correctly, you are suggesting that each tenant should have a different master. Could you explain more on binding them together with a syndic? I thought only syndics can be binded with a master, not the other way around. If I need to start a new master for each different tenant, then it doesn't seem to be scalable, considering we could have tens of thousands of tenants.
Could you please provide some suggestions on this problem, the correct way to resolve it and where I should hack into salt to make it work? I am thinking a two-layer AES encoding approach. Each tenant should have another AES key, encoding the entire command except the minion id. Outside the message is encoded using the original AES key. Upon receiving the message, minion should decode the message with the original AES key to reveal the minion id. Once the minion id is known and matches the minion's own id, it will go ahead to decode the message with the second AES key.
Thanks,
Xin