
Обратный прокси с нулевым доверием и шлюз авторизации ABAC на Go со встроенной оценкой политик OPA и распределённым отзывом токенов.
Высокопроизводительный обратный прокси и шлюз авторизации с архитектурой нулевого доверия, написанный на Go со встроенным движком Open Policy Agent (OPA), задержкой принятия решений менее 5 мс, распределённым отзывом токенов в реальном времени через Redis Pub/Sub и криптографически защищённым от подделки журналом аудита.
Современные облачно-нативные и мультитенантные платформы требуют парадигм авторизации, значительно более гранулярных, чем статическое управление доступом на основе ролей (RBAC). В средах с высокими требованиями к безопасности авторизация должна динамически синтезировать, кто является запрашивающей стороной (Субъект), какое действие он намеревается выполнить (Действие), какой класс данных применяется (Ресурс) и какой операционный контекст действует в реальном времени (Среда).
Корпоративный шлюз мелкогранулярного ABAC выступает в роли централизованной точки применения политик (PEP) и точки принятия решений по политикам (PDP), стоя перед внутренними микросервисами. Разработанный в соответствии с NIST SP 800-162 (ABAC), NIST SP 800-207 (архитектура нулевого доверия) и RFC 7519 (JSON Web Tokens), он устраняет задержку авторизации за счёт компиляции политик Rego непосредственно в адресное пространство процесса Go, избегая межпроцессных сетевых переходов при сохранении распределённой согласованности между экземплярами кластера.
ALLOW / DENY) записывается в хеш-цепочку SHA-256, доступную только для добавления ($\text{Hash}n = \text{SHA-256}(\text{Hash}{n-1} + \text{Snapshot}_n)$), и асинхронно сохраняется в PostgreSQL для аудиторских журналов SOC 2 Type II и ISO 27001.Шлюз разделён на плоскость данных со сверхнизкой задержкой (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