Skip to content

Instantly share code, notes, and snippets.

@fatihky
Last active September 30, 2021 15:00
Show Gist options
  • Select an option

  • Save fatihky/04830529e4281fdef5d8b3adc13e8ab7 to your computer and use it in GitHub Desktop.

Select an option

Save fatihky/04830529e4281fdef5d8b3adc13e8ab7 to your computer and use it in GitHub Desktop.
cerbos - campaign - authorization
---
apiVersion: "api.cerbos.dev/v1"
derivedRoles:
name: campaign_roles
definitions:
- name: campaign_owner
parentRoles: ["user"]
condition:
match:
expr: request.resource.attr.campaign.owner == request.principal.id
---
apiVersion: "api.cerbos.dev/v1"
derivedRoles:
name: common_roles
definitions:
- name: admin
parentRoles: ['admin']
- name: owner
parentRoles: ["user"]
condition:
match:
expr: request.resource.attr.owner == request.principal.id
{
"requestId": "0011",
"includeMeta": true,
"actions": ["create"],
"resource": {
"kind": "campaign_keyword:object",
"instances": {
"0": {
"attr": {
"id": "0",
"campaign": {
"owner": "alicia"
}
}
}
}
},
"principal": {
"id": "alicia",
"roles": ["user"]
}
}
---
apiVersion: api.cerbos.dev/v1
resourcePolicy:
version: "default"
importDerivedRoles:
- common_roles
resource: "campaign:object"
rules:
- actions: ['create']
effect: EFFECT_ALLOW
roles:
- user
# UPDATE Policies
# Currently on the display names of the campaigns can be updated
# by the admins or the owners of the campaigns.
- actions: ['update:displayName']
effect: EFFECT_ALLOW
derivedRoles:
- owner
---
apiVersion: api.cerbos.dev/v1
resourcePolicy:
version: "default"
# When I omit `common_roles` below, the principal gets the `campaign_owner`
# derived role successfully. Otherwise the user doesn't get any derived role.
importDerivedRoles:
- campaign_roles
- common_roles
resource: "campaign_keyword:object"
rules:
- actions: ["create"]
effect: EFFECT_ALLOW
derivedRoles:
- campaign_owner
- actions: ["delete"]
effect: EFFECT_ALLOW
derivedRoles:
- campaign_owner
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment