Skip to content

Commit 6ae65dd

Browse files
committed
feat: update authorization policies and user permissions
1 parent ddcc6d5 commit 6ae65dd

2 files changed

Lines changed: 82 additions & 27 deletions

File tree

openedx_authz/management/commands/policy.csv

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,37 @@
1+
# ===== POLICIES =====
2+
# Platform-level permissions
13
p, role:platform_admin, act:manage, *, allow
4+
# Organization-level permissions
25
p, role:org_admin, act:manage, lib:*, allow
36
p, role:org_editor, act:edit, lib:*, allow
7+
# Library-specific permissions
48
p, role:library_author, act:edit, lib:*, allow
59
p, role:library_reviewer, act:read, lib:*, allow
10+
p, role:editor, act:edit, lib:*, allow
11+
# Report permissions
12+
p, role:report_viewer, act:read, report:*, allow
13+
# Access restrictions and exceptions
614
p, role:org_editor, act:edit, lib:restricted-content, deny
15+
p, role:org_admin, act:manage, lib:another-restricted-content, deny
716

17+
# ===== ROLE ASSIGNMENTS =====
18+
19+
# Platform administrators
820
g, user:admin, role:platform_admin, *
21+
# Organization administrators
922
g, user:alice, role:org_admin, org:OpenedX
23+
# Organization editors
1024
g, user:bob, role:org_editor, org:MIT
25+
g, user:paul, role:editor, org:OpenedX
26+
# Library authors
1127
g, user:mary, role:library_author, lib:math-basics
1228
g, user:john, role:library_author, lib:science-101
29+
# Library reviewers
1330
g, user:sarah, role:library_reviewer, lib:math-basics
31+
# Report viewers
32+
g, user:maria, role:report_viewer, org:OpenedX
1433

34+
# ===== ACTION INHERITANCE (g2) =====
1535
g2, act:manage, act:edit
1636
g2, act:manage, act:delete
1737
g2, act:edit, act:read
Lines changed: 62 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,102 @@
1-
# ===== ADMIN GLOBAL PERMISSIONS =====
2-
user:admin, act:manage, lib:math-basics, org:OpenedX, True
3-
user:admin, act:delete, lib:science-101, org:MIT, True
4-
user:admin, act:read, lib:openedx-library, org:OpenedX, True
1+
# ===== PLATFORM ADMINISTRATORS =====
2+
# Platform admin (user:admin) - should have access to everything
3+
user:admin, act:manage, lib:math-basics, *, True
4+
user:admin, act:delete, lib:science-101, *, True
55
user:admin, act:read, lib:any-library, *, True
66
user:admin, act:write, lib:any-library, *, True
77
user:admin, act:delete, lib:any-library, *, True
88

9-
# ===== ORG ADMIN PERMISSIONS =====
9+
# ===== ORGANIZATION ADMINISTRATORS =====
10+
# Alice - OpenedX org admin (should have access within OpenedX scope)
1011
user:alice, act:manage, lib:openedx-library, org:OpenedX, True
1112
user:alice, act:delete, lib:openedx-content, org:OpenedX, True
1213
user:alice, act:write, lib:math-basics, org:OpenedX, True
1314
user:alice, act:read, lib:openedx-test, org:OpenedX, True
1415
user:alice, act:write, lib:openedx-test, org:OpenedX, True
1516
user:alice, act:delete, lib:openedx-test, org:OpenedX, True
17+
user:alice, act:manage, lib:math-basics, org:OpenedX, True
18+
user:alice, act:manage, lib:science-101, org:OpenedX, True
19+
user:alice, act:edit, lib:science-101, org:OpenedX, True
20+
21+
# Alice - Cross-org access (should be denied)
1622
user:alice, act:manage, lib:mit-library, org:MIT, False
1723
user:alice, act:read, lib:mit-content, org:MIT, False
24+
user:alice, act:manage, lib:openedx-lib, *, False
25+
26+
# Alice - Restricted content access (should be denied)
27+
user:alice, act:manage, lib:another-restricted-content, org:OpenedX, False
28+
user:alice, act:edit, lib:another-restricted-content, org:OpenedX, False
29+
user:alice, act:read, lib:another-restricted-content, org:OpenedX, False
30+
user:alice, act:write, lib:another-restricted-content, org:OpenedX, False
31+
user:alice, act:delete, lib:another-restricted-content, org:OpenedX, False
1832

19-
# ===== ORG EDITOR PERMISSIONS =====
33+
# ===== ORGANIZATION EDITORS =====
34+
# Bob - MIT org editor (should have edit access within MIT scope)
2035
user:bob, act:edit, lib:mit-course, org:MIT, True
2136
user:bob, act:read, lib:mit-content, org:MIT, True
2237
user:bob, act:write, lib:mit-data, org:MIT, True
38+
user:bob, act:read, lib:mit-test, org:MIT, True
39+
user:bob, act:write, lib:mit-test, org:MIT, True
40+
41+
# Bob - Higher privilege access (should be denied)
2342
user:bob, act:delete, lib:mit-course, org:MIT, False
2443
user:bob, act:manage, lib:mit-course, org:MIT, False
44+
user:bob, act:delete, lib:mit-test, org:MIT, False
45+
46+
# Bob - Restricted content access (should be denied)
47+
user:bob, act:edit, lib:restricted-content, org:MIT, False
48+
user:bob, act:read, lib:restricted-content, org:MIT, False
49+
user:bob, act:write, lib:restricted-content, org:MIT, False
50+
51+
# Bob - Scope isolation tests (should be denied)
52+
user:bob, act:edit, lib:mit-course, lib:mit-course, False
2553

26-
# ===== LIBRARY AUTHOR PERMISSIONS =====
54+
# Paul - OpenedX editor with wildcard access
55+
user:paul, act:edit, lib:openedx-lib, org:OpenedX, True
56+
user:paul, act:edit, lib:mit-lib, org:MIT, False
57+
58+
# ===== LIBRARY AUTHORS =====
59+
# Mary - math-basics library author
2760
user:mary, act:edit, lib:math-basics, lib:math-basics, True
2861
user:mary, act:read, lib:math-basics, lib:math-basics, True
2962
user:mary, act:write, lib:math-basics, lib:math-basics, True
63+
64+
# Mary - Higher privilege access (should be denied)
3065
user:mary, act:delete, lib:math-basics, lib:math-basics, False
3166
user:mary, act:manage, lib:math-basics, lib:math-basics, False
67+
68+
# Mary - Cross-library access (should be denied)
3269
user:mary, act:edit, lib:science-101, lib:science-101, False
70+
user:mary, act:read, lib:science-101, lib:science-101, False
71+
72+
# Mary - Scope isolation (should be denied)
73+
user:mary, act:edit, lib:math-basics, org:OpenedX, False
74+
75+
# John - science-101 library author
3376
user:john, act:edit, lib:science-101, lib:science-101, True
3477
user:john, act:read, lib:science-101, lib:science-101, True
78+
79+
# John - Cross-library access (should be denied)
3580
user:john, act:edit, lib:math-basics, lib:math-basics, False
3681

37-
# ===== LIBRARY REVIEWER PERMISSIONS =====
82+
# ===== LIBRARY REVIEWERS =====
83+
# Sarah - math-basics library reviewer (read-only access)
3884
user:sarah, act:read, lib:math-basics, lib:math-basics, True
85+
86+
# Sarah - Higher privilege access (should be denied)
3987
user:sarah, act:write, lib:math-basics, lib:math-basics, False
4088
user:sarah, act:edit, lib:math-basics, lib:math-basics, False
4189
user:sarah, act:delete, lib:math-basics, lib:math-basics, False
4290

43-
# ===== ACTION INHERITANCE TESTS =====
44-
user:alice, act:read, lib:openedx-test, org:OpenedX, True
45-
user:alice, act:write, lib:openedx-test, org:OpenedX, True
46-
user:alice, act:delete, lib:openedx-test, org:OpenedX, True
47-
user:bob, act:read, lib:mit-test, org:MIT, True
48-
user:bob, act:write, lib:mit-test, org:MIT, True
49-
user:bob, act:delete, lib:mit-test, org:MIT, False
91+
# ===== REPORT VIEWERS =====
92+
# Maria - report viewer for OpenedX
93+
user:maria, act:read, report:openedx-usage-2025, org:OpenedX, True
5094

51-
# ===== DENY RULES TESTS =====
52-
user:bob, act:edit, lib:restricted-content, org:MIT, False
53-
user:bob, act:read, lib:restricted-content, org:MIT, False
54-
55-
# ===== SCOPE ISOLATION TESTS =====
56-
user:alice, act:manage, lib:openedx-lib, *, False
57-
user:mary, act:edit, lib:math-basics, org:OpenedX, False
58-
user:bob, act:edit, lib:mit-course, lib:mit-course, False
59-
60-
# ===== UNAUTHORIZED ACCESS TESTS =====
95+
# ===== UNAUTHORIZED USERS =====
96+
# Unknown user - should be denied access
6197
user:unknown, act:read, lib:math-basics, lib:math-basics, False
62-
user:mary, act:read, lib:science-101, lib:science-101, False
6398

64-
# ===== SPECIAL CASE TESTS =====
99+
# ====== SPECIAL CASE ======
65100
# This should be False, but it's returning True. This is a
66101
# special case, and we can prevent it from the Open edX layer
67102
user:mary, act:read, lib:science-101, lib:math-basics, False

0 commit comments

Comments
 (0)