چرخش کلید و توکن
1) چرا چرخش مورد نیاز است
کلید و نشانه به ناچار «سن»: قرار گرفتن در معرض در سیاهههای مربوط/پشتیبان گیری, خطرات خودی, آسیب پذیری کتابخانه, نشت از شرکای. چرخش «طول عمر خطر» را کاهش می دهد و کنترل حوادث را فراهم می کند. هدف این است که چرخه های چرخش قابل پیش بینی و مکانیزم های فراخوانی سریع بدون خرابی ایجاد شود.
2) منطقه: دقیقا همان چیزی است که ما چرخش می دهیم
کلید های امضا/رمزگذاری: JWT (JWS/JWE)، OAuth/OIDC، SAML، webhooks (HMAC)، مجوزها.
اسرار ادغام: کلیدهای API، راز مشتری، رمزهای عبور فناوری. کاربران.
TLS/mTLS: گواهینامه های سرور/مشتری، CA های ریشه/متوسط.
کلید های داده: KEK/CMK در KMS/HSM، DEK (رمزگذاری پاکت).
Токены: دسترسی/تازه کردن، سرویس به سرویس (mTLS، HMAC)، جلسه کوتاه مدت.
3) ذخیره سازی، نسخه ها، برچسب ها
KMS/HSM/Vault به عنوان منبع حقیقت ذخیره کلیدهای خصوصی در فایلهای git/ENV/image ممنوع است.
نسخه بندی: 'key _ id '/' version' + برچسب ها: 'هدف = jwt-sign'، 'env = prod'، 'alg = ES256'، 'created _ at'، 'rotates _ at'.
سیاست های دسترسی: اصل حداقل حقوق لازم (حداقل امتیاز)، تفکیک وظایف (SoD).
حسابرسی: چه کسی ایجاد/خواندن/امضا ؛ سیاهههای مربوط تغییر ناپذیر.
4) الگوهای چرخش پایه
4. 1 پنجره های همپوشانی (رولاور برازنده)
ما کلید → جدید را در JWKS/توزیع گواهی منتشر می کنیم.
پنجره همپوشانی: اعتبار سنجی با کلیدهای قدیمی و جدید، امضا - فقط با موارد جدید.
پس از پایان دوره مهلت، قدیمی را از مجموعه قابل اعتماد حذف کنید.
4. 2 دوگانه اجرا می شود
یک دوره کوتاه زمانی که بخشی از نمونه نشانه های قدیمی، بخشی - جدید (برای ناوگان بزرگ).
نیاز به JWKS به شدت هماهنگ و نظارت بر درصد اعتبار سنجی توسط «بچه».
4. 3 چرخش بر روی برنامه در مقابل چرخش بر روی استفاده
برنامه ریزی شده: یک بار در هر N روز/هفته (کلید امضا، TLS).
هنگام استفاده: تازه کردن نشانه - یک بار, برای هر انتشار ارز جدید («کشویی» چرخش).
5) JWT/JWKS: تمرین
5. 1 عنوان ها و شناسه ها
از «بچه» در هدر JWS برای انتخاب یک کلید تأیید استفاده کنید.
حداقل clims، کوتاه 'exp'، درست 'aud/iss/nbf'.
json
{ "alg": "ES256", "kid": "jwt-2025-10", "typ": "JWT" }
5. 2 انتشار JWKS
JWKS باید شامل تمام کلیدهای اعتبارسنجی فعال باشد (قدیمی + جدید در پنجره grace).
مشتری JWKS ذخیره: TTL کوتاه (به عنوان مثال 5-15 دقیقه)
اگر به خطر بیافتد، کلید به خطر افتاده از JWKS (به طور ناگهانی)، نیروی ناتوانی کش را حذف کنید.
مثال JWKS:json
{
"keys": [
{ "kty":"EC","crv":"P-256","kid":"jwt-2025-10","use":"sig","alg":"ES256","x":"...","y":"..." },
{ "kty":"EC","crv":"P-256","kid":"jwt-2025-07","use":"sig","alg":"ES256","x":"...","y":"..." }
]
}
5. 3 کادنس و زمان بندی
امضای JWT: چرخش کلید هر 3-6 ماه (یا بیشتر برای ریسک بالا).
'exp' access-token: 5-30 دقیقه ؛ تازه کردن - 7-30 روز (با «چرخش در استفاده»).
«پیوند» اجباری با PoP/DPoP (به § 8 مراجعه کنید) برای کاهش خطر سرقت.
6) چرخش HMAC (webhooks/signatures)
اسرار فعال و قناری را حفظ کنید از هر دو امضا بگیرید.
عناوین: 'X-Signature' + 'X-Timestamp' ؛ محدودیت پنجره ± 300 ثانیه
قطع ارتباط کامل از یکی از قدیمی - پس از فرستنده تغییر کرده است تایید.
برای شرکا، تاریخ سوئیچ و چک های پایانی را منتشر کنید.
7) TLS/mTLS و زنجیره های اعتماد
ACME/auto-renew برای گواهینامه های سرور عمومی (Let's Encrypt or enterprise CA).
mTLS: گواهی مشتری کوتاه (7-30 روز)، چرخش خودکار از طریق کانال (SPIFFE/SPIRE/مش).
چرخش CA متوسط/ریشه - فقط از طریق لنگرهای بسته اعتماد همپوشانی و قناری طولانی.
نگه داشتن چشم در OCSP/CRL و ساعت skew. در سیاهههای مربوط - دلایل شکست اعتبار.
8) PoP/DPoP و بسته نرم افزاری token↔klyuch مشتری
DPoP (تظاهرات اثبات مالکیت): نشانه به کلید عمومی مشتری متصل است ؛ خطر بازگشت را کاهش می دهد.
چرخش کلید مشتری = انتشار یک کلید DPoP جدید، نشانه ها - برای یک زمان کوتاه.
برای سرویس به سرویس، mTLS ترجیح داده می شود (دستگاه/کارگر «کلید» را در HSM/TPM حمل می کند).
9) نشانه های تازه کردن: چرخش در استفاده
یک بار نشانه تازه کردن: هر تبادل → تازه کردن جدید + دسترسی.
لیست فروشگاه «jti »/« sid» به یاد می آید با TTL = تازه کردن طول عمر.
تشخیص استفاده مجدد (پخش مجدد): فراخوانی فوری جلسه/دستگاه، هشدار.
10) لیست های یادآوری و بلوک
JWT بدون خودآزمایی: استفاده از کوتاه 'exp' + 'blacklists' 'jti' برای موارد بحرانی (به صورت محلی/در Redis، هش شاردینگ).
درون نگری OAuth: کش سرور وضعیت متمرکز «active = false/true» با یک TTL کوتاه.
کلیدهای API: هش کلید فروشگاه (مانند رمزهای عبور)، برچسب مالک/مستاجر، دامنه، تاریخ ایجاد/آخرین دسترسی ؛ یادآوری - فوری
11) کلید های داده: رمزگذاری پاکت
CMK/KEK (KMS/HSM) از DEK محافظت می کند ؛ چرخش CMK بدون افشای مجدد داده ها رخ می دهد: DEK را دوباره بسته بندی کنید.
DEK برای هر شی/مستاجر/حزب ؛ KDF/HKDF برای کلید های مشتق شده.
سیاست های خرد کردن رمزنگاری: حذف KEK = داده های غیرقابل خواندن در صورت به خطر افتادن.
12) روش های حادثه (سازش)
1. توقف: غیر فعال کردن صدور نشانه بر روی یک کلید به خطر بیافتد, انتقال صدور به یکی از جدید.
2. لغو: حذف بچه از JWKS، لغو گواهینامه (OCSP/CRL)، مسدود کردن کلید های API از لیست.
3. TTL را کاهش دهید: به طور موقت توکن های «exp» را کاهش دهید، بررسی PoP/DP را تقویت کنید.
4. خروج اجباری: جلسات را غیرفعال کنید (لغو 'sid '/' jti').
5. پزشکی قانونی و گزارش: جدول زمانی، پوشش، چه کسی/چه رنج می برد ؛ به روز رسانی playbooks.
13) خط لوله و رول
13. 1 نسل و انتشار
تولید کلید در HSM/KMS ؛ صادرات کلید خصوصی - ممنوع است.
انتشار خودکار JWKS/گواهینامه ها با تأیید و آزمایش.
انتشار قناری: 1-5٪ از مشتریان → 100٪.
13. 2 کنترل سلامت
معیارها: نسبت اعتبار سنجی توسط «بچه»، خطاهای امضا/گواهی، رانش ساعت.
هشدارها: 401/403 سنبله به دلیل امضا، OCSP/CRL در دسترس نیست، گواهینامه های منقضی (T-30/T-7/T-1).
14) پیکربندی و نمونه
14. 1 مثال سیاست Vault/KMS (شبه)
hcl path "transit/keys/jwt-prod" {
capabilities = ["read," "update," "list"] # signature/rotation
}
path "transit/keys/jwt-prod/rotate" {
capabilities = ["update"]
}
14. 2 برنامه چرخش JWT مثال
T0: create a new version of the key (kid = jwt-2025-10), add to JWKS
T0 + 15m: start signing with a new kid; validate with old and new
T0 + 7d: remove old kid from JWKS
T0 + 30d: delete old private key from KMS (schedule purge)
14. 3 نماینده: نیروی JWKS به روز رسانی (شبه)
yaml jwt_authn:
providers:
oidc:
issuer: https://auth. example. com/
remote_jwks:
http_uri:
uri: https://auth. example. com/.well-known/jwks. json cluster: jwks_cluster timeout: 2s cache_duration: 300s # короткий TTL
15) قابلیت مشاهده و حسابرسی
Метрики: 'jwt _ verify _ fail _ total {reason}', 'jwks _ refresh _ total', 'jwks _ kid _ share {kid}', 'token _ revoloked _ total', 'refresh _ rotations _ total', 'dpop _ fail _ total'.
Логи: 'kid'، 'jti'، 'sid'، 'reason'، 'client _ id'، 'tenant'، 'trace _ id' (без PII).
داشبورد: کارت اشتراک گذاری «بچه»، گواهینامه های منقضی، فرکانس فراخوانی، امضای نامعتبر بر اساس منطقه.
16) ضد گلوله
JWT های طولانی مدت بدون یادآوری و بدون «exp» کوتاه.
عدم انتخاب «kid» و «دستی» کلید تأیید.
ذخیره اسرار در ENV/k8s-Secret بدون KMS و بدون رمزگذاری در سطح etcd.
نشانه های تازه سازی غیر چرخشی ؛ استفاده مجدد از Refresh بدون شناسایی
یک کلید API جهانی «برای همه».
انتشار «آرام» کلیدهای جدید بدون انتشار و نظارت JWKS.
پنجره های همپوشانی صفر (جایگزینی فوری) → جرم 401/403.
17) ویژگی های iGaming/امور مالی
تنظیم کننده ها و حسابرسی: سیاهههای مربوط غیر قابل تغییر چرخش/به یاد می آورد ؛ قابلیت اطمینان زمان و بازیگران.
شریک PSP/KYC: کلیدهای جداگانه برای هر شریک/صلاحیت ؛ فراخوان سریع برای نقض SLA/ایمنی.
چند اجاره نامه: کلیدهای API هر مستاجر با دامنه ؛ جداسازی کلید نام تجاری/منطقه.
خطر بالا: PoP/DPoP برای عملیات بحرانی، کوتاه 'exp'، mTLS بین خدمات داخلی.
دفتر پشتی: SSO/OIDC، جلسات کوتاه، نشانه های سخت افزاری (FIDO2)، چرخش در برنامه در همه جا.
18) تولید لیست آمادگی
- تمام کلید های خصوصی در KMS/HSM/Vault ؛ صادرات ممنوع
- JWKS منتشر شده و با TTL کوتاه ذخیره می شود ؛ یک «بچه» در عناوین JWT وجود دارد.
- برنامه چرخش با همپوشانی پنجره و رول اتوماتیک.
- نشانه های تازه کردن یکبار مصرف هستند ؛ لیست لغو 'jti' با TTL.
- اسرار HMAC: فعال + قناری ؛ استقبال هر دو ؛ زمان سوییچ اعلام شد
- TLS/mTLS: خودکار تجدید، هشدار T-30/T-7/T-1، بسته نرم افزاری اعتماد برای تغییر CA.
- رمزگذاری پاکت: KEK/CMK بدون خرابی چرخش، DEK در هر شی/مستاجر.
- معیارها/هشدارها توسط امضا، JWKS، بازخورد ؛ داشبورد «بچه» -deals.
- دفترچه حوادث (سازش) و تمرینات منظم.
- تست canary و اعتبار کپی با کلید های جدید/CA.
19) TL ؛ دکتر متخصص
کلیدها را در KMS/HSM نگه دارید، JWT را با «بچه» امضا کنید و JWKS را ارسال کنید. چرخش کلید ها و گواهینامه ها با همپوشانی، نظارت بر سهام اعتبار سنجی توسط «بچه». تازه کردن - چرخش در استفاده و کوتاه 'exp'; برای عملیات بحرانی - PoP/DPoP و mTLS. برای داده ها، از رمزگذاری پاکت با چرخش KEK بدون خرابی استفاده کنید. پیاده سازی متریک/هشدار، playbooks حادثه، و چرخش قناری به طور منظم.