Keystone now has Implied Roles. What does this mean? Lets say we define the role Admin to imply the Member role. Now, if you assigned someone Admin on a project they are automatically assigned the Member role on that project implicitly.
Let’s test it out:
Since we don’t yet have client or CLI support, we’ll have to make due with curl and jq for now.
This uses the same approach Keystone V3 Examples
#!/bin/sh . ~/adminrc export TOKEN=`curl -si -d @token-request.json -H "Content-type: application/json" $OS_AUTH_URL/auth/tokens | awk '/X-Subject-Token/ {print $2}'` export ADMIN_ID=`curl -H"X-Auth-Token:$TOKEN" -H "Content-type: application/json" $OS_AUTH_URL/roles?name=admin | jq --raw-output '.roles[] | {id}[]'` export MEMBER_ID=`curl -H"X-Auth-Token:$TOKEN" -H "Content-type: application/json" $OS_AUTH_URL/roles?name=_member_ | jq --raw-output '.roles[] | {id}[]'` curl -X PUT -H"X-Auth-Token:$TOKEN" -H "Content-type: application/json" $OS_AUTH_URL/roles/$ADMIN_ID/implies/$MEMBER_ID curl -H"X-Auth-Token:$TOKEN" -H "Content-type: application/json" $OS_AUTH_URL/role_inferences
Now, create a new user and and assign them only the user role.
openstack user create Phred openstack user show Phred +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | default | | enabled | True | | id | 117c6f0055a446b19f869313e4cbfb5f | | name | Phred | +-----------+----------------------------------+ $ openstack user set --password-prompt Phred User Password: Repeat User Password: $ openstack project list +----------------------------------+-------+ | ID | Name | +----------------------------------+-------+ | fdd0b0dcf45e46398b3f9b22d2ec1ab7 | admin | +----------------------------------+-------+ $ openstack project list +----------------------------------+-------+ | ID | Name | +----------------------------------+-------+ | fdd0b0dcf45e46398b3f9b22d2ec1ab7 | admin | +----------------------------------+-------+ openstack role add --user 117c6f0055a446b19f869313e4cbfb5f --project fdd0b0dcf45e46398b3f9b22d2ec1ab7 e3b08f3ac45a49b4af77dcabcd640a66
Copy token-request.json and modify the values for the new user.
curl -d @token-request-phred.json -H "Content-type: application/json" $OS_AUTH_URL/auth/tokens | jq '.token | {roles}' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1643 100 1098 100 545 14742 7317 --:--:-- --:--:-- --:--:-- 14837 { "roles": [ { "id": "9fe2ff9ee4384b1894a90878d3e92bab", "name": "_member_" }, { "id": "e3b08f3ac45a49b4af77dcabcd640a66", "name": "admin" } ] }