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

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

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

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

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

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

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