API բանալիներ, ցնցումներ և մուտքի մանդատներ 'անվտանգ վավերացում
Հոդվածի ամբողջական տեքստը
1) Ինչու՞ է այս ամենը 'iGaming-ի համար սպառնալիքների մոդել
Փողը և PII 'ստեղնաշարի փոխզիջումը ֆրոդ, արտահոսք, տուգանքներ։- Ցանցային ցանցերը 'տասնյակ արտաքին պրովայդերներ, տարբեր տարածաշրջաններ/լիցենզիաներ։
- SLA-ի բարձր տոկոսադրույքները ՝ պարզ կամ դուբլ, հեղինակավոր և իրավաբանական ռիսկեր են։
- Եզրակացությունը 'վավերացումը և հեղինակային իրավունքը պետք է լինեն «լռելյայն անվտանգ», նվազագույն արտոնություններով և կոշտ դիտարկմամբ։
2) Գործիքներ. Ի՞ նչ ունենք զինանոցում
API բանալիներ 'հաճախորդի ստատիկ բաղադրիչներ։ Պարզ ինտեգրումը, արտահոսքի բարձր ռիսկը։- OAuth2 (Client Credentials): Bearer-ը scope/audience-ից։
- MT.RU: Փոխադարձ TRC-ստուգում, հաճախորդի ուժեղ կապվածություն հաճախորդի հետ։
- HMAC/EdDSA ստորագրությունները 'հարցման մարմնի կրիպտոգրաֆիկ ամբողջականությունը և պաշտպանությունը (timestamp + nonce)։
- Proof-of-Possession: MTSA-bound-ը կամ DPoP-ը (HTTP-ի ստորագրությունը հաճախորդի բանալին)։
- JWT/PASETO 'ինքնաբերական հոսանքներ (ցանկալի է կարճ TTL)։
- RBAC/ABAC 'դերը/ww.baisd հեղինակային (ORA/քաղաքական լուծումներ)։
- Ժամանակավոր մուտքի մանդատները (wwww.egation/STS) 'սահմանափակ ժամանակի և նպատակների համար, որոնք արտադրվում են հատուկ սցենարի վրա։
3) Հիմնական սկզբունքները («stop-նշաններ»)
1. Least Privilege: Յուրաքանչյուր բանալին/towenu նվազագույն հնարավոր իրավունքներ են։
2. Shast-lived by-ը 2019: TTL րոպե, ոչ թե օրեր։ Միգրացիան ավտոմատ է։
3. Bind to channel: հոսանքների կապումը mTSA/DPoP-ի հետ անօգուտ է արտահոսքի ժամանակ։
4. Per-brand/region: բանալիներ/հավաստագրեր և թույլտվություններ 'բրենդի/լիցենզիայի/տարածաշրջանի վրա։
5. Code shared secrets-ում 'գաղտնիքները միայն Vox/HSM/KSA-ի միջոցով, ոչ Git/logs-ում։
6. WORM-աուդիտ 'բոլոր վիրահատությունների անփոփոխ լոգներ/2019/միգրացիաներ։
7. Idempotenty-ը write-ի ուղիների վրա, ցանկացած խոհարար նույն բանալին չի փոխում գումարը երկրորդ անգամ։
4) Երբ օգտագործեք այն (iGaming-ենթատեքստը)
5) Եվրոպական հասանելիության դիզայնը (scopes, audience, պայմաններ)
Scope-ները (օրինակներ)
`bets:write`, `settlements:write`, `wallet:credit`, `wallet:debit`, `rg:read`, `rg:enforce`, `jackpot:trigger`.
Audience: Ում ուղղված է հոսանքը (օրինակ 'aud: wallet։ api`).
Constraints (fine-grained):- `brand_id`, `region`, `ip/cidr`, `time_of_day`, `rate_limit`, `max_amount`.
- Պահպանվում են տոկենում (JWT claims) կամ գրված «մանդատում» Vox/STS-ում։
6) Ստանդարտ ֆլոուն
6. 1 Պլատֆորմ RGS 'գումար RPC-ով
1. MTMS handshake (per brand/region)։
2. OAuth2 CC: RGS-ն ստանում է «բանաձև _ token» (TTL 2-5 րոպե, «aud = wallet»։ api`, `scope=bets:write settlements:write`).
3. «POST/v1/bets/authorize» հարցումը վերնագրերով
`Authorization: Bearer 
4. Պատասխանը + ձայնագրությունը WORM-աուդիտի մեջ (ով/ինչ/երբ/որտեղից)։
5. Հալեցումը անխուսափելի է, իսկ CC-ի խոհարար։
6. 2 WEBHUKI պլատֆորմը prodeider
"X-Signature: eddium = 
Պրովայդերը ստուգում է 'վալիդիզմի պատուհանը (355 րոպե), միանվագ «nonce», մարմնի ստորագրությունը։
Անհասանելիության դեպքում 'backoff, dedup' event _ id '։
6. 3 Անջատումը (ջեքպոտ ծառայություն)
JP-ն առաջացնում է STS-ն. <<տվեք wallet: credit>> համար 'player _ id = p _..., X, TTL 2 րոպե>։
STS-ը ստուգում է քաղաքականությունը/լիմիթները։- JP-ն մղձավանջում է այս հոսանքի հետ։ Փոխզիջումը անիմաստ է 'կարճ TTL, նեղ իրավունքներ, mTLS-ի կապվածություն։
7) Հարցումների կառուցվածքը
7. 1 Idempotenty (պարտադիր)
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" }
(նույն բանալին ունեցող խոհարարը նույն պատասխանն է)7. 2 Ուեբհուկի ստորագրություն (HMAC)
X-Signature: sha256=BASE64(HMAC(secret, timestamp + "." + nonce + "." + body))
X-Timestamp: 1730000000
X-Nonce: 1f7a...8) Գաղտնիքների և բեկորների կառավարումը
Vox/HSM/KSA 'գեներացիա, պահեստավորում, ռոտացիա, արձագանք։- Նախկին միջավայրը 'sandbox/210 - վստահության տարբեր արմատներ։
- Ռուսական բրենդը/տարածքը 'անհատական բանալիներ և հավաստագրեր։
- Avto-ռոտացիա ՝ com/նախազգուշացում; overlap-ժամանակահատվածներ անվադողերի համար։
- Կոդի/լոգարանների արգելքը 'գաղտնիքները չեն գրվում stdout-ում, չեն մտնում crash հաղորդագրությունների մեջ։
- Device/Workload ident: SPIFE/SPIRE, K8s You Account 24mTSA առանց ձեռքով գաղտնիքների։
9) Հեղինակային քաղաքականության (RBAC/ABAC) և OPA
RBAC: роли «rgs», «wallet», «jackpot», «reporting».
ABAC '"Եթե" region = EU "և" brand = A "կանոնները թույլատրվում են" wallet: credit '10k "։
OPA/REGO կամ անալոգներ 'որոշումների կենտրոնացված ընդունումը, քաղաքական տարբերակումը, չոր թեստերը։
10) Դիտողությունն ու աուդիտը
«Trace _ id» և «client _ id» -ի միջոցով յուրաքանչյուր հարցում/իրադարձության մեջ։- Metrics: p50/p95/p99 latency էնդպոինթամ, error-rate կոդերով («AUTH _ FAILED», «SCOFC _ DENIED», «IDEMPOTENCY H»), ժամկետանց հոսանքներ։
- WORM ամսագիրը ՝ թոկենների 105/ակնարկներ, փոփոխությունը, քաղաքական փոփոխությունը։
- Alerts: AUTH _ FAILED ", անոմալիաներ գեո/ASN-ով, աճը" ժամկետանց/հետ կանչված "> շեմն է։
11) Արբիտրաժային նստավայրը և հատվածը
Տոկենները/հավաստագրերը կապված են տարածաշրջանի հետ (EU/UK/IV/...)։- Կլեյմերում '«region», պլատֆորմային դռները արգելում են քրոսս-տարածաշրջանային մարտահրավերները։
- Առանձնացված KFC և Vox-2019 տարածաշրջանի վրա։ բանալիները չեն «գնում» տարածաշրջանի միջև։
12) Պատահականներն ու ակնարկները
Compromise playbook: ակնթարթային revoke no/token, ցանցերի բլոկ/ASN, www.sco.ru։
Kill-switch-ը դարպասի մակարդակում '«new sessions/funds»։- Postmortem: <<Ինչպես հայտնվեց լոգայի/ռեպոզորիայի>>, "Ինչու՞ DLP/գաղտնիքների սկաներ չաշխատեց>>։
13) Չեկ թերթերը
A. պլատֆորմի համար
- Բոլոր write ճանապարհները ՝ mTMS + OAuth2 CC (TTL 355 րոպե), «X-Idempotency-Key», «X-Trace-Id»։
- Webhuks: HMAC/EdDSA + timestamp + nonce, dedup 'event _ id "։
- Քեյսթորը ՝ Vox/HSM/KSA, միգրացիա և ակնարկում, per brand/region բաժանումը։
- ORA/քաղաքականություն ՝ RBAC/ABAC, փոփոխությունների ամսագրեր, թեստեր։
- WORM-աուդիտ և SLO-dashbords (latency, error, revoke/rotate)։
- DR/xaoc-ուսմունքները 'ոչնչացված հոսանքներ, ստորագրության փոխարինում, MITM առանց mTSA-ի։
B. պրովայդերի համար (RGS/2019/JP)
- Ես գաղտնիքներ չեմ պահում կոդում. օգտագործում եմ Vox/փոխարինում եվրոպական միջավայրի միջոցով։
- Տոկենի վերացումը; handle 401/403 նորարարությամբ։
- Ես ստորագրում եմ Webhuks/ստուգում եմ վալիդայի պատուհանները և միապաղաղությունը։
- Վերցնում եմ հիմնական գործողությունների աուդիտը և արձագանքում եմ Deprecation/Sunset վերնագրերին։
- Idempotenty բոլոր write զանգերի վրա, dedup 'Idempotency-Key-։
14) Anti-patterns (կարմիր դրոշներ)
Ստատիկ API-բանալիները առանց երկարության ժամկետի։- Bearer-toxens առանց հաճախորդի (ոչ MTSA/DPoP)։
- Գաղտնիքների պահպանումը Git/CI-loge/frontend-ում։
- Ընդհանուր բանալին/վկայագիր մի քանի բրենդների/տարածաշրջանների համար։
- Webhuks առանց ստորագրության և ժամանակավոր պատուհանի։
- Կենտրոնացված արձագանքի և WORM ամսագրի բացակայությունը։
- Idempotenty-ի բացակայությունը բացատրում է բանավեճի/վարկերի կրկնապատկումը։
15) Քաղաքականության մինի ձևանմուշները (օրինակ, մարդասպան)
Մանդատը '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:…)`
Ուեբհուկ 'wallet. credit. ok`:- 'alg = Ed2.119 ", պատուհանը' 300s '," nonce "unicalen, dedup' event _ id '24 ժամ։
IGaming-ի ապահով վավերացումը պրակտիկայի համադրություն է 'հակիրճ մանդատներ, կապակցված կոմպոզիցիաներին (mTSA/DPoP), նեղ scoom/audience, խիստ impotention, Vox/HSM և WORM-աուդիտ, հիբրիդային հատվածը և դիտարկումը։ Սա չի խանգարում ինտեգրման արագությանը, բայց արմատապես նվազեցնում է արտահոսքի և ֆինանսական ծախսերի ռիսկը, փողը և տվյալները մնում են վերահսկողության տակ, ապրեիդները անցնում են կանխատեսելի, իսկ ընկերությունները կատարվում են «արկղից»։
