
Go로 구현된 제로 트러스트 리버스 프록시 및 ABAC 인가 게이트웨이로, 내장된 OPA 정책 평가와 분산 토큰 폐기를 지원합니다.
Go로 구축된 고성능 제로 트러스트 리버스 프록시 및 인가 게이트웨이로, 내장된 Open Policy Agent(OPA) 엔진, 5ms 미만의 결정 지연 시간, Redis Pub/Sub을 통한 실시간 분산 토큰 폐기, 그리고 암호학적으로 변조 방지가 가능한 감사 로깅을 제공합니다.
현대의 클라우드 네이티브 및 멀티테넌트 플랫폼은 정적 역할 기반 접근 제어(RBAC)보다 훨씬 세밀한 인가 패러다임을 요구합니다. 고신뢰 환경에서는 인가가 요청자가 누구인지(주체), 수행하려는 작업이 무엇인지(행위), 어떤 데이터 분류가 적용되는지(리소스), 그리고 실시간 운영 컨텍스트(환경)를 동적으로 종합해야 합니다.
엔터프라이즈 세밀한 ABAC 게이트웨이는 백엔드 마이크로서비스를 앞단에서 보호하는 중앙 집중식 정책 시행 지점(PEP) 및 정책 결정 지점(PDP) 역할을 합니다. NIST SP 800-162(ABAC), NIST SP 800-207(제로 트러스트 아키텍처), RFC 7519(JSON 웹 토큰)을 준수하도록 설계되었으며, Rego 정책을 Go 프로세스 메모리 공간에 직접 컴파일하여 프로세스 외부 네트워크 홉을 피하면서도 클러스터 인스턴스 간 분산 일관성을 유지함으로써 인가 지연 시간을 제거합니다.
ALLOW / DENY)는 추가 전용 SHA-256 해시 체인($\text{Hash}n = \text{SHA-256}(\text{Hash}{n-1} + \text{Snapshot}_n)$)에 기록되어 SOC 2 Type II 및 ISO 27001 감사 추적을 위해 PostgreSQL에 비동기적으로 영속화됩니다.게이트웨이는 초저지연 데이터 플레인(HTTP 리버스 프록시 및 인메모리 PDP), 격리된 컨트롤 플레인(정책 및 폐기 관리를 위한 Admin API), 그리고 복원력 있는 상태 및 영속성 계층(Redis 7 및 PostgreSQL 16)으로 분할됩니다.

그림 1: Archify로 생성된 고수준 시스템 아키텍처 다이어그램.
👉 🔍 대화형 Archify 다이어그램을 열려면 여기를 클릭하세요 (다크/라이트 테마, 클릭 가능한 노드, 심층 컴포넌트 검사 지원)
graph TD
subgraph Clients["Perimeter & External Consumers"]
ClientApp["Client Applications (SPA / Mobile / Microservices)"]
SecOps["SecOps & Admin Console"]
end
subgraph DataPlane["Enterprise Zero-Trust Gateway (:8080)"]
direction TB
AuthMid["Auth Middleware (JWT, JTI, Leeway)"]
PEP["ABAC Interceptor (PEP Gate)"]
Resolver["Attribute Resolver (S, A, R, E)"]
OPA["Embedded OPA Engine (Rego Runtime)"]
Proxy["Reverse Proxy (httputil)"]
PubSubLis["PubSub Invalidation Listener"]
AuditLog["Non-Blocking Audit Logger"]
HashChain["SHA-256 Cryptographic Chainer"]
end
subgraph ControlPlane["Control Plane (:8082)"]
AdminAPI["Admin API (Revocations & Health)"]
end
subgraph StateTier["Distributed State & Persistence"]
Redis["Redis 7 (Vector Cache & Blacklist :6380)"]
Postgres["PostgreSQL 16 (Ledger & Tenant DB :5433)"]
end
subgraph UpstreamTier["Target Services"]
Upstream["Protected Upstream API (:8081)"]
end
ClientApp -->|"HTTPS + Bearer JWT"| AuthMid
SecOps -->|"Admin Key Auth"| AdminAPI
AdminAPI -->|"Publish JTI Revocation"| Redis
Redis -.->|"Pub/Sub Channel (<=100ms)"| PubSubLis
PubSubLis -->|"Invalidate Local LRU"| AuthMid
AuthMid -->|"Verified Identity Claims"| PEP
PEP -->|"Build Evaluation Context"| Resolver
Resolver -.->|"Query Vectors"| Redis
Resolver -->|"Vector (S, A, R, E)"| OPA
OPA -->|"ALLOW / DENY (<5ms SLA)"| PEP
PEP -->|"Authorized Traffic"| Proxy
Proxy -->|"Reverse Proxy Forward"| Upstream
PEP -.->|"Async Decision Record"| AuditLog
AuditLog -->|"Hash Chain Generation"| HashChain
HashChain -->|"Append-Only Immutable Write"| Postgres
| 컴포넌트 | 계층 | 설명 | 보안 및 신뢰성 보장 |
|---|---|---|---|
인증 미들웨어 (proxy/auth_middleware.go) | 경계 수신 | HMAC 서명된 JWT 토큰을 검증하고, 발급자/대상자를 확인하며, 클록 스큐 허용 오차($\pm 30\text{s}$)를 적용하고, 로컬 JTI 블랙리스트를 확인합니다. | 정책 실행이 시작되기 전에 경계에서 만료되었거나, 변조되었거나, 블랙리스트에 등록된 토큰을 거부합니다. |
ABAC 인터셉터 (proxy/abac_interceptor.go) | 적용 (PEP) | HTTP 요청을 가로채고, 속성 해석과 정책 평가를 조정하며, 전달할지 또는 폐쇄적으로 실패할지 결정합니다. | 기본 거부(default-deny) 의미론을 적용합니다. 보안 감사 가능성을 위해 모든 거부 사유를 포착하고 기록합니다. |
속성 해석기 (engine/resolver.go) | 컨텍스트 보강 | JWT 클레임, URI 매개변수, 캐시된 테넌트 메타데이터를 결합하여 네 가지 평가 벡터($S, A, R, E$)를 합성합니다. | 인메모리 조회를 통해 권한 부여 핫 패스에서 SQL 쿼리 차단을 방지합니다. |
내장 OPA 엔진 (engine/opa.go) | 결정 (PDP) | 사전 컴파일된 Rego 정책(rbac_fallback.rego 및 abac_enterprise.rego)을 실행하는 인프로세스 Open Policy Agent 평가기입니다. | 엄격한 $\le 5.0\text{ms}$ p99 지연 시간 SLA로 복잡한 다중 속성 규칙을 메모리에서 평가합니다. |
리버스 프록시 (proxy/reverse_proxy.go) | 데이터 플레인 전달자 | 승인된 요청을 대상 백엔드 마이크로서비스로 전달하는 고처리량 Go 리버스 프록시입니다. | 업스트림 헤더를 보존하고, 인증된 주체 컨텍스트를 주입하며, 응답을 스트리밍합니다. |
PubSub 리스너 (cache/pubsub_listener.go) | 무효화 동기화 | Redis abac:v1:invalidate 채널을 구독하여 토큰 및 정책 변경 사항을 인메모리 캐시에 전파합니다. | 모든 게이트웨이 복제본에 걸쳐 $\le 100\text{ms}$ 이내에 분산 캐시 무효화를 보장합니다. |
감사 로거 및 체이너 (audit/logger.go) | 감사 파이프라인 | 모든 결정에 대해 연속적인 SHA-256 해시 체인을 계산하는 제한된 비동기 워커 풀입니다. | 비차단 링 버퍼는 정상 부하에서 이벤트 손실이 없도록 보장하면서 감사 쓰기가 프록시 트래픽을 지연시키지 않도록 합니다. |
관리 API (cmd/admin_api) | 제어 플레인 | 긴급 토큰 폐기(POST /admin/revoke) 및 상태 모니터링을 위한 포트 8082의 전용 관리 서비스입니다. | 엄격한 정적 관리자 자격 증명(ABAC_ADMIN_KEY)으로 인증되며, 공용 데이터 플레인 트래픽과 격리됩니다. |
모든 인바운드 요청은 세 단계 파이프라인을 통과합니다: 수신 및 토큰 검증, 인메모리 속성 해석 및 정책 결정, 승인된 프록싱 및 암호화 감사 로깅.

그림 2: Archify로 생성된 엔드투엔드 요청 수명 주기 및 정책 결정 파이프라인.
👉 🔍 대화형 Archify 워크플로를 열려면 여기를 클릭하세요
sequenceDiagram
autonumber
actor Client as Client App
participant PEP as Gateway PEP (:8080)
participant Auth as Auth Middleware
participant Cache as Redis 7 Cache
participant Resolver as Attribute Resolver
participant OPA as Embedded OPA
participant Upstream as Target Upstream (:8081)
participant Audit as Async Audit Logger
participant DB as PostgreSQL 16