-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrbac.rego
38 lines (34 loc) · 1.03 KB
/
rbac.rego
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Define the regions and the minimum required Karma for each permission level
region_karma_requirements = {
"us-east-1": {"read": 10, "write": 50, "admin": 100},
"us-west-2": {"read": 5, "write": 30, "admin": 90},
"eu-central-1": {"read": 20, "write": 60, "admin": 110},
"ap-southeast-1": {"read": 15, "write": 40, "admin": 95}
}
# Mock data source for user Karma values
user_karma = {
"user-1": 55,
"user-2": 45,
"user-3": 120
}
# Mock data source for user region values
user_region = {
"user-1": "us-east-1",
"user-2": "us-west-2",
"user-3": "eu-central-1"
}
# Define the input structure
# input: {
# "user": {
# "id": "user-1"
# },
# "requested_permission": "write"
# }
# Calculate whether the user has sufficient Karma for the requested permission
allow {
user_id := input.user.id
requested_permission := input.requested_permission
region := user_region[user_id]
required_karma := region_karma_requirements[region][requested_permission]
user_karma[user_id] >= required_karma
}