Skip to main content Svelte Highlight v7.21.1

Rego language preview

1. HTTP API authorization

allow rules referencing input.method and input.path
horizon-dark
package authz

import future.keywords.if

default allow := false

allow if {
	input.method == "GET"
	startswith(input.path, "/public")
}

allow if {
	input.method == "POST"
	input.path == "/login"
}

allow if {
	some role in input.user.roles
	role == "admin"
}
atom-one-dark
package authz

import future.keywords.if

default allow := false

allow if {
	input.method == "GET"
	startswith(input.path, "/public")
}

allow if {
	input.method == "POST"
	input.path == "/login"
}

allow if {
	some role in input.user.roles
	role == "admin"
}
github-dark
package authz

import future.keywords.if

default allow := false

allow if {
	input.method == "GET"
	startswith(input.path, "/public")
}

allow if {
	input.method == "POST"
	input.path == "/login"
}

allow if {
	some role in input.user.roles
	role == "admin"
}
dracula
package authz

import future.keywords.if

default allow := false

allow if {
	input.method == "GET"
	startswith(input.path, "/public")
}

allow if {
	input.method == "POST"
	input.path == "/login"
}

allow if {
	some role in input.user.roles
	role == "admin"
}
nord
package authz

import future.keywords.if

default allow := false

allow if {
	input.method == "GET"
	startswith(input.path, "/public")
}

allow if {
	input.method == "POST"
	input.path == "/login"
}

allow if {
	some role in input.user.roles
	role == "admin"
}
github
package authz

import future.keywords.if

default allow := false

allow if {
	input.method == "GET"
	startswith(input.path, "/public")
}

allow if {
	input.method == "POST"
	input.path == "/login"
}

allow if {
	some role in input.user.roles
	role == "admin"
}

2. Kubernetes admission control

deny rules for pod security policy
horizon-dark
package kubernetes.admission

import future.keywords.if
import future.keywords.in
import future.keywords.contains

deny contains msg if {
	some container in input.request.object.spec.containers
	container.image == ""
	msg := sprintf("container %v has no image", [container.name])
}

deny contains msg if {
	not input.request.object.spec.securityContext.runAsNonRoot
	msg := "pods must not run as root"
}

deny contains msg if {
	input.request.kind.kind == "Pod"
	count(input.request.object.spec.containers) == 0
	msg := "pod must define at least one container"
}
atom-one-dark
package kubernetes.admission

import future.keywords.if
import future.keywords.in
import future.keywords.contains

deny contains msg if {
	some container in input.request.object.spec.containers
	container.image == ""
	msg := sprintf("container %v has no image", [container.name])
}

deny contains msg if {
	not input.request.object.spec.securityContext.runAsNonRoot
	msg := "pods must not run as root"
}

deny contains msg if {
	input.request.kind.kind == "Pod"
	count(input.request.object.spec.containers) == 0
	msg := "pod must define at least one container"
}
github-dark
package kubernetes.admission

import future.keywords.if
import future.keywords.in
import future.keywords.contains

deny contains msg if {
	some container in input.request.object.spec.containers
	container.image == ""
	msg := sprintf("container %v has no image", [container.name])
}

deny contains msg if {
	not input.request.object.spec.securityContext.runAsNonRoot
	msg := "pods must not run as root"
}

deny contains msg if {
	input.request.kind.kind == "Pod"
	count(input.request.object.spec.containers) == 0
	msg := "pod must define at least one container"
}
dracula
package kubernetes.admission

import future.keywords.if
import future.keywords.in
import future.keywords.contains

deny contains msg if {
	some container in input.request.object.spec.containers
	container.image == ""
	msg := sprintf("container %v has no image", [container.name])
}

deny contains msg if {
	not input.request.object.spec.securityContext.runAsNonRoot
	msg := "pods must not run as root"
}

deny contains msg if {
	input.request.kind.kind == "Pod"
	count(input.request.object.spec.containers) == 0
	msg := "pod must define at least one container"
}
nord
package kubernetes.admission

import future.keywords.if
import future.keywords.in
import future.keywords.contains

deny contains msg if {
	some container in input.request.object.spec.containers
	container.image == ""
	msg := sprintf("container %v has no image", [container.name])
}

deny contains msg if {
	not input.request.object.spec.securityContext.runAsNonRoot
	msg := "pods must not run as root"
}

deny contains msg if {
	input.request.kind.kind == "Pod"
	count(input.request.object.spec.containers) == 0
	msg := "pod must define at least one container"
}
github
package kubernetes.admission

import future.keywords.if
import future.keywords.in
import future.keywords.contains

deny contains msg if {
	some container in input.request.object.spec.containers
	container.image == ""
	msg := sprintf("container %v has no image", [container.name])
}

deny contains msg if {
	not input.request.object.spec.securityContext.runAsNonRoot
	msg := "pods must not run as root"
}

deny contains msg if {
	input.request.kind.kind == "Pod"
	count(input.request.object.spec.containers) == 0
	msg := "pod must define at least one container"
}

3. Function-style rule heads

helper functions with (params), not just partial sets
horizon-dark
package authz

is_valid_user(u) {
	u.age >= 18
	u.status == "active"
}

allow if {
	is_valid_user(input.user)
	count(input.user.roles) > 0
}
atom-one-dark
package authz

is_valid_user(u) {
	u.age >= 18
	u.status == "active"
}

allow if {
	is_valid_user(input.user)
	count(input.user.roles) > 0
}
github-dark
package authz

is_valid_user(u) {
	u.age >= 18
	u.status == "active"
}

allow if {
	is_valid_user(input.user)
	count(input.user.roles) > 0
}
dracula
package authz

is_valid_user(u) {
	u.age >= 18
	u.status == "active"
}

allow if {
	is_valid_user(input.user)
	count(input.user.roles) > 0
}
nord
package authz

is_valid_user(u) {
	u.age >= 18
	u.status == "active"
}

allow if {
	is_valid_user(input.user)
	count(input.user.roles) > 0
}
github
package authz

is_valid_user(u) {
	u.age >= 18
	u.status == "active"
}

allow if {
	is_valid_user(input.user)
	count(input.user.roles) > 0
}

4. Data references and built-ins

object, string, and aggregate built-in functions
horizon-dark
package rbac

user_roles[user] := roles if {
	some user
	roles := {role |
		some binding in data.role_bindings
		binding.user == user
		role := binding.role
	}
}

allowed_actions := object.get(data.permissions, input.role, [])

is_owner if {
	input.resource.owner == input.user.id
}

# require at least one matching permission
authorized if {
	count(allowed_actions) > 0
	input.action in allowed_actions
}
atom-one-dark
package rbac

user_roles[user] := roles if {
	some user
	roles := {role |
		some binding in data.role_bindings
		binding.user == user
		role := binding.role
	}
}

allowed_actions := object.get(data.permissions, input.role, [])

is_owner if {
	input.resource.owner == input.user.id
}

# require at least one matching permission
authorized if {
	count(allowed_actions) > 0
	input.action in allowed_actions
}
github-dark
package rbac

user_roles[user] := roles if {
	some user
	roles := {role |
		some binding in data.role_bindings
		binding.user == user
		role := binding.role
	}
}

allowed_actions := object.get(data.permissions, input.role, [])

is_owner if {
	input.resource.owner == input.user.id
}

# require at least one matching permission
authorized if {
	count(allowed_actions) > 0
	input.action in allowed_actions
}
dracula
package rbac

user_roles[user] := roles if {
	some user
	roles := {role |
		some binding in data.role_bindings
		binding.user == user
		role := binding.role
	}
}

allowed_actions := object.get(data.permissions, input.role, [])

is_owner if {
	input.resource.owner == input.user.id
}

# require at least one matching permission
authorized if {
	count(allowed_actions) > 0
	input.action in allowed_actions
}
nord
package rbac

user_roles[user] := roles if {
	some user
	roles := {role |
		some binding in data.role_bindings
		binding.user == user
		role := binding.role
	}
}

allowed_actions := object.get(data.permissions, input.role, [])

is_owner if {
	input.resource.owner == input.user.id
}

# require at least one matching permission
authorized if {
	count(allowed_actions) > 0
	input.action in allowed_actions
}
github
package rbac

user_roles[user] := roles if {
	some user
	roles := {role |
		some binding in data.role_bindings
		binding.user == user
		role := binding.role
	}
}

allowed_actions := object.get(data.permissions, input.role, [])

is_owner if {
	input.resource.owner == input.user.id
}

# require at least one matching permission
authorized if {
	count(allowed_actions) > 0
	input.action in allowed_actions
}