API-kalitlar, tokenlar va kirish mandatlari: xavfsiz autentifikatsiya
Maqolaning to’liq matni
1) Nima uchun bularning barchasi: iGaming uchun tahdidlar modeli
Pul va PII: kalitni buzish → frod, oqish, jarimalar.
Tarmoq integratsiyasi: o’nlab tashqi provayderlar, turli hududlar/litsenziyalar.
Yuqori SLA stavkalari: oddiy yoki ikki baravar to’lov - obro "-e’tibor va yuridik xavflar.
Xulosa: autentifikatsiya va avtorizatsiya minimal imtiyozlar va qattiq kuzatish bilan «andoza xavfsiz» boʻlishi kerak.
2) Asboblar: arsenalimizda nima bor
API kalitlari: mijozning statik identifikatorlari. Integratsiya oson, sizib chiqish xavfi yuqori.
OAuth2 (Client Credentials): scope/audience bilan qisqa turdagi Bearer tokenlari.
mTLS: oʻzaro TLS tekshiruvi, mijozni kanalga kuchli bogʻlash.
HMAC/EdDSA imzo: so’rov tanasining kriptografik yaxlitligi va repleylardan himoya qilish (timestamp + nonce).
Proof-of-Possession: MTLS-bound tokenlari yoki DPoP (mijoz kaliti bilan HTTP soʻrovining imzosi).
JWT/PASETO: o’z-o’zidan yoziladigan tokenlar (tercihan qisqa TTL bilan).
RBAC/ABAC: avtorizatsiya/atribut-bayzd (ORA/siyosatchi yechimlari) roli.
Vaqtinchalik kirish mandatlari (delegation/STS): aniq stsenariy uchun beriladigan vaqt va maqsadlar bo’yicha cheklangan chiptalar.
3) Bazaviy prinsiplar («to’xtash belgilari»)
1. Least Privilege: har bir kalit/token uchun - eng kam huquqlar.
2. Short-lived by default: TTL daqiqalar bilan, kunlar bilan emas. Rotatsiya - avtomatik.
3. Bind to channel: tokenlarni mTLS/DPoP bilan bogʻlash → sizib chiqqanda foydasiz.
4. Per-brand/region: kalitlar/sertifikatlar va ruxsatnomalar - brend/litsenziya/mintaqa uchun.
5. Kodda No shared secrets: sirlar faqat Vault/HSM/KMS orqali, na Git/loglarda.
6. WORM-audit: barcha operatsiyalar/berishlar/rotatsiyalarning o’zgarmas loglari.
7. Write-yo’llardagi idempotentlik: bir xil kalitdagi har qanday takrorlash pulni ikkinchi marta o’zgartirmaydi.
4) Qachon foydalanish kerak (iGaming konteksti)
5) Kirish mandatlari dizayni (scopes, audience, shartlar)
Scope-lar (misollar):- `bets:write`, `settlements:write`, `wallet:credit`, `wallet:debit`, `rg:read`, `rg:enforce`, `jackpot:trigger`.
Audience: kimga joʻnatilgan token (masalan,’aud: wallet. api`).
Constraints (fine-grained):- `brand_id`, `region`, `ip/cidr`, `time_of_day`, `rate_limit`, `max_amount`.
- Tokenda (JWT claims) yoki Vault/STS’da yozilgan «mandatda» saqlanadi.
6) Etalon flolari
6. 1 RGS ⇄ platformasi: RPC bo’yicha pul
1. mTLS handshake (sertifikatlar per brand/region).
2. CC OAuth2: RGS’access _ token’ni oladi (TTL 2-5 min,’aud = wallet. api`, `scope=bets:write settlements:write`).
3. ’POST/v1/bets/authorize’ soʻrovi quyidagi sarlavhalar bilan:- `Authorization: Bearer `, `X-Idempotency-Key`, `X-Trace-Id`. 
- 4. Javob + WORM-auditdagi yozuv (kim/nima/qachon/qaerdan).
- 5. Tokenning rotatsiyasi uzluksiz, tugashi bilan - CC takrorlanishi.
6. 2 Vebxaki platformasi → provayder
Sarlavha’X-Signature: eddsa = 
Provayder tekshiradi: validlik oynasi (5 daqiqa ±), bir martalik’nonce’, jasad imzosi.
Agar mavjud bo’lmasa,’event _ id’bo’yicha dedup.
6. 3 Delegatsiya (jekpot-servis → hamyon)
JP STSni chaqiradi: «vaqtinchalik tokenni’wallet: credit’uchun’player _ id = p _...’, jami ≤ X, TTL 2 min».
STS siyosatni/limitlarni tekshiradi → mandat beradi (tor token).
JP ushbu token bilan hamyonni kreditlaydi. Bunday tokenni buzishning ma’nosi yo’q: qisqa TTL, tor huquqlar, mTLS bilan bog’lash.
7) So’rovlar konstruksiyalari
7. 1 Idempotentlik (majburiy)
POST /v1/bets/settle
Authorization: Bearer <MTLS-bound>
X-Idempotency-Key: settle_r_8c12_1
X-Trace-Id: tr_a1b2
{
"bet_id":"b_001",  "round_id":"r_8c12",  "win":{"amount":1460,"currency":"EUR"}
}
→ 200 { "status":"credited", "settlement_id":"st_77" }
(bir xil kalitli takrorlash → bir xil javob)7. 2 Vebxuk imzosi (HMAC)
X-Signature: sha256=BASE64(HMAC(secret, timestamp + "." + nonce + "." + body))
X-Timestamp: 1730000000
X-Nonce: 1f7a...8) Sirlar va kalitlarni boshqarish
Vault/HSM/KMS: ishlab chiqarish, saqlash, rotatsiya, chaqirib olish.
Per-muhit: sandbox/prod - turli xil ishonch ildizlari.
Per-brend/mintaqa: alohida kalitlar va sertifikatlar.
Avto-rotatsiya: cron/ogohlantirish; cheksiz almashtirish uchun overlap-davrlar.
Kodlar/loglarda taqiq: sirlar stdoutda yozilmaydi, crash-reportlarga kiritilmaydi.
Device/Workload identity: SPIFFE/SPIRE, K8s ServiceAccount → mTLS qoʻl sirisiz.
9) Avtorizatsiya siyosati (RBAC/ABAC) va OPA
RBAC: роли «rgs», «wallet», «jackpot», «reporting».
ABAC: qoidalar «agar’region = EU’va’brand = A’→ ruxsat’wallet: credit’≤ 10k».
OPA/REGO yoki analoglar: markazlashtirilgan qaror qabul qilish, siyosatni versiyalash, quruq testlar.
10) Kuzatuv va audit
Har bir soʻrov/hodisada’trace _ id’va’client _ id’orqali.
Metriklar: endpointlar bo’yicha p50/p95/p99 latency, kodlar bo’yicha error-rate (’AUTH _ FAILED’,’SCOPE _ DENIED’,’IDEMPOTENCY _ MISMATCH’), rotatsiyalar chastotasi, muddati o’tgan tokenlar ulushi.
WORM jurnali: tokenlarni berish/sharhlash, kalitlarni o’zgartirish, siyosatni o’zgartirish.
Alertlar:’AUTH _ FAILED’, geo/ASN bo’yicha anomaliyalar, o’sish «muddati o’tgan/chaqirib olingan»> chegara.
11) Mintaqaviy rezidentlik va segmentatsiya
Tokenlar/sertifikatlar mintaqaga bog’langan (EU/UK/BR/...).
«region» tamgʻalarida platforma shlyuzlari kross-mintaqaviy chaqiruvlarni taqiqlaydi.
Mintaqaga ajratilgan KMS va Vault-klaster; kalitlar mintaqalar o’rtasida «yurmaydi».
12) Hodisalar va chaqirib olish
Compromise playbook: kalitlar/tokenlarning tezkor revoke, tarmoq bloki/ASN, scope yopiladi.
«no new sessions/funds».
Postmortem: «qanday qilib», «nima uchun DLP/maxfiy skaner ishlamadi».
13) Chek-varaqlar
A. Platforma uchun
- Barcha write-yo’llar: mTLS + OAuth2 CC (TTL ≤ 5 daqiqa),’X-Idempotency-Key’,’X-Trace-Id’.
- Vebxuklar: HMAC/EdDSA + timestamp + nonce, dedup’event _ id’.
- Keystor: Vault/HSM/KMS, rotatsiya va sharh, per brand/region.
- ORA/siyosati: RBAC/ABAC, o’zgartirish jurnallari, testlar.
- WORM-audit va SLO-dashbordlar (latency, error, revoke/rotate).
- DR/xaoc mashqlari: eskirgan tokenlar, imzo almashtirish, mTLSsiz MITM.
B. Provayder uchun (RGS/live/JP)
- Men kodda sir saqlamayman; Vault/almashtirishni muhit oʻzgaruvchilari orqali ishlatyapman.
- Tokenlarning avto-rotatsiyasi; handle 401/403 yangilangan.
- Vebxukka imzo chekyapman/oynalarni va bir martalik oynalarni tekshiryapman.
- Men asosiy harakatlarni tekshiraman va Deprecation/Sunset sarlavhalariga javob beraman.
- Barcha write-qo’ng’iroqlarda idempotentlik,’Idempotency-Key’bo’yicha dedup.
14) Anti-patternlar (qizil bayroqlar)
Ishlab chiqarishda yaroqlilik muddatisiz statik API-kalitlar.
Kanalga ulanmagan Bearer-tokenlar (MTLS/DPoP mavjud emas).
Sirlarni Git/CI-log/konfiga frontendda saqlash.
Bir nechta brend/mintaqalar uchun umumiy kalit/sertifikat.
Imzosiz va vaqtinchalik oynasiz vebxuklar
Markazlashtirilgan sharh va WORM jurnalining yo’qligi.
Debetlar/kreditlar dublining yo’qligi.
15) Siyosatning mini-shablonlari (misol, o’qish mumkin bo’lgan)
Mandat’rgs → wallet’(EU, brand A):- `aud=wallet. api`, `scope=["bets:write","settlements:write"]`
- `constraints: region=EU, brand=A, ip in {asn:…}, max_amount=5000 EUR, ttl=300s`
- `binding: mTLS(cert_hash=sha256:…)`
- ’alg = Ed25519’,’± 300s’,’nonce’oynasi noyob, dedup’event _ id’24 soat.
iGaming-da xavfsiz autentifikatsiya - bu qisqa yashaydigan mandatlar, kanalga ulanish (mTLS/DPoP), tor scope/audience, qatʼiy idempotentlik, Vault/HSM va WORM-audit, mintaqaviy segmentatsiya va kuzatish kabi amaliyotlarning kombinatsiyasi. Bunday stek integratsiya tezligiga xalaqit bermaydi, lekin sizib chiqish va moliyaviy hodisalar xavfini tubdan kamaytiradi - pul va ma’lumotlar nazorat ostida qoladi, yangilanishlar oldindan aytib bo’lmaydigan darajada o’tadi, komplayens esa qutidan tayyorlanadi.
