გასაღებები და ნიშნები
1) რატომ არის საჭირო როტაცია
გასაღებები და ნიშნები გარდაუვალად „დაბერდება“: ექსპოზიცია ლოგებში/ბეკებში, ინსაიდერის რისკები, ბიბლიოთეკების დაუცველობა, პარტნიორების გაჟონვა. როტაცია ამცირებს „რისკის სიცოცხლის ხანგრძლივობას“ და უზრუნველყოფს ინციდენტების მართვას. მიზანია პროგნოზირებადი როტაციის ციკლების შექმნა და სწრაფი გაწვევის მექანიზმების შექმნა.
2) სფერო: რა ვჭამოთ
ხელმოწერის/დაშიფვრის გასაღებები: JWT (JWS/JWE), OAuth/OIDC, SAML, ვებჰუკი (HMAC), ლიცენზიები.
ინტეგრაციის საიდუმლოებები: API გასაღებები, კლიენტის საიდუმლო, პაროლები ტექნიკური. მომხმარებლები.
TLS/mTLS: სერვერის/კლიენტის სერთიფიკატები, ფესვი/შუალედური CA.
მონაცემთა გასაღებები: KEK/CMK KMS/HSM, DEK (envelope encryption).
Токены: access/refresh, service-to-service (mTLS, HMAC), short-lived session.
3) შენახვა, ვერსიები, ეტიკეტები
KMS/HSM/Vault, როგორც სიმართლის წყარო. აკრძალულია პირადი გასაღებების შენახვა git/ENV/სურათების ფაილებში.
ვერსია: 'key _ id '/' version' + ეტიკეტები: 'purpose = jwt-sign', 'env = shign', 'alg = ES256', 'created _ at', 'rotates _ at'.
დაშვების პოლიტიკოსები: მინიმალური პრივილეგიის პრინციპი, მოვალეობების გამიჯვნა (SoD).
აუდიტი: ვინ შექმნა/წაიკითხა/ხელი მოაწერა; უცვლელი ჟურნალები.
4) როტაციის ძირითადი ნიმუშები
4. 1 გადახურვის ფანჯრები (graceful rollover)
ჩვენ ვაქვეყნებთ ახალ კლავიშს JWKS/ვავრცელებთ სერთიფიკატს.
ჭერის ფანჯარა: ძველი და ახალი კლავიშების შესაბამისობა, ხელმოწერა - მხოლოდ ახალი.
გრეის პერიოდის გასვლის შემდეგ - ამოიღეთ ძველი სანდო ნაკრებიდან.
4. 2 ორმაგი გამოშვება (ორმაგი რუნი)
მოკლე პერიოდი, როდესაც ზოგიერთი ინსტანცია ხელს აწერს ძველს, ნაწილი ახალია (დიდი ფლოტებისთვის).
იგი მოითხოვს მკაცრად სინქრონიზებულ JWKS- ს და აკონტროლებს 'kid' - ის ტენდენციების წილს.
4. 3 Rotate-on-schedule vs rotate-on-use
გრაფიკის მიხედვით: N დღეში/კვირაში ერთხელ (ხელმოწერის გასაღებები, TLS).
გამოყენებისას: refresh ნიშნები - ერთჯერადი, ახალი გამოშვების თითოეული გაცვლისთვის („მოცურების“ როტაცია).
5) JWT/JWKS: პრაქტიკა
5. 1 სათაურები და იდენტიფიკატორები
გამოიყენეთ 'kid' JWS სათაური გადამოწმების გასაღების შესარჩევად.
მინიმალური კლაიმი, მოკლე 'exp', სწორი 'aud/iss/nbf'.
json
{ "alg": "ES256", "kid": "jwt-2025-10", "typ": "JWT" }
5. 2 JWKS გამოცემა
JWKS უნდა შეიცავდეს შემოწმების ყველა აქტიურ გასაღებას (ძველი + ახალი გრეის ფანჯარაში).
მომხმარებლებისგან JWKS- ის მოპოვება: მოკლე TTL (მაგალითად, 5-15 წთ).
კომპრომისზე - ამოიღეთ კომპრომეტირებული გასაღები 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 დღე („rotate-on-use“ - ით).
იძულებითი „წებოვანი“ PoP/DPOP- ით (იხ. § 8) ქურდობის რისკის შესამცირებლად.
6) HMAC როტაცია (ვებჰუკი/ხელმოწერები)
შეინახეთ აქტიური და კანარის საიდუმლოებები; მიიღეთ ხელმოწერები ორივესთვის.
სათაურები: 'X-Signature' + 'X-Timestamp'; ფანჯრის შეზღუდვა ± 300s.
ძველი სრული გათიშვა - გამგზავნის დადასტურების შემდეგ.
პარტნიორებისთვის: გამოაქვეყნეთ გადართვის თარიღი და გადამოწმების დრო.
7) TLS/mTLS და ნდობის ჯაჭვები
ACME/auto-renew საჯარო სერვერის სერთიფიკატებისთვის (Let's Encrypt ან კორპორატიული CA).
MTLS: მოკლე კლიენტის სერთიფიკატები (7-30 დღე), ავტომატური როტაცია არხებით (SPIFFE/SPIRE/mesh).
შუალედური/ფესვის CA- ს როტაცია მხოლოდ ნდობის წამყვანის (trust bundle) და გრძელი კანარის საშუალებით ხდება.
დააკვირდით OCSP/CRL და clock-skew. ლოგიკაში შედის ვალიდაციის უარის თქმის მიზეზები.
8) PoP/DPOP და ნიშნის თაიგული კლიენტის გასაღები
DPoP (პრო-პოზიციის დემონსტაცია): ნიშნის მიბმული კლიენტის საზოგადოებრივი კეი; ამცირებს replay რისკს.
კლიენტის გასაღების როტაცია = ახალი DPoP გასაღების გამოშვება, ნიშნები - მოკლე დროში.
mTLS სასურველია სერვისის მომსახურებისთვის (მოწყობილობა/ვორკერი „ატარებს“ ღილაკს HSM/TPM).
9) Refresh ნიშნები: rotate-on-use
ერთჯერადი refresh ნიშნები: თითოეული გაცვლა არის ახალი refresh + წვდომა.
გაიხსენეთ 'jti '/' sid' სია, რომ შეინახოთ TTL = refresh- ის სიცოცხლის ხანგრძლივობა.
განმეორებითი გამოყენების დეტალი (repple): სესიის/მოწყობილობის დაუყოვნებელი მიმოხილვა, ალერტი.
10) მიმოხილვა და დაბლოკვის სიები
JWT ინტროსპექციის გარეშე: გამოიყენეთ მოკლე 'exp' + „შავი სიები“ 'jti' კრიტიკული შემთხვევებისთვის (ადგილობრივად/Redis- ში, ჰაშის შარდვა).
OAuth introspection: სტატუსის ცენტრალიზებული სერვერი; keshirute „Active = false/Real“ მოკლე TTL.
API გასაღებები: შეინახეთ hash გასაღები (პაროლები), მფლობელის/ტენანტის ეტიკეტები, სკოპი, შექმნის თარიღი/ბოლო წვდომა; მიმოხილვა - მყისიერად.
11) მონაცემთა გასაღებები: envelope დაშიფვრა
CMK/KEK (KMS/HSM) იცავს DEK- ს; CMK როტაცია ხდება მონაცემთა გადაკეთების გარეშე: კალამი-wrap DEK.
DEK თითოეული ობიექტისთვის/ტენანტი/წვეულებისთვის; KDF/HKDF წარმოებული გასაღებებისთვის.
განადგურების პოლიტიკა (crypto-shredding): KEK = მონაცემების ამოცნობა კომპრომისზე.
12) ინციდენტების პროცედურები (კომპრომისი)
1. გაყინვა: გამორთეთ ტოქსინების წარმოება კომპრომეტირებულ ღილაკზე, გადაიტანეთ გაცემა ახალზე.
2. ამოიღეთ: ამოიღეთ 'kid' JWKS- დან, ამოიღეთ სერთიფიკატები (OCSP/CRL), გადაკეტეთ API გასაღებები სიიდან.
3. შეამცირეთ TTL: დროებით შეამცირეთ 'exp' ნიშნები, გააძლიერეთ PoP/DPOP შემოწმება.
4. იძულებითი ლოგო: სესიების ინვალიდობა (revoke 'sid '/' jti').
5. ფორენსიკა და მოხსენებები: დრო, გაშუქება, ვინ/რა დაზარალდა; განაახლეთ playbooks.
13) Pipline და rollout
13. 1 თაობა და პუბლიკაცია
ჩამოაყალიბეთ გასაღებები HSM/KMS- ში; პირადი გასაღების ექსპორტი აკრძალულია.
JWKS/სერთიფიკატების ავტომატური გამოქვეყნება გადამოწმებით და ტესტებით.
კანარის გამოშვება: მომხმარებელთა 1-5% 100% -ს შეადგენს.
13. 2 ჯანმრთელობის კონტროლი
მეტრიკი: 'kid' - ის შესაბამისობის წილი, ხელმოწერის/სერტიფიკატის შეცდომები, საათის დრიფტი.
ალერტები: ხელმოწერის გამო 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 Envoy: 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_revoked_total`, `refresh_rotations_total`, `dpop_fail_total`.
Логи: `kid`, `jti`, `sid`, `reason`, `client_id`, `tenant`, `trace_id` (без PII).
დაშბორდები: 'kid' წილის ბარათი, სერთიფიკატების ამოწურვა, გაწვევის სიხშირე, რეგიონებისთვის შეუსაბამო ხელმოწერები.
16) ანტიპატერები
გრძელი JWT გაწვევის გარეშე და მოკლე 'exp- ის გარეშე.
„kid“ - ის არარსებობა და გადამოწმების გასაღების „ხელით“ შერჩევა.
საიდუმლოებების შენახვა ENV/k8s-Secret- ში KMS- ის გარეშე და დაშიფვრის გარეშე etcd დონეზე.
არარეგისტრირებული რეფრეშის ნიშნები; რეფრესის ხელახალი გამოყენება დეტაჟის გარეშე.
ერთი გლობალური API გასაღები „ყველასთვის“.
ახალი გასაღებების „მშვიდი“ გამოშვება JWKS გამოქვეყნებისა და მონიტორინგის გარეშე.
ნულოვანი გადახურვის ფანჯრები (მყისიერი ჩანაცვლება) - მასიური 401/403.
17) iGaming/ფინანსების სპეციფიკა
რეგულატორები და აუდიტი: ბრუნვის/მიმოხილვების უცვლელი ლოგოები; დროისა და მსახიობების დადასტურება.
პარტნიორი PSP/KYC: პარტნიორის/იურისდიქციის ცალკეული გასაღებები; სწრაფი მიმოხილვა SLA/უსაფრთხოების დარღვევებში.
მრავალფეროვნება: per-tenant API გასაღებები სკოპით; ბრენდების/რეგიონების გასაღებების იზოლაცია.
მაღალი რისკი: PoP/DPoP კრიტიკული ოპერაციებისთვის, მოკლე 'exp', mTLS შიდა სერვისებს შორის.
Backoffice: SSO/OIDC, მოკლე სესიები, აპარატურის ნიშნები (FIDO2), ფართო rotate-on-schedule.
18) მზადყოფნის ჩეკის სია
- ყველა პირადი გასაღები KMS/HSM/Vault- ში; აკრძალულია ექსპორტი.
- JWKS ქვეყნდება და იშლება მოკლე TTL- ით; სათაურებში JWT არის 'kid'.
- ბრუნვის გეგმა გადახურვის ფანჯრით და ავტომატური რულეტით.
- Refresh ნიშნები ერთჯერადია; გაიხსენეთ 'jti' s TTL.
- HMAC საიდუმლოებები: აქტიური + კანარი; მიღება ორივე; გამოცხადდა გადართვის დრო.
- TLS/mTLS: auto-renew, ალერტები T-30/T-7/T-1, trust bundle CA შეცვლისთვის.
- Envelope დაშიფვრა: KEK/CMK იბრუნება უსაქმურობის გარეშე, DEK per ობიექტი/ტენანტი.
- მეტრიკი/ალერტები ხელმოწერისთვის, JWKS, მიმოხილვები; დაშბორდები 'kid' -დოლი.
- ინციდენტების ფლეიბუკი (კომპრომისი) და რეგულარული წვრთნები.
- საკანცელარიო ტესტები და ვალიდაცია ახალი კლავიშებით/SA.
19) TL; DR
შეინახეთ გასაღებები KMS/HSM- ში, გააფორმეთ JWT 'kid' - ით და გამოაქვეყნეთ JWKS. აკონტროლეთ გასაღებები და სერთიფიკატები გადახურვით, დააკვირდით 'kid' - ის შესაბამისობის წილს. Refresh - rotate-on-use და მოკლე 'exp'; კრიტიკული ოპერაციებისთვის - PoP/DPoP და mTLS. მონაცემთა მისაღებად, გამოიყენეთ KEK როტაციით envelope დაშიფვრა. დანერგეთ მეტრიკები/ალერტები, ინციდენტების პლეიბუსები და რეგულარული კანარის როტაციები.