Open Policy Agent
본문
OPA
Traefik Hub 기능
이 미들웨어는 Traefik Hub에서만 사용할 수 있어요. Traefik Hub의 고급 기능에 대해 더 알아보세요.
Traefik Hub에는 서비스에 대한 접근을 제한할 수 있는 Open Policy Agent 미들웨어가 포함되어 있어요. 또한 정책에서 추출한 데이터로 요청 헤더를 풍부하게 만들 수도 있습니다. OPA 미들웨어는 OPA 에이전트로 동작합니다.
OPA 버전
이 미들웨어는 Rego v0 호환 문법을 갖춘 OPA v1.x를 사용합니다. Rego v0 스타일로 작성된 정책(예: if 키워드가 없는 allow { ... })은 완전히 지원됩니다.
구성 예시
특정 JWT 클레임이 있는 요청 허용
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: opa-allow-jwt-claim
namespace: apps
spec:
plugin:
opa:
policy: |
package example.policies
allow {
[_, encoded] := split(input.headers.Authorization, " ")
[header, payload, signature] = io.jwt.decode(encoded)
payload["email"] == "[email protected]"
}
forwardHeaders:
Group: data.package.grp
JSON Accept Header가 있는 요청 거부
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: opa-deny-json
namespace: apps
spec:
plugin:
opa:
policy: |
package example.policies
default allow = false
json_content {
input.headers["Accept"] == "application/json"
}
allow {
not json_content
}
allow: data.example.policies.allow
구성 옵션
| Field | Description | Default | Required |
| policy | 정책 파일의 경로 또는 내용. | "" | No (policy 또는 bundlePath 중 하나는 반드시 설정) |
| bundlePath | bundlePath 옵션은 OPA 번들의 경로를 담아야 해요. | "" | No (policy 또는 bundlePath 중 하나는 반드시 설정) |
| allow | allow 옵션은 요청이 승인되어야 하는지 결정하는 평가할 표현식을 설정해요. | "" | No (allow 또는 forwardHeaders 중 하나는 반드시 설정) |
| forwardHeaders | forwardHeaders 옵션은 요청에 추가할 HTTP 헤더를 설정하고, 주어진 표현식의 결과로 채웁니다. | {} | No (allow 또는 forwardHeaders 중 하나는 반드시 설정) |
Traefik OSS를 프로덕션에서 사용하시나요?
직장에서 Traefik을 사용한다면, 엔터프라이즈급 API 게이트웨이 기능이나 Traefik OSS 상용 지원을 추가하는 것을 고려해 보세요.
-
API Gateway 데모 영상 보기
-
24/7/365 OSS 지원 요청
Traefik OSS에 API 게이트웨이 기능을 추가하는 것은 빠르고 매끄러워요. 기존 구성을 교체하거나(rip and replace) 버릴 필요 없이 그대로 유지됩니다. 짧은 영상으로 직접 확인해 보세요.