कुंजी और टोकन घुमाव
1) रोटेशन की आवश्यकता क्यों है
कुंजी और टोकन अनिवार्य रूप से "उम्र": लॉग/बैकअप में जोखिम, अंदरूनी जोखिम, पुस्तकालय कमजोरियां, भागीदारों से लीक। रोटेशन "जोखिम जीवनकाल" को कम करता है और घटनाओं में नियंत्रणीयता देता है। लक्ष्य डाउनटाइम के बिना अनुमानित रोटेशन चक्र और तेजी से रिकॉल तंत्र का निर्माण करना है।
2) क्षेत्र: वास्तव में हम क्या घूमते हैं
हस्ताक्षर/एन्क्रिप्शन कुंजियाँ: JWT (JWS/JWE), OAuth/OIDC, SAML, वेबहूक (HMAC), लाइसेंस।
एकीकरण रहस्य: एपीआई कुंजी, ग्राहक रहस्य, तकनीकी पासवर्ड। उपयोगकर्ता।
TLS/mTLS: सर्वर/क्लाइंट प्रमाणपत्र, रूट/इंटरमीडिएट CAs.
डेटा कुंजी: KMS/HSM, DEK (लिफाफा एन्क्रिप्शन) में KEK/CMK।
Токены: एक्सेस/रिफ्रेश, सर्विस-टू-सर्विस (एमटीएलएस, एचएमएसी), अल्पकालिक सत्र।
3) भंडारण, संस्करण, लेबल
केएमएस/एचएसएम/वॉल्ट सत्य के स्रोत के रूप में। निजी कुंजी को गिट/ईएनवी/छवि फ़ाइलों में संग्रहीत करना वर्जित है।
वर्शनिंग: 'key _ id '/' संस्करण' + लेबल: 'उद्देश्य = jwt-sign', 'env = prod', 'alg = ES256', 'बनाया गया _ at', 'rotates _ at'।
पहुंच नीतियां: न्यूनतम आवश्यक अधिकारों (कम से कम विशेषाधिकार), कर्तव्यों का पृथक्करण (SoD) का सिद्धांत।
लेखा परीक्षा: किसने बनाया/पढ़ा/हस्ताक्षरि अपरिवर्तनीय लॉग।
4) बेसिक रोटेशन पैटर्न
4. 1 ओवरलैपिंग विंडो (सुंदर रोलओवर)
हम JWKS में नई कुंजी प्रकाशित करते हैं/प्रमाणपत्र वितरित करते हैं।
ओवरलैप विंडो: पुरानी और नई कुंजियों के साथ सत्यापन, हस्ताक्षर - केवल नए के साथ।
अनुग्रह अवधि समाप्त होने के बाद, विश्वसनीय सेट से पुराने को हटा दें।
4. 2 दोहरी दौड़
एक छोटी अवधि जब उदाहरणों का हिस्सा पुराना, भाग - नया (बड़ेबेड़ेके लिए) चिह्नित होता है।
एक कड़ाई से सिंक्रनाइज़ JWKS और 'बच्चे' द्वारा सत्यापन के प्रतिशत की निगरानी की आवश्यकता है।
4. 3 घुमाएँ-ऑन-शेड्यूल बनाम घुमाएँ-ऑन-यूज़
अनुसूचित: एक बार हर N दिन/सप्ताह (हस्ताक्षर कुंजी, TLS)।
उपयोग करते समय: ताज़ा टोकन - एक बार, प्रत्येक एक्सचेंज रिलीज़ के लिए नया ("स्लाइडिंग" रोटेशन)।
5) JWT/JWKS: अभ्यास
5. 1 शीर्षक और पहचानकर्ता
सत्यापन कुंजी चुनने के लिए JWS शीर्षिका में 'बच्चा' का उपयोग करें।
न्यूनतम चढ़ाई, लघु 'एक्सपी', सही 'aud/iss/nbf'।
JWS हेडर उदाहरण:json
{ "alg": "ES256", "kid": "jwt-2025-10", "typ": "JWT" }
5. 2 JWKS प्रकाशन
JWKS में सभी सक्रिय सत्यापन कुंजियाँ होनी चाहिए (अनुग्रह विंडो में पुराना + नया).
क्लाइंट 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-टोकन: 5-30 मिनट; ताज़ा - 7-30 दिन ("घूर्णन-ऑन-उपयोग" के साथ)।
चोरी के जोखिम को कम करने के लिए PoP/DPoP (देखें 8) के साथ "बॉन्डिंग" को मजबूर किया।
6) एचएमएसी रोटेशन (वेबहूक/हस्ताक्षर)
सक्रिय और कैनरी रहस्य रखें; दोनों से हस्ताक्षर स्वीकार
शीर्षक: 'एक्स-सिग्नेचर' + 'एक्स-टाइमस्टैम्प'; खिड़की सीमा the 300s।
पुराने एक का पूर्ण डिस्कनेक्शन - प्रेषक द्वारा पुष्टि किए जाने के बाद।
भागीदारों के लिए, स्विच डेट-टाइम और एंडपॉइंट चेक प्रकाशित करें।
7) टीएलएस/एमटीएलएस और विश्वास श्रृंखला
सार्वजनिक सर्वर प्रमाणपत्र (चलो एन्क्रिप्ट या एंटरप्राइज सीए) के लिए ACME/ऑटो-नवीनीकरण।
mTLS: शॉर्ट क्लाइंट सर्टिफिकेट (7-30 दिन), चैनलों के माध्यम से स्वचालित रोटेशन (SPIFFE/SPIRE/mesh)।
इंटरमीडिएट/रूट सीए रोटेशन - केवल ओवरलैपिंग ट्रस्ट बंडल एंकर और लंबी कैनरी के माध्यम से।
OCSP/CRL और घड़ी-तिरछा पर नजर रखें। लॉग में - सत्यापन विफलता के कारण।
8) PoP/DPoP और क्लाइंट token↔klyuch बंडल
DPoP (प्रूफ-ऑफ-पोज़िशन का प्रदर्शन): टोकन ग्राहक की सार्वजनिक-कुंजी के लिए बाध्य है; रीप्ले के जोखिम को कम करता है।
क्लाइंट कुंजी रोटेशन = एक नई DPoP कुंजी की रिलीज़, टोकन - थोड़े समय के लिए।
सेवा-से-सेवा के लिए, mTLS को पसंद किया जाता है (डिवाइस/वर्कर HSM/TPM में कुंजी "कैरी" करता है)।
9) ताज़ा टोकन: घूर्णन-ऑन-उपयोग
वन-टाइम रिफ्रेश टोकन: प्रत्येक एक्सचेंज - एक नया रिफ्रेश + एक्सेस।
TTL = लाइफटाइम रिफ्रेश के साथ रिकॉल 'jti '/' sid' स्टोर की सूची।
रीयूज़डिटेक्शन (पुनः प्ले): तत्काल सत्र/उपकरण रिकॉल, अलर्ट।
10) रिकॉल और ब्लॉक लिस्ट
आत्मनिरीक्षण के बिना JWT: महत्वपूर्ण मामलों के लिए लघु 'exp' + 'ब्लैकलिस्ट' 'jti' का उपयोग करें (स्थानीय रूप से/Redis, हैश शार्डिंग में)।
OAuth आत्मनिरीक्षण: एक छोटे TTL के साथ केंद्रीकृत स्थिति सर्वर कैश "सक्रिय = गलत/सही"।
एपीआई कुंजियाँ: कुंजी हैश (जैसे पासवर्ड), मालिक/किरायेदार लेबल, गुंजाइश, सृजन/अंतिम पहुंच तिथि संग्रहीत करें; याद है - तत्काल।
11) डेटा कुंजी: लिफाफा एन्क्रिप्शन
CMK/KEK (KMS/HSM) DEK की रक्षा करता है; CMK रोटेशन डेटा पुन: प्रकटीकरण के बिना होता है: DEK को फिर से लपेटें।
प्रत्येक वस्तु/किरायेदार/पक्ष के लिए डीईके; व्युत्पन्न कुंजियों के लिए केडीएफ/एचकेडीएफ।
क्रिप्टो-श्रेडिंग नीतियां: समझौता होने पर KEK = अपठनीय डेटा हटाना।
12) हादसा प्रक्रियाएं (समझौता)
1. फ्रीज: एक समझौता की गई कुंजी पर अक्षम टोकन जारी करना, एक नए को जारी करना।
2. Revoke: JWKS से 'बच्चा' निकालें, प्रमाणपत्र (OCSP/CRL) निरस्त करें, सूची से API कुंजियाँ ब्लॉक करें।
3. टीटीएल कम करें: अस्थायी रूप से 'एक्सपी' टोकन कम करें, PoP/DPoP जाँच को मजबूत करें।
4. जबरन लॉगआउट: निष्क्रिय सत्र ('sid '/' jti' को निरस्त करें)।
5. फोरेंसिक और रिपोर्टिंग: समयरेखा, कवरेज, कौन/क्या पीड़ित; प्लेबुक अपडेट करें।
13) पाइपलाइन और रोलआउट
13. 1 पीढ़ी और प्रकाशन
एचएसएम/केएमएस में कुंजी उत्पन्न करें; निजी कुंजी निर्यात - निषिद्ध।
सत्यापन और परीक्षण के साथ JWKS/प्रमाणपत्रों का स्वचालित प्रकाशन।
कैनरी रिलीज़: ग्राहकों का 1-5% → 100%।
13. 2 स्वास्थ्य नियं
मेट्रिक्स: 'बच्चे', हस्ताक्षर/प्रमाणपत्र त्रुटियों, घड़ी बहाव द्वारा सत्यापन का अनुपात।
अलर्ट: हस्ताक्षर के कारण 401/403 स्पाइक, OCSP/CRL अनुपलब्ध, समाप्त प्रमाणपत्र (T-30/T-7/T-1)।
14) कॉन्फ्रेंस और उदाहरण
14. 1 तिजोरी/केएमएस नीति उदाहरण (छद्म)
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 _ verfify _ fail _ total {coult}', 'jwks _ refresh _ total', 'jwks _ kid _ share {kidd}', 'revoked _ revooked _ total', 'dpop _ fail _ total'।
Логи: 'बच्चा', 'जेटी', 'सिड', 'कारण', 'क्लाइंट _ आईडी', 'किरायेदार', 'ट्रेस _ आईडी' (без पीआईआई)।
डैशबोर्ड: 'किड' शेयर कार्ड, सर्टिफिकेट एक्सपायरी, रिकॉल फ्रीक्वेंसी, क्षेत्र द्वारा अमान्य हस्ताक्षर।
16) एंटीपैटर्न
लंबे समय तक रहने वाले JWT बिना किसी रिकॉल के और कोई छोटा 'exp' नहीं।
सत्यापन कुंजी की 'किड' और "मैनुअल" चयन की अनुपस्थिति।
KMS के बिना और etcd स्तर पर एन्क्रिप्शन के बिना ENV/k8s-Secret में रहस्य का भंडारण।
गैर-घूर्णी ताज़ा टोकन; बिना पता लगाए ताज़ा करें।
एक एकल वैश्विक एपीआई कुंजी "सभी के लिए"।
JWKS प्रकाशन और निगरानी के बिना नई कुंजियों की "शांत" रिलीज़।
शून्य ओवरलैप विंडो (तत्काल प्रतिस्थापन) → द्रव्यमान 401/403।
17) आईगेमिंग/वित्त की विशिष्टताएं
नियामक और लेखा परीक्षा: घूर्णन/याद करने के अपरिवर्तनीय लॉग; समय और अभिनेताओं की उत्पादकता।
साझेदार PSP/KYC: प्रति भागीदार/अधिकार क्षेत्र में अलग कुंजी; एसएलए/सुरक्षा उल्लंघन के लिए तेजी से याद।
मल्टी-लीज: गुंजाइश के साथ प्रति-किरायेदार एपीआई कुंजी; ब्रांड/क्षेत्र प्रमुख
उच्च जोखिम: महत्वपूर्ण संचालन के लिए PoP/DPoP, आंतरिक सेवाओं के बीच लघु 'exp', mTLS।
बैकऑफ़िस: एसएसओ/ओआईडीसी, लघु सत्र, हार्डवेयर टोकन (FIDO2), सर्वव्यापी घुमाव-ऑन-शेड्यूल।
18) प्रोड रेडीनेस चेकलिस्ट
- केएमएस/एचएसएम/वॉल्ट में सभी निजी कुंजियाँ; निर्यात निषिद्ध।
- JWKS लघु TTL के साथ प्रकाशित और कैश किया गया है; JWT सुर्खियों में एक 'बच्चा' है।
- ओवरलैपिंग विंडो और स्वचालित रोलआउट के साथ रोटेशन योजना।
- ताज़ा टोकन डिस्पोजेबल हैं; टीटीएल के साथ निरस्त 'जेटीआई' की सूची।
- एचएमएसी रहस्य: सक्रिय + कैनरी; दोनों द्वारा स्वागत; टी-स्विच समय घोषित।
- टीएलएस/एमटीएलएस: सीए परिवर्तन के लिए ऑटो-रिन्यू, T-30/T-7/T-1 अलर्ट, ट्रस्ट बंडल।
- लिफाफा एन्क्रिप्शन: केईके/सीएमके डाउनटाइम के बिना घुमाया गया, डीईके प्रति ऑब्जेक्ट/किरायेदार।
- हस्ताक्षर द्वारा मेट्रिक्स/अलर्ट, JWKS, प्रतिक्रिया; डैशबोर्ड 'बच्चा' -deals।
- हादसा प्लेबुक (समझौता) और नियमित अभ्यास।
- नई कुंजी/सीए के साथ कैनरी और सत्यापन प्रतिकृतियों के परीक्षण।
19) टीएल; डीआर
KMS/HSM में चाबियाँ रखें, JWT को 'बच्चे' के साथ साइन करें और JWKS पोस्ट करें। ओवरलैप के साथ कुंजी और प्रमाणपत्र घुमाएँ, 'बच्चे' द्वारा सत्यापन शेयरों की निगरानी करें. ताज़ा करें - घुमाएँ-ऑन-यूज़और लघु 'एक्सपी'; महत्वपूर्ण संचालन के लिए - PoP/DPoP और mTLS। डेटा के लिए, डाउनटाइम के बिना केईके रोटेशन के साथ लिफाफा एन्क्रिप्शन का उपयोग करें। मेट्रिक्स/अलर्ट, घटना प्लेबुक और नियमित कैनरी रोटेशन को लागू करें।