Միգրացիաների և գաղտնիքների կառավարում
Միգրացիայի կառավարումը և գաղտնիքները
1) Ինչո՞ ւ է դա անհրաժեշտ
Կազմաձևը և գաղտնիքները պրոդ պլատֆորմի «արյուն» են։ Ճեպազրույցի սխալը ընկնում է p95-ում, հոսող գաղտնիքը P1 մակարդակի դեպքն է։ Նպատակը քրոնգ/գաղտնիք անելն է
Կանխատեսելի (սխեմաներ, վալիդացիա, տարբերակներ)։
Ապահով (ծածկագրում, նվազագույն իրավունքներ, միգրացիա)։
Կառավարվող (GitOps, աուդիտ, արձագանքներ)։
Դինամիկ այնտեղ, որտեղ դա արդարացված է (feature flags, limits)։
2) Արտեֆակտների դասակարգումը
Հանրային դելեգները 'ֆիչներ, շեմեր, թայմաուտներ, feature flags (առանց գաղտնիքների)։
Զգայուն ալգորիթմներ 'պարամետրեր, որոնք փոխում են կրիտիկական ճանապարհների վարքագիծը (օրինակ, սահմանները)։
Գաղտնիքները 'գաղտնաբառեր/բանալիներ/հոսանքներ/հավաստագրեր/նյութեր։
Վստահության արտեֆակտները 'արմատային/միջանկյալ հավաստագրեր, PKI քաղաքականությունը, KFC բանալիները։
Առանձին պահեստավորման և իրավունքների սկզբունքը 'հանրային, զգայուն գաղտնիքները։
3) Միգրացիայի հիերարխիա
Կառուցեք «բուրգի» շերտերը
1. Global defaults (org-wide).
2. Environment (`prod/stage/dev`).
3. Region (`eu-central-1`, `us-east-1`).
4. Tenault/Brand (մուլտֆիլմի ստենանտների համար)։
5. Մոսկվան (հատուկ միկրովայրվիս)։
6. Override (runtime) - ժամանակավոր անջատիչներ։
Միաձուլման կանոնները '«ցածր հաղթում», հակամարտությունը միայն MR/approval-ի միջոցով։
Օրինակ (YAML)
yaml defaults:
http:
timeout_ms: 800 retry: 2 prod:
http:
timeout_ms: 1200 service: payments-api overrides:
eu-central-1:
http:
timeout_ms: 1500
4) Սխեմաներ և վալիդացիա
Յուրաքանչյուր քրոնգ պայմանագիր է սխեմայի հետ (JSON Schema/OPA/walidators CI)։
Տեսակներ, միջակայքներ, պարտադիր դաշտեր, լռելյայն արժեքներ։
«Guard-կանոնները» (չի կարող դնել «retry> 5», «p95 _ target <50.1»)։
Ավտոմատ ստուգումը CI-ում և օգտագործելիս (admission-webhook/KRM)։
JSON Schema հատվածը
json
{
"type":"object",
"properties":{
"http":{"type":"object","properties":{"timeout_ms":{"type":"integer","minimum":100,"maximum":10000},"retry":{"type":"integer","minimum":0,"maximum":5}},"required":["timeout_ms"]},
"feature_flags":{"type":"object","additionalProperties":{"type":"boolean"}}
},
"required":["http"]
}
5) Եզրագծերի առաքման մոդելները
Static (image-baked) 'հուսալի, բայց պահանջում է ռեստարտներ։
Push/Watch: 108/sidecar ստանում են թարմացումներ (stream/poll) և ազդանշաններ։
Pronon startup: Մենք ստանում ենք հրացաններ սկսելիս (պարզեցնել hot-path)։
Edge cache/proxy-ը գեո բաշխված բեռների համար։
Հիմնական բանը ատոմականությունն է և հրացանների տարբերակումը, վերահսկումը և արագ արձագանքը։
6) Գործիքներ և դերեր
Դելեգոգները ՝ Git (ճշմարտության աղբյուրը) + GitOps (Argo/Flux), Parameter Store/Lenta.ru։
Ռուսական գաղտնիքները ՝ Vox, AWS Secrets System/SSM, GCP Secrets, Azure KV։
Կոդավորումը ՝ KFC/HSM, SOPS (AGE/KPG/KLS), Sealed Secrets, Transit-կոդավորումը (Vox)։
Առաքում ՝ CSI Secrets Store, Vast Agent Injector/Sidecar, init-բեռնարկղեր։
Դրոշները/դինամիկան 'ֆիչի դրոշների պլատֆորմը (համր վթարային kill-switch)։
7) Կոդավորում ՝ մոդելներ և պրակտիկա
At rest: KMS-բանալիներ նախագծի/շրջակա միջավայրի, envelope-կոդավորումը։
In transit: TMS/mTSA-ը համապատասխան վավերացումով։
At use: deshifox-ը հնարավորինս ուշ, պրոցեսորի/sidecar-ի հիշողության մեջ (առանց սկավառակի ձայնագրման)։
Հիմնական հիերարխիա ՝ root (HSM) 24KMS CMK no keys (DEK)։
Միգրացիան 'օրացուցային (90/180 օր) + իրադարձությամբ (փոխզիջում/աշխատողի հեռացում)։
8) Գաղտնիքների կառավարումը 'փամփուշտներ
8. 1 GitoPs + SOPS (ստատիկ սարքավորում)
Git-ում միայն ծածկագիր է պահվում։
CI/CD-ում կամ կլաստերի վրա (KFC/age)։
Օգտագործումը վերահսկիչի միջոցով (Flux/Argo) մեջբերում է Kubernetes Secret-ը։
yaml apiVersion: v1 kind: Secret metadata: { name: psp-keys, namespace: payments }
type: Opaque data:
apiKey: ENC[AES256_GCM,data:...,sops]
8. 2 Vox Agent Injector (դինամիկ փուլ)
Ծառայողական (JWT/SA) վավերացվում է Vox-ում։
Sidecar-ը տեղադրում է tmp.ru-ում և թարմացնում TTL-ով։
Դինամիկ քրեդների աջակցությունը (DB, cloud - մեկուսացում և կարճ ժամանակ)։
yaml annotations:
vault. hashicorp. com/agent-inject: "true"
vault. hashicorp. com/role: "payments-api"
vault. hashicorp. com/agent-inject-secret-db: "database/creds/payments"
8. 3 CSI Secrets Store
Գաղտնիքը տեղադրեք որպես volume, ռոտացիան թափանցիկ է։
PKI-ի համար հավաստագրերի ավտոմատ նորարարությունն է/։
9) Kubernetes: գործնական ասպեկտներ
SystigMap-ը միայն հանրային/աննկատ տվյալներ է։
Secret-զգայուն (base64-ից - ոչ կոդավորումը; միացրեք Encryption at Rest-ը etcd-ի համար)։
Delksum-սենսացիա 'restart Deploy.ru, երբ փոխվում է եզրը։
Admission-վերահսկումը 'գաղտնիքների տեղադրման արգելքը ոչ թե «սպիտակ ցուցակից», մանիֆեստներում «plain» գաղտնաբառերի արգելքը։
NetworkPolicy: Սահմանափակել գաղտնիքների պրովայդերների հասանելիությունը (Vox/CSI)։
Diksum օրինակ (Helm)
yaml annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}
10) Հասանելիության քաղաքականությունը (RBAC/ABAC)
Leportprivilege: Ծառայությունը տեսնում է միայն իր գաղտնիքները։ մուտք namespace/label/www.fix։
Split duties: գաղտնիքի ստեղծումը համապատասխանում է բովանդակության կարդալուն։ ցանկացած ընթերցանության աուդիտ։
Ժամանակավոր կրեդները 'դինամիկ տրամաբանություններ (DB, cloud) TTL-ի և ավտոմատ լուծարման հետ։
Սեգմենտացիա: 108/stage տարբեր նախագծերում/հաշիվներում/KMS-բանալիներ։
11) Աուդիտ, ամսագրեր, դիտողություններ
Ընթերցանության/կոդավորման գաղտնիքները 'ո՞ վ/երբ/որ/որտեղից; էքսպոզիցիա և պատահարներ։
Մետրիկները 'գաղտնիքները, ժամկետանց վկայագրերը, դինամիկ կրեդների մասնաբաժինը։
Անվտանգության իրադարձություններ 'քվոտաների ավելցուկ, IP/ժամանակի անոմալիաներ, բազմաթիվ անհաջող լուծումներ։
12) Գաղտնիքների և հավաստագրերի վերացումը
Ստանդարտացրեք ժամանակը 'API-բանալիները' 90 օր, DB գաղտնաբառերը '30 օր, TIM-serts-60-90 օր։
Ռոտացիայի իրականացումը 'արտադրությունը հաստատվում է կրկնակի հրատարակությամբ (grace) բացատրվում է հին ռուսական վերաֆինանսավորումը։
Անպատժելիությունը 'գենդերային/գաղտնիքների կրկնակի ձայնագրությունը, հաճախորդների համատեղելիությունը (accept new + old)։
PKI 'սեփական CA կամ ինտեգրումը արտաքին; ավտոմատ նորարարություն mTSA նյութերի միջոցով CSI/Vox-ի միջոցով։
13) Դինամիկ դելիգներ և feature flags
«Տաք» պարամետրերը (լիմիտներ, թայմաուտներ) վերցրեք 2019/դրոշի պլատֆորմից։
Տեղական քեշը և stickiness (հեշի տարբերակի հաշվարկը), կարճ TTL։
SLO-պաշտպանները զգայուն պարամետրերի փոփոխության վրա (Avto-and kill-switch)։
14) CI/CD և GitOps-ի ինտեգրումը
Pre-commit/CI 'սխեմաների ոսպնյակներ, SOPS ստուգումներ, «մերկ» գաղտնիքների արգելք (սկաներներ ՝ gitleaks/trufflehog)։
Policy Gate: OPA/Wintest - գենդերային արգելք առանց սխեմայի/առանց սեփականատիրոջ/առանց միջավայրի նշանների։
Progressive medivery: Եզրերի առաջխաղացումը որպես արտեֆակտներ (semver), canary փոփոխման համար։
Օրինագծերի նույնականացումները. Ո՞ վ/ինչ www.org/գաղտնիքը փոխեց. արագ հարաբերակցություն p95/5xx-ի հետ։
15) Օրինակներ
15. 1 OPA քաղաքականություն. բաց SG արգելքը ճեպազրույցի մեջ
rego package policy. config
deny[msg] {
input. kind == "SecurityGroupRule"
input. cidr == "0. 0. 0. 0/0"
input. port = = 5432 msg: = "Postgres open internet banned"
}
15. 2 Օրինակ «կեղտոտ» եզրը (տարբերակված)
yaml version: 1. 12. 0 owner: payments-team appliesTo: [ "payments-api@prod" ]
http:
timeout_ms: 1200 retry: 2 withdraw:
limits:
per_txn_eur: 5000 per_day_eur: 20000 flags:
new_withdrawal_flow: false
15. 3 Vox - դինամիկ BD կրեդներ
hcl path "database/creds/payments" {
capabilities = ["read"]
}
role issues user/password with TTL = 1h and auto-rollover
16) Anti-patterna
Git-ի գաղտնիքները բաց տեսքով/Helm/Ansible-ի փոփոխականների մեջ առանց պահանջների։
Միակ «մեգա-գաղտնիքը» բոլոր ծառայությունների/շրջակա միջավայրի համար։
Երկարատև հոսանքները առանց TTL/ռոտացիայի; «անմահ» հավաստագրեր։
Դինամիկ ալգորիթմները առանց սխեմաների/վալիդացիայի և առանց փոփոխությունների։
Encryption at Rest-ի բացակայությունը etcd/KMS-ի և ցանցերի համար առանց mTLS-ի։
Դելիգների ձեռքով աջերը վաճառքում (շրջանցելով GitOps)։
Զարգացողների հասանելիությունը պրոդ գաղտնիքներին «ամեն դեպքում»։
17) Ներդրման թուղթ (0-60 օր)
0-15 օր
Միացրեք սխեմաները/վալիդատորները եզրերի համար։ «digs» և GitOps հոսքը։
Բարձրացրեք KFC-ը և կոդավորումը 'SOPS/Sealed Secrets/Encryption at Rest etcd-ում։
Արգելել պլայնտեքսային գաղտնիքները CI (սկաներներ), ներմուծել owners/approvals։
16-30 օր
Բաժանել հասցեները 'հանրային դելիգներ vs զգայուն vs գաղտնիքները։
Ներդրել Vox/Secrets Express, ընտրել առաքման ճանապարհը (Agent/CSI/SOPS)։
Տեղադրել TFC/DB/PSA-kredov լուծումը։ dashbords «կյանքի/ավարտվում»։
31-60 օր
Դինամիկ դելիգները և դրոշները SLO-geiting-ի և Auto-ի հետ։
OPA/Wintest քաղաքականությունները; zero-trust (namespace/label-scoped հասանելիություն)։
Game-day 'գաղտնիության և fors-ի արտահոսքի սիմուլյացիա։
18) Հասունության մետրերը
գաղտնիքների% -ը ծածկագրված է և առանց ուղղակի մուտք Git = 100% -ի։
Դելիգների ծածկումը սխեմաներով/վալիդացիայով 95 տոկոսն է։
Կրիտիկական գաղտնիքների հաշվարկման միջին ժամանակը (նպատակը 'ժամացույց, ոչ օրեր)։
Դինամիկ կրեդների (DB/cloud) մասնաբաժինը 80 տոկոսն է։
0 ռուբլի «plain secrets «/ժամկետանց հավաստագրերի պատճառով։
MTTR-ը, երբ սխալվում է, հետաձգում է <5 րոպե։
19) Թիմային դերերը և գործընթացները
Ստանիսլավ Օուներ 'տիրույթի/սխեմայի/քաղաքական սեփականատեր։
Տե՛ ս ՝ քաղաքականություն, հիմնական հիերարխիա, հասանելիության աուդիտ։
Platform/MSE: GitOps, մատակարարում/ներարկում, հեռուստաչափություն։
App Teams-ը 'դելիգների/գաղտնիքների սպառումը, կոդավորման թեստերը։
20) Եզրակացություն
Ներարկումների և գաղտնիքների հուսալի իրականացումը + GitOps + կոդավորումը + անջատումը + քաղաքականությունը։ Բաժանեք հանրային և գաղտնի, ծածկագրեք ամեն ինչ, օգտագործեք ատոմային և տարբերակիչ ալգորիթմներ, նվազեցրեք ձեր իրավունքները և կյանքի տևողությունը, ավտոմատիզացրեք պարտատոմսերն ու աուդիտը։ Այդ ժամանակ փոփոխությունները կդառնան արագ և անվտանգ, իսկ արտահոսքի և անկման ռիսկը նվազագույն է։