Privileges allow you to map users to accounts, groups or even individual virtual machines. This API allows you to allocate fine-grained access control to new users.
Endpoints
These are all relative to https://uk0.bigv.io
GET /privileges
GET /privileges/{privilege-id}
PUT /privileges/{privilege-id}
DELETE /privileges/{privilege-id}
POST /users/{user-id}/privileges
GET /users/{user-id}/privileges
# Non-nested endpoints (currently only GET)
GET /privileges?user_id={user-id}
- Replace
{user-id}with a user id or username. - Replace
{privilege-id}with the id of the privilege.
Attributes
id– unique key (integer).username– username this privilege is for.level– the level of privilege (see below).creating_username– username of the user who created this user.yubikey_required– boolean specifying whether a yubikey is required for access.yubikey_otp_max_age– how long the yubikey value will be accepted for (in seconds).ip_restrictions– whether the user has to be accessing from certain IP addresses to have this privilege.
And one of the following:
virtual_machine_idgroup_idaccount_id
The valid levels are:
account_admingroup_adminvm_adminvm_console
Users can only create or modify privileges which have a lower level than themselves (e.g., an account_admin cannot DELETE another user’s account_admin privileges.
Once created, only yubikey_required, yubikey_otp_max_age and ip_restrictions can be updated.
Examples
All Privileges for your user
Request
GET /privileges
Curl:
curl -H "Content-type: application/json" \
-H "Authorization: Bearer {session-id}" \
https://uk0.bigv.io/privileges
Response (success: 200)
[
{
"id":1,
"level":"account_admin",
"yubikey_required":true,
"yubikey_otp_max_age":900,
"ip_restrictions":null,
"username":"myusername",
"_links":{
"self":{
"href":"/privileges/25"
},
"user":{
"href":"/users/25"
},
"account":{
"href":"/accounts/24",
"title":"Account myaccountname"
}
},
"account_id":1
}
]
Single Privilege
Request
GET /privileges/{privilege-id}
Curl
curl -H "Content-type: application/json" \
-H "Authorization: Bearer {session-id}" \
https://uk0.bigv.io/privileges/1
Response (success: 200):
{"id":1,"level":"account_admin","yubikey_required":true,"yubikey_otp_max_age":900,"ip_restrictions":null,"username":"myusername","_links":{"self":{"href":"/privileges/25"},"user":{"href":"/users/25"},"account":{"href":"/accounts/24","title":"Account myaccountname"}},"account_id":1},{"id":5273,"level":"account_admin","yubikey_required":true,"yubikey_otp_max_age":900,"ip_restrictions":null,"username":"myusername","_links":{"self":{"href":"/privileges/5273"},"user":{"href":"/users/25"},"account":{"href":"/accounts/5114","title":"Account myotheraccount"}},"account_id":2}
Create Privilege
Request
POST /users/{user-id}/privileges
Curl:
curl -H "Content-type: application/json" \
-H "Authorization: Bearer {session-id}" \
-X POST \
-d '{"level":"vm_admin", "yubikey_required":false, "virtual_machine_id":45}' \
https://uk0.bigv.io/users/mynewusername/privileges/1
Response (success: 200)
{"id":6,"level":"vm_admin","yubikey_required":false,"yubikey_otp_max_age":null,"ip_restrictions":null,"username":"mynewusername","_links":{"self":{"href":"/privileges/6"},"user":{"href":"/users/3"},"creating_user":{"href":"/users/3"},"virtual_machine":{"href":"/accounts/3/groups/3/virtual_machines/45","title":"VM myserver1.default.myaccountname.uk0.bigv.io"}},"creating_username":"myusername","virtual_machine_id":45}
Update Privilege
Request
GET /privileges/{privilege-id}
Curl
curl -H "Content-type: application/json" \
-H "Authorization: Bearer {session-id}" \
-d '{"yubikey_required":false}' \
https://uk0.bigv.io/privileges/6
Response (success: 200):
{"id":6,"level":"vm_admin","yubikey_required":false,"yubikey_otp_max_age":600,"ip_restrictions":null,"username":"mynewusername","_links":{"self":{"href":"/privileges/6"},"user":{"href":"/users/3"},"creating_user":{"href":"/users/3"},"virtual_machine":{"href":"/accounts/3/groups/3/virtual_machines/45","title":"VM myserver1.default.myaccountname.uk0.bigv.io"}},"creating_username":"myusername","virtual_machine_id":45}
Delete Privilege
Request
DELETE /privileges/{privilege-id}
Curl
curl -H "Content-type: application/json" \
-H "Authorization: Bearer {session-id}" \
-X DELETE \
https://uk0.bigv.io/privileges/1