Skip to content
This repository has been archived by the owner on Aug 11, 2023. It is now read-only.

edgeflare/traefik-opa-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Traefik-OPA-Proxy

Traefik forwardAuth middleware interprets 2xx response code from the auth service as an "authorization successful". Otherwise, the response from the authentication server is returned.

Open Policy Agent (OPA) returns a 200 OK with the payload {"allow": false} for "authorization failed", meaning Traefik always allows client's requests even if they should be blocked.

This traefik-opa-proxy translates OPA's decisions into HTTP status codes: a 403 Forbidden for {"allow": false} and a 200 OK for {"allow": true}. Use this service with Traefik forwardAuth middleware instead of connecting directly to OPA. The payload sent from Traefik to OPA matches the format expected by the OPA-Envoy plugin, so the same policies should work with Envoy based proxies, e.g., Istio and Gloo without modification.

UPDATE: This repo is archived in favor of https://github.com/edgeflare/traefikopa. It can be useful when Traefik installation can't be modified with plugin or you don't need, for example, request body for OPA policy evaluation.

Test locally

Start the proxy in a terminal window

go mod tidy
OPA_URL=http://localhost:8181/v1/data/httpapi/authz go run .

In another terminal start opa

opa run --server --log-level=debug --bundle ./example

In a third terminal make a few HTTP requests. The responses should conform to demo authorization policy

curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8182
# 403
curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8182/allowed
# 200
curl -o /dev/null -s -w "%{http_code}\n" http://localhost:8182/allowed -X POST
# 403

Test on Kubernetes

opa build example/demo-authz.rego
kubectl -n kube-system create configmap demo-authz-policy --from-file=bundle.tar.gz
kubectl apply -f ./example

See example directory for more.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published