test1
This commit is contained in:
parent
1cc9e18880
commit
03d0a028bb
|
|
@ -0,0 +1,10 @@
|
||||||
|
version: "3.8"
|
||||||
|
services:
|
||||||
|
opa:
|
||||||
|
image: openpolicyagent/opa:latest
|
||||||
|
container_name: opa
|
||||||
|
command: run --server --log-level debug --addr=0.0.0.0:8181 --bundle /bundle
|
||||||
|
ports:
|
||||||
|
- "8181:8181"
|
||||||
|
volumes:
|
||||||
|
- ./opa:/bundle
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package app.rbac
|
||||||
|
|
||||||
|
# By default, deny requests.
|
||||||
|
default allow := false
|
||||||
|
|
||||||
|
# Allow admins to do anything.
|
||||||
|
allow if user_is_admin
|
||||||
|
|
||||||
|
# Allow the action if the user is granted permission to perform the action.
|
||||||
|
allow if {
|
||||||
|
# Find grants for the user.
|
||||||
|
some grant in user_is_granted
|
||||||
|
|
||||||
|
# Check if the grant permits the action.
|
||||||
|
input.action == grant.action
|
||||||
|
input.type == grant.type
|
||||||
|
}
|
||||||
|
|
||||||
|
# user_is_admin is true if "admin" is among the user's roles as per data.user_roles
|
||||||
|
user_is_admin if "admin" in data.user_roles[input.user]
|
||||||
|
|
||||||
|
# user_is_granted is a set of grants for the user identified in the request.
|
||||||
|
# The `grant` will be contained if the set `user_is_granted` for every...
|
||||||
|
user_is_granted contains grant if {
|
||||||
|
# `role` assigned an element of the user_roles for this user...
|
||||||
|
some role in data.user_roles[input.user]
|
||||||
|
|
||||||
|
# `grant` assigned a single grant from the grants list for 'role'...
|
||||||
|
some grant in data.role_grants[role]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"user_roles": {
|
||||||
|
"alice": ["admin", "developer"],
|
||||||
|
"bob": ["developer"],
|
||||||
|
"charlie": ["guest"]
|
||||||
|
},
|
||||||
|
"role_grants": {
|
||||||
|
"admin": [
|
||||||
|
{"action": "read", "type": "any"},
|
||||||
|
{"action": "write", "type": "any"}
|
||||||
|
],
|
||||||
|
"developer": [
|
||||||
|
{"action": "read", "type": "code"},
|
||||||
|
{"action": "write", "type": "code"}
|
||||||
|
],
|
||||||
|
"guest": [
|
||||||
|
{"action": "read", "type": "docs"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue