A fine-grained security definition for FROST-Server.
Users are actors that can log in. Users are stored in the USERS
table. Test users are:
- read
- write
- admin
The Users
entity type is visible to all users, but normal users can only see their own User entry.
Only global-admin users and project-admin users can see all users.
Password are not visible to anyone, not even to admin users.
Users can change their own password.
Roles embody sets of permissions that a user can have. Roles are stored in the ROLES
table. Test roles are:
- read
- create
- obsCreare
- update
- delete
- admin
The Roles
entity type is only visible to admin users.
Users can have global Roles. The global roles are stored in the USER_ROLES
table that directly links Users to Roles.
- A global admin user is allowed to do everything.
- A user with a global "create" role is allowed to create all entity types except for Users and admin-only types (Roles, UserProjectRoles).
- A user with a global "read" role can read all entities, except for other User entities or admin-only types.
Projects are administrative entities grouping data (through Things). Projects are stored in the PROJECTS
table.
Users can have project-roles. Users are linked to a Project with a certain Role through the USER_PROJECT_ROLE
table
UserProjectRoles Link a User with a specific Role to a Project. A User can have multiple Roles in the same Project.
The UserProjectRoles
entity type is only visible to admin users.
Users without a global "read" role, but with a project-related "read" role can only read Observations that have a Datastream that has a Thing that is linked to a Project that the user is in.