Кілттерді басқару және ротация
Кілттер - платформаның «сенім тамыры». Сенімді кілттерді басқару жүйесі (KMS/HSM + процестер + телеметрия) криптографияны бір реттік интеграциядан күнделікті операцияға айналдырады: кілттер үнемі жаңартылып отырады, оларды пайдалану мөлдір, компроматтар оқшауланады, ал клиенттер кілттің ауыстыруын даунтаймсыз бастан кешеді.
1) Мақсаттар мен қағидаттар
Crypto agility: үлкен көші-қонсыз кілттің алгоритмін/ұзындығын ауыстыру мүмкіндігі.
Least exposure: KMS/HSM құпия кілттерін тастап кетпейді; қол қою/таратып жазу операциялары - жойылған.
Short-lived artifacts: токендер/сессия кілттері апта емес, минут-сағат өмір сүреді.
Dual-key/Dual-cert терезелері: тоқтаусыз ротациялар.
Regional & tenant isolation: кілттер өңірлер мен жалға алушылар бойынша бөлінген.
Full auditability: өзгермейтін операциялар журналы, HSM аттестациясы, қолжетімділікті бақылау.
2) Кілттерді жіктеу
Root CA/Master Key: өте сирек пайдаланылады, HSM-де ұсталады, аралық кілттерді немесе data-key орамасын шығару үшін қолданылады.
Операциялық: JWT/оқиғалар қолтаңбасы, TLS, вебхук қолтаңбасы, конфигурацияларды шифрлау/PII.
Сессиялық/уақытша: DPoP, mTLS-binding, канал/диалог үшін ECDH-шығару.
Интеграциялық: әріптестердің кілттері (жария) және HMAC құпиялары.
Data Keys (DEK): KEK астында envelope-шифрлауды пайдаланады, анық түрде сақталмайды.
3) Кілттерді сәйкестендіру және пайдалану саясаты
Әрбір кілтте 'kid' бар (кілт белгілерде/тақырыптарда сәйкестендіріледі):yaml key:
kid: "eu-core-es256-2025-10"
alg: "ES256" # или EdDSA, RSA-PSS, AES-GCM, XChaCha20-Poly1305 purpose: ["jwt-sign","webhook-sign"]
scope: ["tenant:brand_eu","region:EE"]
status: "active" # active next retiring revoked created_at: "2025-10-15T08:00:00Z"
valid_to: "2026-01-15T08:00:00Z"
Қағидалар: «бір мақсат - бір кілт» (шаринг минимумы), айқын қолдану салалары мен мерзімдері.
4) Кілттің өмірлік циклі (KMS/HSM)
1. Generate: HSM/KMS, экспорт саясаты = тыйым салынған.
2. Publish: ассиметрия үшін - JWKS/kid сертификаты.
3. Use: бақыланатын IAM-мен қашықтағы операциялар (sign/decrypt).
4. Rotate: 'next' кілтін іске қосып, dual-accept қосыңыз.
5. Retire: ескісін аудару 'retiring', содан кейін 'revoked'.
6. Destroy: дау терезесінен кейін материалды (purge протоколымен) жою.
5) Ротация: стратегиялар
Scheduled: күнтізбелік (мысалы, JWT қол қою үшін әрбір 1-3 ай, TLS-сертификаттар үшін 6-12 ай).
Rolling: тұтынушыларды біртіндеп ауыстырып қосу (JWKS-те жаңа кілт бар; эмиттер кештерді жылытқаннан кейін жаңасына қол қоя бастайды).
Forced (security): компромат кезінде дереу ротация; қысқа терезе dual-accept, артефактілердің агрессивті аяқталуы.
Staggered per region/tenant: бүкіл әлемді бір уақытта «шапалақтамау» үшін.
Алтын ереже: алдымен жариялау, содан кейін жаңасына қол қою, тек қана өткеннен кейін ескісін кері қайтарып алу.
6) Dual-key терезесі (үзіліссіз ауысым)
JWKS бағдарламасын ескі және жаңа 'kid' деп жариялаймыз.
Верификаторлар екеуін де қабылдайды.
Эмиттер N минут/сағаттан кейін жаңасына қол қоя бастайды.
Ескі/жаңа 'kid' бойынша тексеру үлесін бақылаймыз.
Нысаналы үлеске жеткенде ретайрим ескі.
yaml jwks:
keys:
- kid: "eu-core-es256-2025-10" # new alg: "ES256"
use: "sig"
crv: "P-256"
x: "<...>"; y: "<...>"
- kid: "eu-core-es256-2025-07" # old alg: "ES256"
use: "sig"
...
7) Қол қою және валидация саясаты
Әдепкі алгоритмдер: қолтаңбалау үшін ES256/EdDSA; Қажет болған жерде RSA-PSS.
'none '/әлсіз алгоритмдерге тыйым салу; тексеру жағында whitelisting.
Clock skew: 300 с ± рұқсат етеміз, ауытқуларды логикалаймыз.
Key pinning (ішкі сервистер) және қысқа TTL JWKS-кеші (30-60 с).
8) Envelope-шифрлау және KDF
Деректерді былайша сақтаңыз:
ciphertext = AEAD_Encrypt(DEK, plaintext, AAD=tenant region table row_id)
DEK = KMS. Decrypt (KEK, EncryptedDEK )//on access
EncryptedDEK = KMS. Encrypt (KEK, DEK )//on write
KEK (Key Encryption Key) KMS/HSM-де сақталады, үнемі ротацияланады.
DEK объектіге/партияға құрылады; KEK ротациясы кезінде re-wrap (тез, деректерді қайта шифрлаусыз) орындаймыз.
Ағындар үшін - ECDH + HKDF арнаның қысқа тұратын кілттерін шығару үшін.
9) Аймақтық және мульти-тенант
Кілттер мен JWKS қайта өңірлік: 'eu-core', 'latam-core' - түрлі кілттер жиынтығы.
IAM/аудитті tenant/region бойынша бөлу; кілттер резиденттіктер арасында «ағылмайды».
'kid' деген сенімді домен префиксімен кодтаңыз: 'eu-core-es256-2025-10'.
10) Интеграция құпиялары (HMAC, API-кілттер)
KMS-backed Secret Store-да сақтау, short-lived client secrets (rotation policy ≤ 90 күн) арқылы беру.
Ротация кезінде екі белсенді құпияны (dual-secret) қолдау.
Вебхуктер үшін - timestamp + HMAC дененің қолы; уақыт терезесі ≤ 5 мин.
11) Кіруді басқару және процестер
IAM матрицасы: 'generate', 'sign', 'decrypt', 'rotate', 'destroy' (минималды рөлдер).
4-көз қағидаты: сезімтал операциялар екі растауды талап етеді.
Change windows: жаңа кілтті қосу терезелері және сынақ канареялық аймақтар.
Runbooks: scheduled және forced ротациялар үшін рәсімдер үлгілері.
12) Бақылау және аудит
Өлшемдері:- `sign_p95_ms`, `decrypt_p95_ms`, `jwks_skew_ms`,
- бойынша тұтыну 'kid', 'old _ kid _ usage _ ratio',
- `invalid_signature_rate`, `decrypt_failure_rate`.
- Әрбір қолтаңба/таратып жазу әрекеті: 'who/what/when/where/kid/purpose'.
- Кілттер мәртебесінің және ротацияға/ревокацияға сұраныстардың тарихы.
- HSM аттестациясы, негізгі материалдарға қол жеткізу журналдары.
13) Плейбуктер (инциденттер)
1. Қолтаңба кілті
Ескісін дереу revoke 'kid' (немесе ең аз терезесі бар 'retiring' аудармасы), жаңа JWKS жариялау, қысқартылған TTL белгілерін, форс-logout/RT мүгедектігі, интеграция иелеріне коммуникация, ретро-аудит.
2. Жаппай 'INVALID _ SIGNATURE' ротациядан кейін
JWKS/clock skew кэшін тексеру, dual-accept қайтару, терезені ұзарту, клиенттерге тарату.
3. KMS/HSM жасырындылығының өсуі
Жергілікті қолтаңбалар кэшін қосу жарамсыз; оның орнына - эмиттерде batch/queue, autoscaling HSM прокси, сындарлы ағындардың басымдығы.
4. Бір өңірдің бас тартуы
Өңірлік оқшаулау рәсімдерін жандандыру; басқа өңірлерден кілттерді «тартпау»; құлдыраған аймақтағы қолтаңбаларға байланысты функцияларды деградациялау.
14) Тестілеу
Contract: JWKS дұрыстығы, дұрыс 'kid '/alg/use, клиенттердің үйлесімділігі.
Negative: жалған қолтаңба, ескірген 'kid', дұрыс емес alg, clock skew.
Chaos: жылдам айналу, KMS қолжетімсіздігі, уақыт «дрейфі».
Load: қолтаңбалардың шыңы (JWT/webhooks), ашып жазулардың шыңы (PII/төлемдер).
E2E: dual-key терезесі: шығару - верификация - трафикті тасымалдау - ескісін жарамсыз ету.
15) Конфигурация үлгісі (YAML)
yaml crypto:
regions:
- id: "eu-core"
jwks_url: "https://sts. eu/.well-known/jwks. json"
rotation:
jwt_sign: { interval_days: 30, window_dual: "48h" }
webhook: { interval_days: 60, window_dual: "72h" }
kek: { interval_days: 90, action: "rewrap" }
alg_policy:
sign: ["ES256","EdDSA"]
tls: ["TLS1. 2+","ECDSA_P256"]
publish:
jwks_cache_ttl: "60s"
audit:
hsm_attestation_required: true two_person_rule: true
16) JWKS және артефактілердегі маркерлердің үлгісі
JWT-хедер фрагменті:json
{ "alg":"ES256", "kid":"eu-core-es256-2025-10", "typ":"JWT" }
JWKS (көпшілік бөлігі):
json
{ "keys":[
{"kty":"EC","use":"sig","crv":"P-256","kid":"eu-core-es256-2025-10","x":"...","y":"..."},
{"kty":"EC","use":"sig","crv":"P-256","kid":"eu-core-es256-2025-07","x":"...","y":"..."}
]}
17) Қарсы үлгілер
Ұзақ өмір сүретін және барлық өңірлерге ортақ кілттер.
dual-accept-сіз «бір сәтте» ротациялау.
«Жылдамдық үшін» KMS/HSM жеке кілттерін экспорттау.
Тапсырмаларды араластыру: бір кілтпен JWT қол қою және деректерді шифрлау.
HSM және IAM-шектеулер журналдарының/аттестациясының болмауы.
KEK ротациясы кезінде DEK үшін re-wrap тетігі жоқ.
Secret Store орнына env қол «құпиялары».
18) Азық-түлік алдындағы чек-парағы
- KMS/HSM-дегі барлық жеке кілттер; IAM-матрица және 4-көз принципі теңшелген.
- Алгоритмдер саясаты, кілттердің ұзындығы мен өмір сүру мерзімі бекітілді.
- 'kid' бойынша үлестерді мониторингілейтін dual-key процесі қосылған.
- JWKS қысқа TTL және кештерді жылытумен жарияланады; клиенттер ≥ 2 кілтті қабылдайды.
- Envelope-шифрлау: KEK ротацияланады, DEK re-wrap тоқтаусыз.
- Өңірлік оқшаулау және тенанттар бойынша жеке кілттер жиынтығы.
- Компромисске/роллингке/форс ротацияға арналған плейбуктер; жаттығу жүгірулері.
- Метриктер ('old _ kid _ usage _ ratio', 'invalid _ signature _ rate') және алерталар қосылған.
- contract/negative/chaos/load/E2E тестілеу өтті.
- Интеграцияға арналған құжаттама: 'kid' ауысымын қалай өңдеу керек, қандай терезелер мен қате кодтары.
Қорытынды
Кілттерді басқару - бұл операциялық тәртіп: шындық көзі ретінде KMS/HSM, dual-key тұрақты және қауіпсіз ротациялар, өңірлік және тенантты оқшаулау, envelope-шифрлау және бақылау. Осы ережелерді сақтай отырып, сіз масштабталған, инциденттерге төзімді және аудиторға оңай түсіндіретін криптоконтур аласыз - ал әзірлеушілер мен интеграторлар кез келген өзгерістерді ауырсынусыз бастан кешуде.