API Keys، Tokens و Credentials - احراز هویت امن
مقاله کامل
1) چرا همه اینها: مدل تهدید برای iGaming
پول و PII: سازش کلیدی → تقلب، نشت، جریمه.
یکپارچگی شبکه: ده ها تن از ارائه دهندگان خارجی، مناطق مختلف/مجوز.
نرخ SLA بالا: پرداخت ساده یا دوگانه - خطرات اعتباری و قانونی.
نتیجه گیری: احراز هویت و مجوز باید به طور پیش فرض «ایمن» باشد، با حداقل امتیازات و قابلیت مشاهده دقیق.
2) ابزار: آنچه که ما در زرادخانه ما داریم
کلیدهای API: شناسه مشتری استاتیک. ادغام آسان، خطر بالای نشت.
OAuth2 (اعتبار مشتری): نشانه های حامل کوتاه مدت با دامنه/مخاطب.
mTLS: بررسی TLS متقابل، اتصال قوی مشتری به کانال.
امضای HMAC/EdDSA: یکپارچگی رمزنگاری بدن درخواست و حفاظت در برابر تکرار (زمان بندی + nonce).
اثبات مالکیت: نشانه های MTLS یا DPoP (امضای درخواست HTTP با کلید مشتری).
JWT/PASETO: نشانه های خود توصیف (ترجیحا با TTL کوتاه).
RBAC/ABAC: نقش/ویژگی پایه مجوز (OPA/تصمیم گیری سیاست).
نمایندگی/STS: بلیط های زمان و هدف محدود صادر شده برای یک سناریوی خاص.
3) اصول اساسی («علائم توقف»)
1. حداقل امتیاز: هر کلید/توکن دارای کمترین حقوق ممکن است.
2. کوتاه مدت به طور پیش فرض: TTL دقیقه، نه روز. چرخش خودکار است.
3. اتصال به کانال: نشانه های اتصال به mTLS/DPoP در هنگام نشت بی فایده است.
4. در هر نام تجاری/منطقه: کلید/گواهی و مجوز - برای نام تجاری/مجوز/منطقه.
5. بدون اسرار مشترک در کد: اسرار تنها از طریق Vault/HSM/KMS، و نه در Git/logs.
6. حسابرسی WORM: سیاهههای مربوط بدون تغییر از تمام عملیات/مسائل/چرخش.
7. Idempotence در نوشتن قرار می دهد: هر تکرار با همان کلید پول را برای بار دوم تغییر نمی دهد.
4) چه زمانی از چه چیزی استفاده کنیم (زمینه iGaming)
5) طراحی بلیط دسترسی (حوزه ها، مخاطبان، شرایط)
دامنه (مثال ها):- 'bets: write', 'settlements: write', 'wallet: credit', 'wallet: debit', 'rg: read', 'rg: enforcement', 'jackpot: trigger'.
مخاطب: به چه کسی نشانه (به عنوان مثال، 'aud: کیف پول. API ').
محدودیت ها (ریز دانه):- 'brand _ id'، 'region'، 'ip/cidr'، 'time _ of _ day'، 'rate _ limit'، 'max _ amount'.
- ذخیره شده در یک نشانه (JWT ادعا می کند) و یا در یک «دستور» نوشته شده در Vault/STS.
6) جریان مرجع
6. 1 RGS پلت فرم ⇄: RPC پول
1. mTLS دست دادن (در هر گواهی نام تجاری/منطقه).
2. OAuth2 CC: RGS "access _ token" (TTL 2-5 دقیقه، "aud = کیف پول. api ',' scope = bets: write settlements: write ').
3. درخواست 'POST/v1/bets/authorize' با هدر:- 'مجوز: حامل '، 'X-Idempotency-Key'، 'X-Trace-Id'. 
- 4. پاسخ + نوشتن به حسابرسی WORM (چه کسی/چه/چه زمانی/کجا).
- 5. چرخش نشانه بدون درز است، پس از انقضا - تکرار CC.
6. 2 Webhooks پلت فرم → ارائه دهنده
عنوان «X-Signature: eddsa = 
چک های ارائه دهنده: پنجره اعتبار (± 5 دقیقه)، nonce، امضای بدن.
اگر در دسترس نیست - retray with backoff, dedup by «event _ id».
6. 3 نمایندگی (خدمات جکپات → کیف پول)
JP به STS میگوید: "یک توکن موقت به" کیف پول: اعتبار "برای" player _ id = p _...', sum ≤ X, TTL 2 min "بدهید.
STS خط مشی/محدودیت ها را بررسی می کند → یک بلیط (نشانه باریک) صادر می کند.
JP یک کیف پول را با این توکن اعتبار می دهد. به خطر انداختن چنین توکنی بیهوده است: TTL کوتاه، حقوق محدود، اتصال به mTLS.
7) سازه های پرس و جو
7. 1 Idempotency (مورد نیاز)
پست/v1/شرط/حل و فصل
مجوز: حامل <MTLS-bound>
X-idempotency-کلید: settle_r_8c12_1
شناسه ردیابی: tr_a1b2
{
«bet_id":"b_001,» «round_id":"r_8c12,» «برنده «: {«مقدار «: 1460،» ارز»:» EUR»}
}
→ 200 {«وضعیت «: «اعتبار»، «settlement_id":"st_77»}
(تکرار با همان کلید → همان پاسخ)7. 2 وبهوک امضا (HMAC)
X-Signature: sha256 = BASE64 (HMAC (مخفی, مهر زمان + "." "+ nonce +". "+ بدن))
برچسب زمان X: 1730000000
X-Nonce: 1f7a...8) مدیریت اسرار و کلید
خرک/HSM/KMS: نسل، ذخیره سازی، چرخش، یادآوری.
در هر محیط: sandbox/prod - ریشه های مختلف اعتماد.
در هر نام تجاری/منطقه: کلید های فردی و گواهینامه ها.
چرخش خودکار: cron/هشدارها ؛ دوره های همپوشانی برای جایگزینی بدون درز.
ممنوعیت در کد/سیاهههای مربوط: اسرار به stdout نوشته نشده است، آنها را به گزارش تصادف نیست.
هویت دستگاه/بار کاری: SPIFFE/SPIRE، K8s ServiceAccount → mTLS بدون اسرار دستی.
9) سیاست های مجوز (RBAC/ABAC) و OPA
RBAC: роли «rgs»، «کیف پول»، «جکپات»، «گزارش».
ABAC: «if 'region = EU' and 'brand = A' rules → allow 'wallet: credit' ≤ 10k».
OPA/REGO یا آنالوگ: تصمیم گیری متمرکز، نسخه بندی سیاست، آزمایش های خشک.
10) قابلیت مشاهده و حسابرسی
End-to-end trace _ id و client _ id در هر درخواست/رویداد.
معیارها: تاخیر p50/p95/p99 توسط نقاط پایانی، نرخ خطا توسط کدها («AUTH _ FAILED»، «SCOPE _ DENIED»، «IDEMPOTENCY _ MISMATCH»)، نرخ چرخش، سهم توکن های منقضی شده.
ورود به سیستم WORM: مسائل مربوط به نشانه/به یاد می آورد، تغییرات کلیدی، تغییرات سیاست.
هشدارها: «AUTH _ FAILED» سنبله، ناهنجاری های جغرافیایی/ASN، «رشد عقب افتاده/خارج شده» آستانه.
11) اقامت و تقسیم بندی منطقه ای
توکنها/گواهیها مختص منطقه (EU/UK/BR/...) هستند.
در مارک ها - «منطقه»، دروازه های پلت فرم تماس های بین منطقه ای را ممنوع می کنند.
جدا کردن خوشه های KMS و Vault در هر منطقه ؛ کلیدها بین مناطق «رانندگی» نمی کنند.
12) حوادث و یادآوری ها
راهکار سازش: لغو فوری کلید/توکن، بلوک شبکه/ASN، بسته شدن دامنه.
Kill-switch در سطح دروازه: «هیچ جلسه/بودجه جدید».
Postmortem: «همانطور که آن را به سیاهههای مربوط/مخزن»، «چرا DLP/اسکنر مخفی کار نمی کند».
13) چک لیست
A. برای پلت فرم
- همه مسیرهای نوشتن: mTLS + OAuth2 CC (TTL ≤ 5 دقیقه)، 'X-Idempotency-Key'، 'X-Trace-Id'.
- Webhooks: HMAC/EdDSA + زمان بندی + nonce، dedup توسط «event _ id».
- Keistor: Vault/HSM/KMS، چرخش و فراخوان، تقسیم در هر نام تجاری/منطقه.
- OPA/سیاست: RBAC/ABAC، سیاهههای مربوط تغییر، آزمون.
- حسابرسی WORM و داشبورد SLO (تاخیر، خطا، لغو/چرخش).
- آموزه های DR/xaoc: نشانه های منقضی شده، جعل امضا، MITM بدون mTLS.
B. برای ارائه دهنده (RGS/زنده/JP)
- من اسرار را در کد حفظ نمی کنم ؛ با استفاده از Vault/جایگزینی از طریق متغیرهای محیطی.
- چرخش خودکار نشانه ها ؛ دسته 401/403 با به روز رسانی.
- ثبت نام webhooks/بررسی اعتبار پنجره ها و disposability.
- حسابرسی فعالیت های کلیدی و پاسخ به استهلاک/عناوین غروب آفتاب.
- Idempotency در تمام نوشتن خواستار، dedup توسط 'Idempotency-کلید'.
14) ضد الگوهای (پرچم قرمز)
کلید های API استاتیک بدون تاریخ انقضا در فروش.
توکن های حامل بدون اتصال به کانال (بدون MTLS/DPoP).
ذخیره اسرار در پیکربندی log/frontend Git/CI.
کلید/گواهی مشترک برای مارک ها/مناطق مختلف.
Webhooks بدون امضا و یک پنجره زمان → پخش.
عدم وجود بازخورد متمرکز و ورود به سیستم WORM.
عدم توانایی → بدهی های تکراری/اعتبار.
15) قالب های مینی سیاست (به عنوان مثال، قابل خواندن انسان)
بلیط «rgs → کیف پول» (اتحادیه اروپا، نام تجاری A):- aud = کیف پول api ',' scope = ["شرط بندی: نوشتن", "شهرک سازی: نوشتن"] "
- 'constrains: region = EU, brand = A, ip در {asn:...}, max_amount=5000 EUR, ttl = 300s'
- 'binding: mTLS (cert_hash=sha256:...)'
وب سایت همه کاره اعتبار. بسیار خوب
'alg = Ed25519'، پنجره '± 30s'، 'nonce' منحصر به فرد، پدربزرگ 'event _ id' 24 ساعت.
احراز هویت امن در iGaming ترکیبی از شیوه ها است: احکام کوتاه مدت، اتصال کانال (mTLS/DPoP)، دامنه/مخاطب باریک، idempotency دقیق، حسابرسی Vault/HSM و WORM، تقسیم بندی منطقه ای و قابلیت مشاهده. چنین پشته ای با سرعت ادغام دخالت نمی کند، اما به طور اساسی خطر نشت و حوادث مالی را کاهش می دهد - پول و داده ها تحت کنترل باقی می مانند، ارتقاء قابل پیش بینی است و انطباق خارج از جعبه انجام می شود.
