API açarlary, bellikleri we giriş mandatlary: Ygtybarly tassyklama
Makalanyň doly teksti
1) Näme üçin bularyň hemmesi: iGaming üçin howp modeli
Pul we PII: açar → frod, syzmak, jerimeler.
Tor integrasiýasy: daşary ýurt üpjün edijileriniň onlarçasy, dürli sebitler/ygtyýarnamalar.
SLA-nyň ýokary nyrhlary: ýönekeý ýa-da goşa töleg - abraýly we kanuny töwekgelçilikler.
Netije: Autentification and authorization minimal artykmaçlyklar we berk gözegçilik bilen "standart taýdan howpsuz" bolmaly.
2) Gurallar: arsenalymyzda näme bar
API-açarlar: müşderiniň statiki kesgitleýjileri. Integrasiýa ýönekeý, syzmak howpy ýokary.
OAuth2 (Client Credentials): scope/audience-den gysga ömürli Bearer bellikleri.
mTLS: özara TLS barlagy, müşderiniň kanal bilen berk baglanyşygy.
HMAC/EdDSA gollar: haýyşnamanyň bedeniniň kriptografiki bitewiligi we repleýlerden goragy (timestamp + nonce).
Proof-of-Possession: MTLS-bound tokenleri ýa-da DPoP (müşderiniň açary bilen HTTP-haýyşyň goly).
JWT/PASETO: öz-özüni ýazýan bellikler (has gowusy gysga TTL bilen).
RBAC/ABAC: roly/atribut-baýzd awtorizasiýa (ORA/syýasatçy çözgütleri).
Wagtlaýyn giriş mandatlary (delegation/STS): belli bir ssenariýa berlen, wagt we maksatlar boýunça çäkli biletler.
3) Esasy ýörelgeler ("duruş belgileri")
1. Least Privilege: her bir açar/belgi üçin - mümkin bolan iň az hukuklar.
2. Short-lived by default: TTL minutlar bilen, günler bilen däl. Aýlanyş - awtomatiki.
3. Bind to channel: mTLS/DPoP → jübütleri syzdyrylanda peýdasyz.
4. Per-brand/region: açarlar/şahadatnamalar we rugsatlar - marka/ygtyýarnama/region üçin.
5. Kodda No shared secrets: syrlar diňe Vault/HSM/KMS arkaly, ne Git/loglarda.
6. WORM-audit: ähli amallaryň/berişleriň/rotasiýalaryň üýtgemeýän ýazgylary.
7. Write-ýollarda duýgurlyk: şol bir açary bolan islendik gaýtalamak puly ikinji gezek üýtgetmeýär.
4) Näme ulanmaly (iGaming-kontekst)
5) Giriş mandatlarynyň dizaýny (skopes, audience, şertler)
Skoplar (mysallar):- `bets:write`, `settlements:write`, `wallet:credit`, `wallet:debit`, `rg:read`, `rg:enforce`, `jackpot:trigger`.
Audience: kime ýüzlenildi (mysal üçin 'aud: wallet. api`).
Constraints (fine-grained):- `brand_id`, `region`, `ip/cidr`, `time_of_day`, `rate_limit`, `max_amount`.
- Bellikde (JWT claims) ýa-da Vault/STS-de ýazylan "mandatda" saklanylýar.
6) Salgylanma ýüzi
6. 1 Platforma ⇄ RGS: RPC boýunça pul
1. mTLS handshake (sertifikatlar per brand/region).
2. OAuth2 CC: RGS 'access _ token' (TTL 2-5 min, 'aud = wallet. api`, `scope=bets:write settlements:write`).
3. 'POST/v1/bets/authorize' sözbaşy:- `Authorization: Bearer `, `X-Idempotency-Key`, `X-Trace-Id`. 
- 4. Jogap + WORM-audit ýazgysy (kim/näme/haçan/nireden).
- 5. Tokeniň aýlawy üznüksiz, gutarandan soň - CC gaýtalanýar.
6. 2 Webhook platforma → üpjün ediji
'X-Signature: eddsa = 
Üpjün ediji barlaýar: tassyklama penjiresi (5 minutdan ±), bir gezeklik 'nonce', jesediň goly.
Elýeterli bolmadyk ýagdaýynda - "c backoff", "event _ id".
6. 3 Delegasiýa (jekpot hyzmaty → gapjyk)
JP STS-i çagyrýar: 'wallet: credit' -de 'player _ id = p _...', jemi ≤ X, TTL 2 min ".
STS syýasaty/çäkleri barlaýar → mandat berýär (dar belgi).
JP bu bellikli gapjygy karz berýär. Şeýle belligi bozmagyň manysy ýok: gysga TTL, dar hukuklar, mTLS bilen baglanyşyk.
7) Haýyşlaryň gurluşlary
7. 1 Idempotentlik (hökmany)
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" }
(şol bir açar bilen gaýtalamak → şol bir jogap)7. 2 Webhuk goly (HMAC)
X-Signature: sha256=BASE64(HMAC(secret, timestamp + "." + nonce + "." + body))
X-Timestamp: 1730000000
X-Nonce: 1f7a...8) Syrlary we açarlary dolandyrmak
Vault/HSM/KMS: öndürmek, saklamak, aýlanmak, yzyna çagyrmak.
Per-gurşaw: sandbox/prod - dürli ynam kökleri.
Per-marka/sebit: aýry-aýry açarlar we şahadatnamalar.
Awto-rotasiýa: cron/duýduryş; üznüksiz çalyşmalar üçin overlap-döwürler.
Kodda/ýazgyda gadaganlyk: syrlar stdout-da ýazylmaýar, crash-reports-a düşmeýär.
Device/Workload identity: SPIFFE/SPIRE, K8s ServiceAccount → mTLS.
9) Ygtyýarlandyryş syýasaty (RBAC/ABAC) we OPA
RBAC: роли «rgs», «wallet», «jackpot», «reporting».
ABAC: düzgünler "eger 'region = EU' i 'brand = A' → rugsat 'wallet: credit' ≤ 10k".
OPA/REGO ýa-da analoglar: merkezleşdirilen karar bermek, syýasatlary wersiýalaşdyrmak, gury synaglar.
10) Gözegçilik we audit
Her haýyşda/hadysada 'trace _ id' we 'client _ id' arkaly.
Metrikler: endpointler boýunça p50/p95/p99 latency, kodlar boýunça error-rate ('AUTH _ FAILED', 'SCOPE _ DENIED', 'IDEMPOTENCY _ MISMATCH'), aýlanma ýygylygy, möhleti geçen tokenleriň paýy.
WORM magazineurnaly: bellikleri bermek/gözden geçirmek, açarlary üýtgetmek, syýasatlary üýtgetmek.
Alertler: 'AUTH _ FAILED', geo/ASN boýunça anomaliýalar, ösüş "möhleti geçdi/yzyna alyndy"> bosagasy.
11) Sebitleýin rezidentlik we segmentasiýa
Bellikler/şahadatnamalar sebite baglydyr (EU/UK/BR/...).
"Region" belliklerinde platforma şlýuzlary sebitleýin çagyryşlary gadagan edýär.
Sebite bölünen KMS we Vault-klaster; açarlar sebitleriň arasynda "sürülmeýär".
12) Wakalar we yzyna çagyryş
"Compromise playbook": açarlary/tokenlary derrew yzyna almak ,/ASN torlar bloky, skope ýapmak.
"no new sessions/funds".
Postmortem: "log/repozitoriýa nädip girdi", "näme üçin DLP/gizlin skaner işlemedi".
13) Çek-listler
A. Platforma üçin
- Ähli write-ýollar: mTLS + OAuth2 CC (TTL ≤ 5 minut), 'X-Idempotency-Key', 'X-Trace-Id'.
- Webhuklar: HMAC/EdDSA + timestamp + nonce, dedup 'event _ id'.
- Keýstor: Vault/HSM/KMS, aýlaw we yzyna çagyryş, bölmek per brand/region.
- ORA/syýasatlar: RBAC/ABAC, üýtgeşmeler magazinesurnallary, synaglar.
- WORM-audit we SLO-daşbordlar (latency, error, revoke/rotate).
- DR/xaoc-maşklar: möhleti geçen bellikler, gollary çalyşmak, mTLS-siz MITM.
B. Üpjün ediji üçin (RGS/live/JP)
- Kodda syrlary saklamaýaryn; Üýtgeýän gurşaw arkaly Vault/çalyşmagy ulanýaryn.
- Bellikleriň awto-rotasiýasy; handle 401/403 täzelenme bilen.
- Webhuklara gol çekýärin/dogry we bir gezek ulanylýan penjireleri barlaýaryn.
- Esasy hereketlere gözegçilik edýärin we Deprecation/Sunset sözbaşylaryna jogap berýärin.
- Ähli write jaňlarynda idempotentlik, 'Idempotency-Key' babasy.
14) Anti-pattern (gyzyl baýdaklar)
Önümde möhleti bolmadyk statiki API açarlary.
Kanala birikdirilmedik Bearer bellikleri (MTLS/DPoP ýok).
Gizlinlikleri Git/CI-log/konfiga frontendinde saklamak.
Birnäçe marka/sebit üçin umumy açar/şahadatnama.
Gol we wagtlaýyn penjiresiz webhuklar → replelar.
Merkezleşdirilen synyň we WORM magazineurnalynyň ýoklugy.
Idempotentligiň ýoklugy → iki gezek debet/karz.
15) Syýasatyň kiçi şablonlary (mysal, adam okamak üçin)
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' penjiresi özboluşly, dedupt 'event _ id' 24 sagat.
iGaming-de howpsuz autentifikasiýa - bu amallaryň utgaşmasy: gysga möhletli mandatlar, kanala baglanyşyk (mTLS/DPoP), dar skope/audience, berk idempotentlik, Vault/HSM we WORM-audit, sebitleýin segmentasiýa we gözegçilik. Şeýle yrym integrasiýa tizligine päsgel bermeýär, ýöne syzmak we maliýe hadysalary töwekgelçiligini düýpgöter peseldýär - pul we maglumatlar gözegçilik astynda galýar, täzelenmeler öňünden aýdylýar we laýyklyk "gutudan" ýerine ýetirilýär.
