Note that there are some explanatory texts on larger screens.

plurals
  1. POComplex Righty System: ACL, RBAC and more what?
    primarykey
    data
    text
    <p>We are currently developing a project management software. And we are having trouble deciding on the correct approach to implement security. We have looked at both ACL and RBAC and are already pretty certain that we need at least a combination of both for specific reasons. But there are a couple of problems that do not have a nice solution in either world. Let me explain:</p> <p>Let's say you have the following entities:</p> <ol> <li><strong>Users</strong>, with different roles, i.e. <ul> <li><em>Project Lead</em></li> <li><em>Worker</em></li> <li><em>Admin</em></li> </ul></li> <li><strong>Projects</strong></li> <li><strong>Assigned Users</strong></li> <li><strong>Tasks in Project</strong></li> </ol> <p>Now the following rule should be expressed: A <strong>User</strong> with the Role <em>Worker</em> is only allowed to view <strong>Tasks</strong>, which are related to a project he is assigned to.</p> <p>This results in that a <strong>User</strong> is only allowed to view some <strong>Tasks</strong> in the whole list. </p> <p>We would use RBAC to give <em>Roles</em> the permission to actually read <strong>Tasks</strong>. But the condition is not applied as there are specific entities involved. ACL could be used, but we fear the nightmare of keeping the ACL entries consitent with the requirements (<strong>Users</strong> can change, <em>Roles</em> can change, new <strong>Tasks</strong> can be introduced an would have to get the correct entries, which is just as complex). </p> <p>Of course there could be specific queries when viewing a specific project (<code>WHERE project_id = 123</code>), but this does not help for a "View of all my current <strong>Tasks</strong>", where basically every task can be considered for display, but the ACL would have to be checked for every single entriy.</p> <p>And how do I ensure things like "Get the first 25 Tasks the current User is allowed to see" without loading all the tasks from the DB and then filtering based on the ACL, i.e. handling pagination.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload