Hi,
I’m using Vault with SaltStack and am trying to create a single policy to replace a policy per host.
When SaltStack creates a token for a minion (host), it automatically includes metadata. In particular, saltstack-minion is set to the hostname.
It makes a request to:
POST /v1/auth/token/create HTTP/1.0
The request contains:
{"policies": ["salt/minions", "salt/minion/myhost.domain.net"], "num_uses": 50, "meta": {"saltstack-jid": "20210622154012124421", "saltstack-minion": "myhost.domain.net", "saltstack-user": "root"}, "explicit_max_ttl": "300"}
The response contains:
"policies":["default","salt/minion/myhost.domain.net","salt/minions"],"token_policies":["default","salt/minion/myhost.domain.net","salt/minions"],"metadata":{"saltstack-jid":"20210622154012124421","saltstack-minion":"myhost.domain.net","saltstack-user":"root"},
A request for auth/token/lookup-self contains:
meta:
----------
saltstack-jid:
20210622154012124421
saltstack-minion:
myhost.domain.net
saltstack-user:
root
num_uses:
I then create a policy containing:
path "salt/minion/{{identity.entity.metadata.saltstack-minion}}/*" {
capabilities = ["read"]
}
I then do a request for:
GET /v1/salt/minion/myhost.domain.net/db HTTP/1.0
and it returns 403!
Any ideas why this doesn’t work or how I can debug it further?
Thanks,
Ian