एपीआई कुंजी, टोकन और साख - सुरक्षित प्रमाणीकरण
पूरा लेख
1) यह सब क्यों: iGaming के लिए खतरा मॉडल
पैसा और PII: प्रमुख समझौता - धोखाधड़ी, लीक, जुर्माना।
नेटवर्क एकीकरण: दर्जनों बाहरी प्रदाता, विभिन्न क्षेत्र/लाइसें
उच्च एसएलए दरें: सरल या दोहरा भुगतान - प्रतिष्ठित और कानूनी जोखिम।
निष्कर्ष: प्रमाणीकरण और प्राधिकरण न्यूनतम विशेषाधिकार और सख्त अवलोकन के साथ "डिफ़ॉल्ट रूप से सुरक्षित" होना चाहिए।
2) उपकरण: हमारे शस्त्रागार में क्या है
एपीआई कुंजी: स्थिर ग्राहक आईडी। आसान एकीकरण, लीक का उच्च जोखिम।
OAuth2 (क्लाइंट क्रेडेंशियल्स): गुंजाइश/दर्शकों के साथ अल्पकालिक वाहक टोकन।
एमटीएलएस: आपसी टीएलएस जांच, चैनल के लिए ग्राहक का मजबूत बाध्यकारी।
HMAC/EdDSA हस्ताक्षर: अनुरोध निकाय की क्रिप्टोग्राफिक अखंडता और रिप्ले (टाइमस्टैम्प + नॉन) के खिलाफ सुरक्षा।
प्रूफ-ऑफ-पोज़िशन: MTLS-बाउंड टोकन या DPoP (क्लाइंट कुंजी के साथ HTTP अनुरोध पर हस्ताक्षर)।
JWT/PASETO: स्व-वर्णन टोकन (अधिमानतः एक छोटे टीटीएल के साथ)।
RBAC/ABAC: भूमिका/विशेषता-आधार प्राधिकरण (OPA/नीतिगत निर्णय)।
प्रतिनिधिमंडल/एसटीएस: एक विशिष्ट परिदृश्य के लिए जारी किए गए समय और उद्देश्य-सीमित टिकट।
3) बुनियादी सिद्धांत ("स्टॉप संकेत")
1. कम से कम विशेषाधिकार: प्रत्येक कुंजी/टोकन के सबसे कम संभव अधिकार हैं।
2. डिफ़ॉल्ट रूप से अल्पकालिक: टीटीएल मिनट, दिन नहीं. घूर्णन स्वचालित है।
3. चैनल से बाइंड: mTLS/DPoP के लिए बाइंडिंग टोकन लीक होने पर बेकार है।
4. प्रति-ब्रांड/क्षेत्र: ब्रांड/लाइसेंस/क्षेत्र के लिए कुंजी/प्रमाणपत्र और अनुमतियाँ।
5. कोड में कोई साझा रहस्य नहीं: केवल वॉल्ट/एचएसएम/केएमएस के माध्यम से रहस्य, न ही गिट/लॉग में।
6. WORM ऑडिट: सभी ऑपरेशंस/इश्यू/रोटेशन के अपरिवर्तित लॉग।
7. राइट-पुट पर पहचान: एक ही कुंजी के साथ कोई भी पुनरावृत्ति दूसरी बार पैसा नहीं बदलती है।
4) कब उपयोग करना है (iGaming संदर्भ)
5) एक्सेस टिकट का डिजाइन (स्कोप, दर्शक, शर्तें)
स्कोप (उदाहरण):- 'बेट्स: राइट', 'सेटलमेंट्स: राइट', 'वॉलेट: क्रेडिट', 'वॉलेट: डेबिट', 'आरजी: रीड', 'आरजी: लागू करें', 'जैकपॉट: ट्रिगर'।
श्रोता: जिनके लिए टोकन को संबोधित किया जाता है (उदाहरण के लिए, 'aud: बटुआ। api ')।
बाधाएं (ठीक-ठाक):- 'ब्रैंड _ आईडी', 'क्षेत्र', 'आईपी/सीडर', 'टाइम _ ऑफ _ डे', 'रेट _ लिमिट', 'मैक्स _ राशि'।
- टोकन (JWT दावों) या वॉल्ट/STS में एक लिखित "जनादेश" में संग्रहीत।
6) संदर्भ प्रवाह
6. 1 आरजीएस ⇄ प्लेटफॉर्म: आरपीसी मनी
1. एमटीएलएस हैंडशेक (प्रति ब्रांड/क्षेत्र प्रमाणपत्र)।
2. OAuth2 सीसी: आरजीएस को 'एक्सेस _ टोकन' (टीटीएल 2-5 मिनट, 'aud = वॉलेट) मिलता है। एपी ',' स्कोप = दांव: बस्तियाँ लिखें: लिखें ')।
3. अनुरोध 'POST/v1/दांव/अधिकृत' with हेडर:- 'प्राधिकरण: वाहक <टोकन>', 'X-Idempotency-Key', 'X-Trace-Id'।
- 4. उत्तर + WORM ऑडिट (कौन/क्या/कब/कहां) को लिखें।
- 5. टोकन का रोटेशन सहज है, समाप्ति के बाद - सीसी दोहराएं।
6. 2 वेबहुक प्लेटफॉर्म - प्रदाता
शीर्षक 'X-Signation: eddsa = 
प्रदाता जांच: वैधता विंडो ( 5 मिनट), नॉनस, बॉडी सिग्नेचर।
यदि बैकऑफ के साथ अनुपलब्ध - पुनः प्राप्त करना है, 'घटना _ आईडी' द्वारा डीडअप करें।
6. 3 प्रतिनिधिमंडल (जैकपॉट सेवा → बटुआ)
जेपी एसटीएस को कॉल करता है: "'प्लेयर _ आईडी = p, sum X, TTL 2 मिनट के लिए' वॉलेट: क्रेडिट 'पर एक अस्थायी टोकन दें।"
एसटीएस नीति/सीमा - टिकट (संकीर्ण टोकन) जारी करता है।- जेपी इस टोकन के साथ एक बटुआ का श्रेय देता है। इस तरह के टोकन से समझौता करना व्यर्थ है: छोटा टीटीएल, संकीर्ण अधिकार, एमटीएलएस के लिए बाध्यकारी।
7) क्वेरी निर्माण
7. 1 पहचान (आवश्यक)
POST/v1/दांव/समझौता
प्राधिकरण: वाहक <MTLS-बाध्य>
X-Idempotency-Key: settle_r_8c12_1
एक्स-ट्रेस-आईडी: tr_a1b2
{
"" " " "जीत ": {"राशि ": 1460," मुद्रा":" ईयूआर"}
}
→ 200 {"स्थिति ": "श्रेय", "settlement_id":"st_77"}
(एक ही कुंजी के साथ दोहराएं - एक ही उत्तर)7. 2 वेबहुक हस्ताक्षर (HMAC)
एक्स-सिग्नेचर: sha256 = BASE64 (HMAC (गुप्त, टाइमस्टैम्प + "" + नॉन + "। + बॉडी))
एक्स-टाइमस्टैम्प: 1730000000
एक्स-नॉन: 1f7a...8) रहस्य और चाबियाँ प्रबंधित करें
वॉल्ट/एचएसएम/केएमएस: जनरेशन, स्टोरेज, रोटेशन, रिकॉल।
प्रति-पर्यावरण: सैंडबॉक्स/प्रोड - विश्वास की विभिन्न जड़ें।
प्रति-ब्रांड/क्षेत्र: व्यक्तिगत कुंजी और प्रमाणपत्र।
ऑटो-रोटेशन: क्रोन/अलर्ट; सहज प्रतिस्थापन के लिए ओवरलैप अवधि।
कोड/लॉग में निषेध: रहस्य को स्टडआउट करने के लिए नहीं लिखा जाता है, वे दुर्घटना रिपोर्ट में नहीं आते हैं।
उपकरण/कार्यभार पहचान: SPIFFE/SPIRE, K8s Service Servication → mTLS बिना मैनुअल रहस्य के।
9) प्राधिकरण नीतियां (आरबीएसी/एबीएसी) और ओपीए
RBAC: роли "rgs", "वॉलेट", "जैकपॉट", "रिपोर्टिंग"।
ABAC: "यदि 'region = EU' and 'brand = A' नियम - 'wallet: credit' 10k की अनुमति दें।"
OPA/REGO या एनालॉग्स: केंद्रीकृत निर्णय लेने, नीति संस्करण, शुष्क परीक्षण।
10) अवलोकन और लेखा परीक्षा
प्रत्येक अनुरोध/घटना में एंड-टू-एंड ट्रेस _ id और क्लाइंट _ id.
मेट्रिक्स: p50/p95/p99 एंडपॉइंट द्वारा विलंबता, कोड द्वारा त्रुटि-दर ('AUTH _ FELED', 'SCOPE _ DENED', 'IDEMOTENCY _ MIS'), रोटेक्स टोकन का हिस्ट।
WORM लॉग: टोकन मुद्दे/याद करता है, कुंजी परिवर्तन, नीति परिवर्तन।
अलर्ट: 'AUTH _ FELT' स्पाइक, जियो/ASN विसंगतियाँ, 'अतिदेय/वापस ले लिया' वृद्धि> सीमा।
11) क्षेत्रीय निवास और विभाजन
टोकन/प्रमाण पत्र क्षेत्र-विशिष्ट (ईयू/यूके/बीआर/...) हैं।- ब्रांडों में - 'क्षेत्र', प्लेटफ़ॉर्म गेटवे क्रॉस-रीजनल कॉल को प्रतिबंधित करते हैं।
- प्रति क्षेत्र केएमएस और वॉल्ट समूहों को अलग करें; क्षेत्रों के बीच कुंजियाँ "ड्राइव" नहीं करती
12) घटनाएँ और याद
समझौता प्लेबुक: तत्काल कुंजी/टोकन रेवोक, नेटवर्क ब्लॉक/एएसएन, स्कोप बंद करें।
गेटवे स्तर पर किल-स्विच: "कोई नया सत्र/धन नहीं।"
पोस्टमॉर्टम: "जैसा कि यह लॉग/रिपॉजिटरी में मिला", "डीएलपी/गुप्त स्कैनर ने काम क्यों नहीं किया।"
13) चेकलिस्ट
ए। प्लेटफॉर्म के लिए
- सभी लिखने के रास्ते: mTLS + OAuth2 CC (TTL ≤ 5 मिनट), 'X-Idempotency-Key', 'X-Trace-Id'।
- वेबहुक: HMAC/EdDSA + timestamp + nonce, 'event _ id' द्वारा dedup।
- कीस्टर: वॉल्ट/एचएसएम/केएमएस, रोटेशन और रिकॉल, प्रति ब्रांड/क्षेत्र विभाजित।
- ओपीए/नीतियां: आरबीएसी/एबीएसी, लॉग बदलें, परीक्षण करें।
- WORM ऑडिट और SLO डैशबोर्ड (विलंबता, त्रुटि, निरस्त/घूमना)।
- DR/xaoc शिक्षाएँ: समाप्त टोकन, सिग्नेचर स्पूफिंग, MITM बिना mTLS के।
प्रदाता के लिए बी (आरजीएस/लाइव/जेपी)
मैं कोड में रहस्य नहीं रखता। पर्यावरण चर के माध्यम से तिजोरी/प्रतिस्थापन का उपयोग करना।
- टोकन का ऑटो-रोटेशन; अपडेट के साथ 401/403 संभालें।
- वेबहुक साइन करें/वैधता विंडो और डिस्पोजेबिलिटी की जाँच करें।
- प्रमुख गतिविधियों का ऑडिट करें और मूल्यह्रास/सूर्यास्त की सुर्खियों का जवाब दें।
- सभी राइट कॉल पर आइडेम्पोटेंसी, 'आइडेम्पोटेंसी-की' द्वारा डीडअप।
14) एंटी-पैटर्न (लाल झंडे)
बिक्री में समाप्ति तिथि के बिना स्थिर एपीआई कुंजी।- बियर टोकन चैनल (कोई MTLS/DPoP) से बाध्यकारी किए बिना।
- Git/CI लॉग/फ्रंटेंड कॉन्फिग में रहस्यों का भंडारण।
- कई ब्रांडों/क्षेत्रों के लिए साझा कुंजी/प्रमाणपत्र
- एक हस्ताक्षर और एक समय खिड़की के बिना वेबहुक - पुनरावृत्ति।
- केंद्रीकृत प्रतिक्रिया और WORM लॉग की कमी।
- पहचान की कमी → डुप्लिकेट डेबिट/क्रेडिट।
15) मिनी पॉलिसी टेम्पलेट (उदाहरण, मानव पढ़ ने योग्य)
टिकट 'rgs→wallet' (ईयू, ब्रांड ए):- 'aud = बटुआ। एपी ', 'स्कोप = ["दांव: लिखें ", "बस्तियां: लिखें"]
- 'बधाई: क्षेत्र = ईयू, ब्रांड = ए, आईपी इन {asn:...}, max_amount=5000 EUR, ttl = 300'
- 'बाध्यकारी: mTLS (cert_hash=sha256:...)'
- 'alg = Ed25519', खिड़की '30', 'नॉन' अद्वितीय, दादा 'इवेंट _ id' 24 घंटे।
IGaming में सुरक्षित प्रमाणीकरण प्रथाओं का एक संयोजन है: अल्पकालिक जनादेश, चैनल बाइंडिंग (mTLS/DPoP), संकीर्ण दायरा/दर्शक, सख्त पहचान, तिजोरी/एचएसएम और वर्म ऑडिटिंग, क्मेंटेशन और अवलोबिलिटी। इस तरह के ढेर एकीकरण की गति में हस्तक्षेप नहीं करते हैं, लेकिन मौलिक रूप से लीक और वित्तीय घटनाओं के जोखिम को कम करते हैं - पैसा और डेटा नियंत्रण में रहते हैं, उन्नयन पूर्वानुमान योग्य हैं, और बॉक्स से अनुपालन किया जाता है।
