amitmiran137 commented on issue #16557:
URL: https://github.com/apache/superset/issues/16557#issuecomment-911502003


   I just want to this to the broader discussion of Access
   
   ## Prerequisite - Generic Data Access Control
   To achieve the sip goals, prevent and reduce conceptual and design 
complexity, a generic data access objects mechanism is required. There is no 
need reusing the code for dashboards access mechanism, or decuple security 
mechanism to concrete data objects. Those mechanism includes three parts:
   
   1. Create data access objects - permissions objects
   2. Granting permissions objects to others
   3. Permission validations
   
   Currently superset achieve it by depending on FAB View/Api security models 
and mechanisms of access control.
   The big dilemma is the data access control should be separated from FAB 
View/Api access control. Our suggested solution suggests that from the designer 
perspective, both are the same. Thus by modifying some definitions and defining 
new ones, The FAB access control can be transformed to be a “Resource Access 
control” and control access for all the cases without complicating it.
   **Resource Access control** can be integrated directly into Fab or 
alternatively alter and customise it
   under the superset layer.
   
   ### Definitions
   Resource - View is resource, API endpoint is resource too so any kind of 
data objects can be seen as resource too as well (This is REST by definition).
   Data objects - Dashboard, Chart, Dataset, Database and etc’ - can be seen as 
specialization of resources.
   Operation - specific operation on resources like a read, write, delete and 
so on.
   Operator - Role , Owner and etc’ - entities who operate on resources.
   Permission - a right to operate specific operation on resource
   Access control rule - the operations on a resource, an Operator can do
   Security permission objects - the objects represent resources, permissions 
and permission owning as rules
   
   ### Model Specifications
   
   1. There are several operations on each resource as (read/access, 
edit/update. delete/remove, grantor, export and etc )
   2. Resources can be drilled down (dashboard can be drill down to specific 
dashboard)
   3. There are “Operators” who can have permission to do several (or all) 
operations on same resource
   4. There are “Operators” who can have the same permission for all the 
drilled down resources example - I have permission to all dashboards or simply 
represent it by “dashboard” or specific resource.
   5. There are group of operators who have common permissions (Role)
   6. There are use cases which a grantor operator would like to grant 
permission to other operators
   7. There are use cases that require some several permissions for several 
different resources - example fetching a specific dashboard - there is need an 
access permission for  “GET DASHBOARD” endpoint resource, read permission for 
the specific dashboard.
   
   
![operator](https://user-images.githubusercontent.com/47772523/95468043-cd537b00-0986-11eb-8599-547c0507b47d.png)
   
   As can be deduced, the terms changed a bit, so for easy adapting the new 
terms, the same diagram with the old terms is
   
   
![role](https://user-images.githubusercontent.com/47772523/95468248-fd028300-0986-11eb-9711-bd406241bc42.png)
   
   ## table diagram for proposed solution
   ![Copy of FAB tables 
(1)](https://user-images.githubusercontent.com/47772523/95469105-ead51480-0987-11eb-97d8-80331e1804a3.png)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to