Skip to content

Commit aae6e98

Browse files
committed
More manual edits
1 parent 0fc3488 commit aae6e98

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

docs/apps/rbac/for_dab_developers.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
## DAB RBAC System Design Principles
22

3-
The current DAB RBAC system represents a fundamental architectural shift from graph-based role inheritance to a resource tree model with named permissions.
3+
The DAB RBAC features and goals:
4+
- Adheres to patterns created by django.contrib.auth, specifically its permission model
5+
- Adds roles, containers of multiple permissions
6+
- Adds teams, allowing bulk-assignment of permissions to a group of users
7+
- Allows managing multiple "levels" of permissions
8+
- object-level permission
9+
- inheritance from an objects parent object, main organization
10+
- system-wide permissions
11+
- Be as lazy as possible
12+
13+
This is a combination of former galaxy_ng/pulp and AWX systems.
14+
The galaxy_ng/pulp RBAC system had everything above except for inheritance.
15+
The AWX system did not enumerate permissions at all, and structured roles in a graph-based design.
416

517
### Internal Terminology
618

@@ -15,8 +27,8 @@ For DAB developers working on the RBAC system itself:
1527

1628
### Evolution from Role Graphs to Resource Trees
1729

18-
**Previous (2015) System:**
19-
The older system created a complex graph where roles had parent-child relationships with other roles. Each object auto-created its own roles, and permissions flowed through role inheritance chains. This created scenarios like an "inventory_admin" role automatically granting read permissions to job templates that used that inventory.
30+
**Previous (2015) AWX System:**
31+
The older system created a complex graph where roles had parent-child relationships with other roles. Each object auto-created its own roles, and permissions flowed through role inheritance chains. This means you could have "admin_role" to a job template which would give CRUD permissions plus the ability to run the job template, or "execute_role" which would give ability to run but not the ability to edit. Inheritance worked by "admin_role" to an organization being a parent of the roles of all objects within the organization.
2032

2133
**Current (2023+) System:**
2234
The current system abandons role-to-role inheritance in favor of:

0 commit comments

Comments
 (0)