GH GambleHub

गेटवे एपीआई में प्लगइन और मिडिलवेयर

1) आपको प्लगइन और मिडिलवेयर की आवश्यकता क्यों है

एपीआई गेटवे - कॉर्पोरेट नीतियों के प्रवर्तन का एक बिंदु। सही ढंग से इकट्ठा प्लगइन श्रृंखला:
  • सुरक्षा को मानकीकृत करता है (authN/authZ, WAF, CORS),
  • स्थिरता (दर सीमा, सर्किट ब्रेकर, रीट्री-नीतियों) की रक्षा करता है,
  • अनुबंध का प्रबंधन करता है (योजनाओं, परिवर्तनों का सत्यापन),
  • अवलोकन (मैट्रिक्स, लॉग, ट्रेसिंग) देता है,
  • लागत कम करता है (कैशिंग, डीडुप्लिकेशन, कैनरी नियम)

कुंजी: न्यूनतम विलंबता और स्पष्ट अनुप्रयोग स्थिरता।

2) प्लगइन कक्षाएं और वे क्या करते हैं

1. पहचान/सत्यापन

JWT/JWKS प्रदाता, OAuth2/OIDC, API कुंजी, mTLS (क्लाइंट सर्टिफिकेट)।

HMAC हस्ताक्षर (वेबहूक/भागीदार), किनारे पर DPoP/PoP।

2. प्राधिकरण

स्थानीय समाधान कैश के साथ RBAC/ABAC/OPA/Cedar (PDP)।

बोला-गार्ड: हेडर/संदर्भ में 'किरायेदार '/' मालिक' की जाँच।

3. नेटवर्क और प्रोटोकॉल सुरक्षा

WAF (OWASP CRS), एंटी-बॉट्स (दर/व्यवहार), जियो/IP/ASN फिल्टर, TLS प्रोफाइल।

CORS, CSP हेडर, Fetch-Metadata फ़िल्टर, CORP/COP/COEP।

4. स्थिरता

दर सीमित (टोकन बाल्टी/जीसीआरए), कोटा और प्रतिस्पर्धा।

सर्किट ब्रेकर, टाइमआउट, अनुकूली संगति, लोड शेडिंग।

प्रति-टाइमआउट और जिटर के साथ पुन: प्रयास-नीति।

5. परिवर्तन और मान्यता

पथ/हेडर जनगणना, शरीर-पुनर्लेखन, JSON/XML ↔, gRPC ↔ HTTP।

स्कीमा सत्यापन (OpenAPI/JSON स्कीमा/Protobuf), आईडी सामान्यीकरण।

6. कैचिंग और प्रदर्शन

प्रतिक्रिया/टुकड़ाकैश, ईटीएजी/इफ-नो-मैच, संपीड़न, ब्रोटली।

समान कुंजी के लिए ढहने (colessing) का अनुरोध करें।

7. अवलोकन और लेखा परीक्षा

RED/USE मेट्रिक्स, निर्णय लॉगिंग (429/403/5xx), ट्रेसिंग (W3C ट्रेस-संदर्भ/ओपनटेलीमेट्री), नमूना (पूंछ/अनुकूली)।

ऑडिट सुरक्षा हेडर और नीति संस्करण।

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) प्रदर्शन और कार्डिनैलिटी

गर्म सड़ क पर बाहरी अनुरोधों के बिना ओ (1) चरणों से चिपके रहें।

सभी प्लगइन "बाहरी कॉल" (PDP/JWKS) शॉर्ट TTL और अतुल्यकालिक रिफ्रेश के माध्यम से होते हैं।

मेट्रिक्स के लिए लेबल/लेबल - सीमित कार्डिनैलिटी ('किरायेदार', 'योजना', 'मार्ग', लेकिन 'उपयोगकर्ता _ आईडी' नहीं)।

"हेवी" प्लगइन (WAF, बॉडी-ट्रांसफॉर्म) - चुनिंदा रूप से प्रति-रूट सक्षम करें।

5) कॉन्फ़िगरेशन उदाहरण

5. 1 दूत: JWT + रेटलिमिट + OPA + रिट्रीज़ (छद्म)

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/OpenResty: HMAC + Lua + Redis (छद्म)

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 अपाचे 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 ट्रेफिक: मिडिलवेयर श्रृंखला

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) बहु-किरायेदारी और नीति संस्करण

रूटिंग कुंजी: '{किरायेदार, योजना, क्षेत्र, मार्ग, संस्करण}'.

प्लगइन्स ने mTLS SAN/JWT स्टैम्प/हेडर से 'किरायेदार' पढ़ा - किरायेदार के लिए सीमा/कोटा/नियम लागू करें।

संस्करण नीतियां ('नीति _ संस्करण'), चेंजलॉग और कैनरी रोलआउट दर्ज करें।

7) परीक्षण और रोलआउट

रिलीज से पहले

अनुबंध श्रृंखला परीक्षण (यदि-तब तालिका): , , , , ।

लोडिंग: फटता है × 10, लंबे पठार, "गंदे" पैटर्न (धीमी गति से POST)।

अराजकता: पीडीपी/जेडब्ल्यूकेएस/रेडिस गिरावट - न्यूनतम सुरक्षित होने के लिए विफल-बंद/गिरावट होनी चाहिए।

रिलीज़

'रिपोर्ट केवल '/छाया-मोड (अनुप्रयोग के बिना लॉग समाधान)।

कैनरी 1-5% ट्रैफिक + मीट्रिक तुलना (p95/p99, 4xx/5xx/429)।

एसएलओ/अलर्ट पर स्वचालित रोलबैक।

8) अवलोकन और मैट्रिक्स

मेट्रिक्स:
  • 'http _ requests _ कुल {मार्ग, किरायेदार, योजना, स्थिति}'
  • 'रीक्वेस्ट _ अवधि _ सेकंड _ बकेट {रूट}' (p95/p99)
  • 'rate _ limited _ totle {police}', 'retry _ total {court}', 'सर्किट _ state'
  • 'authn _ fail _ कुल {कारण}', 'authz _ dened _ total {action}'
  • 'schema _ validation _ fail _ कुल {route}'
  • ट्रेस: स्पैन प्रति-फ़िल्टर, गुणधर्म 'नीति _ संस्करण', 'किरायेदार', 'सीमा _ कुंजी'.
  • लॉग (नमूना): कारणों और 'ट्रेस _ आईडी' के साथ इनकार/429/5xx समाधान।
  • डैशबोर्ड: एक्सेक-सारांश, प्रति-मार्ग, प्रति-किरायेदार, "हॉट" राजनेता।

9) सुरक्षा और संचालन

सभी रहस्य (HMAC, JWKS प्राइवेट, API कुंजी) - KMS/वॉल्ट में, कॉन्फ़िग फ़ाइलों में नहीं।

संवेदनशील मार्गों के लिए इनकार-दर-डिफ़ॉल्ट नीति।

लघु TTL JWKS/PDP कैश, बैकऑफ के साथ अतुल्यकालिक अपडेट।

परिवर्तन योजनाओं का प्रवास - वर्जित; "ब्रेकिंग" - डुअल-राइट के माध्यम से।

बॉडी-साइज़ (डॉस) और JSON गहराई को सीमित करें।

10) एंटीपैटर्न

प्रत्येक मार्ग पर प्लगइन का एक सार्वभौमिक सर्व-समावेशी सेट → अतिरिक्त मिलीसेकंड और बिल।

कैश/टाइमआउट के बिना प्लगइन की बाहरी निर्भरता → कैस्केडिंग टाइमआउट।

फ़िल्टर क्रम की कमी: पहला परिवर्तन/तर्क, फिर सीमाएँ - गलत।

मीट्रिक लेबल की उच्च कार्डिनैलिटी (कच्चा 'user _ id '/' ip')।

परिवर्तन पैटर्न (लुआ/जिंजा में अंतर्निहित समाधान) में AuthN/authZ का मिश्रण।

लॉगिंग रहस्य/टोकन।

बिना शर्त/आरक्षित के सभी सीमाओं के लिए एक वैश्विक रेडिस/क्लस्टर।

11) आईगेमिंग/वित्त की विशिष्टताएं

प्रति किरायेदार/प्रति अधिकार क्षेत्र नियम: केवाईसी/एएमएल, प्रतिबंध, जिम्मेदार भुगतान की सीमाएं।

भुगतान मार्गों के लिए कठिन नीतियां: शॉर्ट टाइमआउट, एक रिपीट, आइडेम्पोटेंसी ('आइडेम्पोटेंसी-की')।

PSP/KYC SDK (अलग डोमेन/प्लगइन चेन) के लिए विभाजन परिधि।

अपरिवर्तनीय निर्णय लॉग का लेखा परीक्षा (निष्कर्ष, अवरुद्ध, मंजूरी से इनकार)।

12) प्रोड रेडीनेस चेकलिस्ट

  • फ़िल्टर ऑर्डर authN → authZ → लिमिट है → सर्किट/टाइमआउट → स्कीमा → ट्रांसफ़ॉर्म → कैश।
  • प्लगइन का प्रति मार्ग सेट; भारी - केवल जहाँ आवश्यक हो।
  • छोटे TTL और कैश के साथ JWKS/PDP; टाइमआउट और फॉलबैक रणनीतियाँ।
  • दर/कोटा/समवर्ती कुंजियां डिजाइन की गई हैं, भंडारण शार्डिंग।
  • RED/USE मीट्रिक सेट, OTel ट्रेसिंग, पूंछ/अनुकूली नमूना।
  • कैनरी + छाया मोड, एसएलओ द्वारा ऑटो-रोलबैक।
  • केएमएस/तिजोरी में रहस्य; configs - versioned, माइग्रेशन के साथ।
  • शरीर/हेडर सीमा; ओवरसाइज ़/धीमी गति से पोस्ट सुरक्षा।
  • ग्राहक प्रलेखन: कोड 401/403/409/422/429/5xx, 'रेट्री-आफ्टर', उदाहरण हेडर।

13) टीएल; डीआर

एक "प्रारंभिक विफलता → सत्यापन/प्राधिकरण → सीमा/दृढ़ता → → परिवर्तन सत्यापन/कैश → टेलीमेट्री" श्रृंखला का निर्माण करें। केवल आवश्यक प्लगइन प्रति-मार्ग, कैश बाहरी समाधान (JWKS/PDP) सक्षम करें, टाइमआउट सेट करें और नीतियों को फिर से आज़माएं, मेट्रिक्स की कार्डिनैलिटी को नियंत्रित करें। छाया/कैनरी के माध्यम से जारी करें, केएमएस/वॉल्ट में रहस्य रखें और p95/p99 पर प्रत्येक प्लगइन के प्रभाव को मापें।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।