GH GambleHub

Плагинҳо ва миёнаравӣ дар Gateway API

1) Чаро ба шумо плагинҳо ва миёнаравӣ лозиманд

Дарвозаи API - нуқтаи татбиқи сиёсати корпоративӣ. Занҷири васлшудаи дуруст насбшуда:
  • стандартикунонии бехатарӣ (auth
  • устувориро муҳофизат мекунад (маҳдудияти суръат, схемаи барқ, сиёсати такрорӣ),
  • шартномаро идора мекунад (тасдиқи схемаҳо, дигаргуниҳо),
  • мушоҳидаҳоро медиҳад (ченакҳо, гузоришҳо, пайгирӣ),
  • Хароҷотро коҳиш медиҳад (кэш, такроркунӣ, қоидаҳои канарӣ)

Калид: таъхири ҳадди аққал ва мувофиқати дақиқи барнома.

2) Синфҳои плагин ва онҳо чӣ кор мекунанд

1. Шиносоӣ/Аутентификатсия

Провайдерҳои JWT/JWKS, OAuth2/OIDC, калидҳои API, MTLS (сертификати муштарӣ).
Имзоҳои HMAC (webhooks/шарикон), DP op/POP дар канор.

2. Авторизатсия

RBAC/ABAC/OPA/Сидар (PDP) бо кэши ҳалли маҳаллӣ.
BOLA-посбон: санҷиши 'иҷорагир '/' соҳиби' дар сарлавҳаҳо/контекст.

3. Ҳифзи шабака ва протокол

WAF (OWASP CRS), анти-ботҳо (суръат/рафтор), филтрҳои Geo/IP/ASN, профилҳои TLS.
CORS, сарлавҳаҳои CSP, филтрҳои Fetch-Metadata, CORP/COOP/COEP.

4. Устуворӣ

Маҳдудияти нархҳо (сатил токен/GCRA), квотаҳо ва рақобатпазирӣ.
Қатъи гардиш, танаффус, мувофиқати мутобиқшавӣ, рехтани сарборӣ.
Retry-сиёсат бо вақти танаффус ва jitter.

5. Тағирот ва тасдиқкунӣ

Path/Header Барӯйхатгирии аҳолӣ, аз нав сабт кардани бадан, JSON/XML ↔, GRPC ↔ HTTP.
Тасдиқи схема (Schema Schema/Protobuf), нормализатсияи ID.

6. Кэшинг ва иҷрои

Кэши вокуниш/фрагмент, ET bag/If-None-Match, фишурдасозӣ, brotli.
Барои ҳамон калидҳо пошхӯрии (муттаҳидшавӣ) дархост кунед.

7. Мушоҳида ва аудит

Андозагирии RED/USE, сабти қарорҳо (429/403/5xx), пайгирӣ (W3C Trace-Context/Open-Telemetry), интихоб (дум/мутобиқшавӣ).
Сарлавҳаҳои амнияти аудит ва версияҳои сиёсат.

8. Давраи зиндагӣ ва амалиёт

Канарӣ/кабуд-сабз, парчамҳои хусусият, ҳалли сояҳо (журнал, татбиқ намешавад), муҳоҷирати версия.

3) Тартиби татбиқ (занҷири тавсияшуда)


[Ingress TLS]
→ Early-Deny (ASN/Geo, IP allow/deny)
→ mTLS / Client Cert Auth
→ JWT/OAuth2 AuthN (JWKS cache)
→ OPA/ABAC AuthZ (solution cache)
→ Rate Limit / Concurrency
→ Circuit / Timeout / Retries (пер-try)
→ Schema Validation (request)
→ Transform (headers/path/body) / CORS
→ Caching (lookup)
→ Upstream Proxy (app)
← Caching (store) / Compression
← Response Transform / Schema Validation (response)
← Logging / Tracing / Metrics / Security Headers

Принсип: пештар - арзонтар/марговартар (инкор, аут, маҳдудиятҳо), баъдтар - "косметика" (табдилдиҳӣ, кэш).

4) Иҷро ва кардинализм

Қадамҳои O (1) -ро бидуни дархостҳои беруна дар роҳи гарм часпонед.
Ҳама плагинҳои "зангҳои беруна" (PDP/JWKS) тавассути TTL кӯтоҳ ва таровати асинхронӣ мебошанд.
Тамғакоғазҳо/тамғакоғазҳо барои ченакҳо - кардиналии маҳдуд ('иҷорагир', 'нақша', 'масир', аммо 'корбар _ ид').
Плагинҳои "вазнин" (WAF, тағирёбии бадан) - ба таври интихобӣ дар як масир имкон медиҳанд.

5) Намунаҳои конфигуратсия

5. 1 Фиристанда: JWT + Rate .Limit + OPA + Retris (псевдо)

yaml static_resources:
listeners:
- name: public_listener filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
route_config:
name: main virtual_hosts:
- name: api domains: ["api. example. com"]
routes:
- match: { prefix: "/v1/payments" }
route:
cluster: payments timeout: 350ms retry_policy:
retry_on: connect-failure,reset,5xx,gateways num_retries: 1 per_try_timeout: 200ms http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
providers:
oidc:
issuer: https://auth. example. com/
remote_jwks:
http_uri: { uri: https://auth. example. com/.well-known/jwks. json, cluster: jwks, timeout: 2s }
cache_duration: 300s forward: true
- name: envoy. filters. http. ext_authz  # OPA/Cedar PDP typed_config:
http_service:
server_uri: { uri: http://opa:8181, cluster: opa, timeout: 50ms }
authorization_request: { allowed_headers: { patterns: [{ exact: "authorization" }, { exact: "x-tenant" }] } }
- name: envoy. filters. http. ratelimit typed_config:
domain: public-api rate_limit_service:
grpc_service: { envoy_grpc: { cluster_name: rl } }
- name: envoy. filters. http. router

5. 2 NGINX/Кушодан: HMAC + Луа + Редис (псевдо)

nginx lua_shared_dict jwks 10m;
lua_shared_dict limits 10m;

server {
listen 443 ssl http2;

Early deny by ASN/Geo if ($bad_asn) { return 403; }

HMAC signature check (webhooks/partners)
set_by_lua_block $sig_ok {
return verify_hmac_signature(ngx. var. http_x_signature, ngx. var. request_time, ngx. var. request_body)
}
if ($sig_ok = 0) { return 401; }

Token bucket in Redis access_by_lua_block {
local key = ngx. var. binary_remote_addr.. ":".. ngx. var. request_uri local allowed, retry_after = ratelimit_allow(key, 50, 100)
if not allowed then ngx. header["Retry-After"] = retry_after return ngx. exit(429)
end
}

proxy_read_timeout 300ms;
proxy_connect_timeout 100ms;
proxy_pass http://app_backend;
}

5. 3 Конг: плагинҳо дар тӯли масир

yaml services:
- name: payments url: http://payments:8080 routes:
- service: payments paths: ["/v1/payments"]
plugins:
- name: jwt config: { key_claim_name: kid, secret_is_base64: false, run_on_preflight: false }
- name: opa config: { server_url: "http://opa:8181/v1/data/authz/allow", timeout: 50 }
- name: rate-limiting config: { second: 50, policy: redis, redis_host: redis, fault_tolerant: true }
- name: correlation-id config: { header_name: "traceparent" }
- name: response-transformer config: { add: { headers: ["Strict-Transport-Security:max-age=31536000"] } }

5. 4 Apache APISIX: JWT + Лимит + Прокси-Зеркало (соя)

yaml routes:
- uri: /v1/wallets/
plugins:
openid-connect:
client_id: wallet discovery: "https://auth. example. com/.well-known/openid-configuration"
scope: "openid"
limit-count:
count: 100 time_window: 60 key_type: "var"
key: "remote_addr"
proxy-mirror:          # shadow traffic host: "http://shadow-backend:8080"
upstream_id: 1

5. 5 Traefik: занҷири миёнаравӣ

yaml http:
middlewares:
hsts-headers:
headers:
stsSeconds: 31536000 stsIncludeSubdomains: true ratelimit:
rateLimit:
average: 50 burst: 100 routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1`)"
service: app middlewares:
- hsts-headers
- ratelimit

6) Версияҳои бисёрсоҳавӣ ва сиёсат

Калиди масир: '{иҷорагир, нақша, минтақа, масир, версияи}'.
Плагинҳо 'иҷорадиҳанда' -ро аз мӯҳри/сарлавҳа/JWT MTLS SAN/JWT мехонанд → маҳдудиятҳо/квотаҳо/қоидаҳоро ба иҷорагир татбиқ кунед.
Сиёсатҳои версия ('policy _ version'), тағирдиҳӣ ва канарейкаро ворид кунед.

7) Озмоиш ва иҷрои он

Пеш аз озод шудан

Санҷишҳои занҷираи шартномавӣ (агар-пас ҷадвал): auth → инкор, auth → иҷозат диҳед, меъёри → 429, схема → 422.
Боркунӣ: таркишҳо × 10, доманакӯҳҳои дароз, намунаҳои "ифлос" (суст-POST).
Бесарусомонӣ: таназзули PDP/JWKS/Redis - бояд то ҳадди аққал бехатар бошад.

Нашр

'Ҳисобот-танҳо '/режими сояҳо (қарорҳои сабти бе барнома).
Канария 1-5% трафик + муқоисаи метрӣ (p95/p99, 4xx/5xx/429).
Бозгашти худкор дар SLO/огоҳиҳо.

8) Мушоҳида ва ченакҳо

Нишондиҳандаҳо:
  • 'http _ дархостҳо _ total {масир, иҷорагир, нақша, мақом}'
  • 'request _ disteration _ seconds _ сатил {маршрут}' (p95/p99)
  • 'rate _ limited _ total {policy}', 'retry _ total {сабаб}', 'circuit _ state'
  • 'authn _ fail _ total {сабаб}', 'authz _ redied _ total {амал}'
  • 'schema _ validation _ fail _ total {маршрут}'
  • Нишонаҳо: фосила дар як филтр, атрибутҳои 'policy _ version', 'иҷорагир', 'limit _ key'.
  • Гузоришҳо (интихобшуда): ҳалли/429/5xx бо сабабҳо ва 'trace _ id'.
  • Панели панелҳо: Exec-хулоса, дар як масир, ба ҳар як иҷорагир, сиёсатмадорони "гарм".

9) Бехатарӣ ва амалиёт

Ҳама асрҳо (HMAC, JWKS хусусӣ, калидҳои API) - дар KMS/Vault, на дар файлҳои конфигуратсия.
Сиёсати пешфарз барои хатсайрҳои ҳассос.
Кэши кӯтоҳ TTL JWKS/PDP, навсозиҳои асинхронӣ бо бозгашт.
Муҳоҷирати схемаҳои трансформаторӣ - вертсия; "шикастан" - тавассути навиштани дугона.
Маҳдудияти андозаи бадан (DOS) ва умқи JSON.

10) Антипаттернҳо

Маҷмӯи универсалии ҳамаҷонибаи плагинҳо дар ҳар як масир → миллисекундҳо ва векселҳои иловагӣ.
Вобастагии берунаи плагинҳо бидуни кэш/танаффус → вақти танаффус.
Набудани тартиби филтр: аввал трансформатсия/мантиқ, баъд маҳдудиятҳо - нодуруст.
Кардиналии баланди тамғакоғазҳои метрикӣ (хом 'user _ id '/' ip').
Омезиши auth .N/auth-Z дар шакли трансформатсия (қарорҳои номуайян дар Lua/Jinja).
Сабти асрори/нишонаҳо.
Як Redis/кластери ҷаҳонӣ барои ҳама маҳдудиятҳо бидуни shardiness/reserve.

11) Хусусиятҳои IGaming/Finance

Қоидаҳои ҳар як иҷорагир/ба ҳар як қаламрав: KYC/AML, таҳримот, маҳдудиятҳои пардохтҳои масъул.
Сиёсати сахт барои хатсайрҳои пардохт: танаффуси кӯтоҳ, як такрор, аблаҳӣ ('Idempotency-Key').
Тақсим кардани периметрҳо барои PSP/KYC SDK (доменҳои алоҳида/занҷирҳои плагин).
Аудити сабтҳои тағйирнопазири қарор (хулоса, бастан, рад кардани санксия).

12) Рӯйхати санҷиши омодагии Prod

  • Тартиби филтр auth
  • Маҷмӯи плагинҳо дар як масир; вазнин - танҳо дар ҷойҳои зарурӣ.
  • JWKS/PDP бо TTL кӯтоҳ ва кэш; вақти истироҳат ва стратегияҳои бозгашт.
  • Нарх/Квота/Мувофиқат - калидҳо тарҳрезӣ шудаанд, нигоҳдории анбор.
  • Маҷмӯи метрикии RED/USE, пайгирии OTel el, интихоби дум/мутобиқшавӣ.
  • Ҳолати Canary + соя, худкор аз ҷониби SLO.
  • Асрҳо дар KMS/Vault; конфигуратсияҳо - санҷидашуда, бо муҳоҷират.
  • Маҳдудиятҳои бадан/сарлавҳаҳо; муҳофизати азим/суст-POST.
  • Ҳуҷҷатҳои муштариён: рамзҳои 401/403/409/422/429/5xx, 'Retry-After', сарлавҳаҳои мисол.

13) TL; ДР

Сохтани занҷири "нокомии барвақтӣ → аутентификатсия/авторизатсия → маҳдудиятҳо/пойдорӣ → § тасдиқи трансформатсия/кэш → телеметрия". Танҳо плагинҳои заруриро дар як масир, қарорҳои берунаи кэшро (JWKS/PDP) фаъол созед, вақтро таъин кунед ва сиёсатҳои такрорӣ, кардинализатсияи ченакҳоро назорат кунед. Озод кардан тавассути соя/канарӣ, сирри худро дар KMS/Vault нигоҳ доред ва таъсири ҳар як плагинро дар p95/p99 чен кунед.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.