Գաղտնիքների կառավարումը
Գաղտնիքների կառավարումը
1) Ինչու՞ և ի՞ նչ ենք կարծում «գաղտնիքը»
Գաղտնիքը ցանկացած նյութ է, որի բացահայտումը հանգեցնում է համակարգի կամ տվյալների փոխզիջման, գաղտնաբառերի, API-tokens, OAuth/JWT private keys, SSH-բանալիներ, վկայագրեր, բանալիներ (KEK/DEK), webhuks ստորագրման բանալիներ, DSN NoWWWE WWWWWWE WE WWWE WWE WE E E WE E E E E WE E E WWE E E, փոստի/SMS), cookie-աղ/pepper, bots/chats, լիցենզիա։
Գաղտնիքները ապրում են կոդում, գլանափաթեթում, շրջապատում, բեռնարկղերում, CI/CD, Terraform/Ansible-ում, լոգարաններում/դամպերում, գաղտնիքների կառավարման խնդիրն է 'ռուսական առաքման պահեստավորման լուծարման օգտագործումը։
2) Ճարտարապետության սկզբունքները
Կենտրոնացումը։ Մեկ վստահելի շերտ (Vox/Cloud Secret System/KMS) պահեստավորման, պահեստավորման և արտադրության համար։
Ամենափոքր առավելությունները (PoLP)։ Միայն անհրաժեշտ ծառայությունների/դերերի հասանելիությունը նվազագույն ժամանակահատվածի համար։
Կարճ կյանք։ Նախընտրելի են դինամիկ/ժամանակավոր գաղտնիքները TTL/leport-ի հետ։
Crypto-agility. Ալգորիթմները/տևողությունը փոխելու հնարավորությունը կատարվում է առանց անցքի։
Գաղտնիքների բաժանումը կոդից/պատկերներից։ Ոչ գաղտնաբառեր, ոչ էլ Docker-պատկերներում։
Դիտարկումը և աուդիտը։ Գաղտնիքների յուրաքանչյուր վիրահատություն տրամաբանվում է և ալերտացվում։
Ավտոմատ ռոտացիան։ Միգրացիան pipeline գործընթացն է, ոչ թե ձեռքի ակցիան։
3) Տիպային լուծումներ և բաղադրիչների դերեր
KMS/HSM. Արմատային վստահություն, վիրահատություն 2019/ծածկագրեր (envelope)։
Secret Manager/Vault. Գաղտնիքների տարբերակների, ACL, աուդիտ, դինամիկ գաղտնիքներ (DB, cloud-IAM, PKI), ռոտացիայի օրինակներ։
PKI/CA. mTSA/SSH/JWT ստորագրությունների հակիրճ հավաստագրերի թողարկումը։
Գործակալ/sidecar։ Գաղտնիքների առաքումը rantaim (ֆայլեր tmp.ru, in-memory k/v, hot-reload)։
CSI վարորդներ/օպերատորներ։ Kubernetes-ի հետ ինտեգրումը (Secret Store CSI Driver, cast-2019)։
Շերտը տեղադրված է Git-ում։ SOPS/age, git-crypt (ենթակառուցվածքային կոդի համար)։
4) Դասակարգում և քաղաքականություն
Բաժանեք քննադատության գաղտնիքները (P0/P1/P2) և վնասի ծավալը (tenault-scoped, enviance no-scoped, org-wide)։ Յուրաքանչյուր դասարանի համար տվեք
TTL/lement և ռոտացիայի հաճախությունը։
մեթոդը (դինամիկա vs statik), ձևաչափը, կրողը։
հասանելիության քաղաքականությունը (որտեղ/որտեղ/երբ/ինչու), mTSA-ի պահանջները և ռուսական ստանդարտները։
աուդիտ (որը տրամաբանությունն է, թե քանի ենք մենք, ովքեր նախանձում են)։
break-glass-ը և վերանայումը։
5) Գաղտնիության կյանքի ցիկլը
1. Ստեղծումը 'API Secret System-ի միջոցով (owner, tags, scope)։
2. Պահեստավորում: ծածկագրված տեսքով (envelope: DEK-ը կվերցնի KEK-ը KMS/HSM-ից)։
3. Առաքումը 'հեղինակային սուբյեկտի խնդրանքով (OIDC/JWT, SPIFFE/SVID, mTSA)։
4. Օգտագործումը 'բացառապես հիշողության/tmp.ru; տրամաբանության/ամբոխների արգելք։
5. Ռոտացիան 'TTL-ով կամ իրադարձությամբ (փոխզիջում); զուգահեռ տարբերակների աջակցություն (N-1)։
6. Վերանայումը/արգելափակումը 'leations-ի չարտոնված մաքրումը, հաշիվի/ստեղնը պաշտոնական համակարգում։
7. Հեռացումը 'տարբերակների/նյութի ոչնչացումը, պարզ շղթան։
6) Դինամիկ գաղտնիքները (խորհուրդ է տրվում լռելյայն)
Գաղափարը 'գաղտնիքը կարճ է և ինքնաբերաբար լրանում է։ Օրինակներ
Նշված տվյալները BD (Postgres/MySQL) TTL 15-60-ից։
Ամպերի ժամանակավոր բանալիները (AWS/GCP/Azure) մրցույթի դերի վրա։
SSH հավաստագրեր (5-30 րոպե), X5.59 հավաստագրեր (ժամ/օր)։
Ժամանակավոր JWT-ը հարցումների ստորագրման համար, session-tickets բրոքերներ։
Պլյուսներ ՝ նվազագույն blast radius, պարզեցված ակնարկ (աշխարհում ոչինչ չի մնա)։
7) Գաղտնիքների առաքումը ռանտայմ
Kubernetes:- Secret Store CSI Driver-ը նկարագրում է արտաքին կառավարչի գաղտնիքները pod-ում որպես ֆայլեր (tmp.ru)։
- Խուսափեք Kubernetes Secret-ից որպես միակ աղբյուրը (base64 հազար կոդավորումը); անհրաժեշտության դեպքում միացրեք KFC պրովայդերը etcd-ի համար։
- Sidecar-գործակալ (Vance Agent/Secrets Store) հետ leox և hot-reload։
- VM/Bare-metal: համակարգային գործակալ + mTSA k Vox/Secret System, kash հիշողության մեջ, նվազագույն TCB։
- Serverless: International ամպ, որն ունի թափանցիկ գաղտնիքներ որպես փոփոխական շրջապատեր/ֆայլեր, բայց խուսափել երկար գոյատևող envvars-ից 'հիշողության ֆայլեր/հիշողության մեջ։
Օրինակ (Kubernetes + CSI, հայեցակարգային)
yaml apiVersion: v1 kind: Pod metadata: { name: app }
spec:
serviceAccountName: app-sa # is associated with a role in Secret Manager volumes:
- name: secrets csi:
driver: secrets-store. csi. k8s. io readOnly: true volumeAttributes:
secretProviderClass: app-spc containers:
- name: app volumeMounts:
- mountPath: /run/secrets name: secrets readOnly: true
8) DiCI/CD և IaC
CI 'գողերը ստանում են կարճ հոսանքներ OIDC-ով (Workload Identity)։ Արգելքը «քողարկված» գաղտնիքների վրա, որոնք ընկնում են լոգայի մեջ։ «արտահոսքի սկան» (trufflehog/gitleaks)։
CD 'Deple-ը վերցնում է գաղտնիքները, չի ձայնագրում դրանք արտեֆակտների մեջ։
IaC: Terraform-ը պահպանվում է Secret Pro-ում։ վիճակը (state) կոդավորված է և սահմանափակվում է հասանելի։
SOPS/age 'ռեպոյի համար ծածկագրված մանիֆեստներ, բանալիներ - KFC-ի կառավարման տակ։
Օրինակ (SOPS հատված)
yaml apiVersion: v1 kind: Secret metadata: { name: app }
data:
PASSWORD: ENC[AES256_GCM,data:...,sops:...]
sops:
kms:
- arn: arn:aws:kms:...
encrypted_regex: '^(data stringData)$'
version: '3. 8. 0'
9) Հասանելիության քաղաքականությունը և աշխատանքային բեռների վավերացումը
Workload identity: SPIFFE/SPIRE, Kubernetes SA→OIDC→IAM-роль, mTLS.
Ժամանակավոր հոսանքները 'կարճ TTL, նեղ scope։
ABAC/RBAC Secret Pro-ում. <<Ով կարող է կարդալ X գաղտնիքը Y-ի միջավայրում> առանձնացված է "ով կարող է ստեղծել/ստեղծել>։
Բազմաբնույթ 'առանձին namespaces/key-rings վարձողի վրա։ առանձին քաղաքականություններ և հաշվետվություններ։
10) Ռոտացիան, տարբերակները և համատեղելիությունը
Բաժանեք ռուսական գաղտնիքը և նրա տարբերակները («secret/app/db # v17»)։
Աջակցեք երկու ակտիվ տարբերակներ (N և N-1) անկայուն ռոտացիայի համար։
Լուծումը իրադարձություն է 'աշխատանքից ազատվելու, փոխզիջման, պրովայդերի փոփոխության, ալգորիթմների ավելացման ժամանակ։
Ավտոմատիզացրեք: com/backend Vox/Secret Pro + webhook-Stugger վերագործարկումը/reneval։
text
T0: we publish two secrets in the provider: current, next
T1: the application starts accepting signatures by both current and next
T2: external system switches signature to next
T3: we do next -> current, re-release new next
11) Պահեստավորում ռանտայմից դուրս 'պահեստային պատճեններ և արտեֆակտներ
Երբեք չընկնել արտեֆակտների մեջ (պատկերներ, լոգարանների արխիվներ, տիկնայք)։
Bekaps Secret Express-ը կոդավորում է, պահեստավորման բանալիները նույն կոդից դուրս (separation of duties)։
DLP-սկանները 'S3/Blob/GCS, Git, CI արտեֆակտներ։
12) Դիտարկումը, աուդիտը և SLO-ն
Մետրիկները 'կոդերի/գաղտնիքների/ծառայության քանակը, վերջացրած leport մասը, միջին TTL-ը, ռոտացիայի ժամանակը, փոխակերպման ժամանակը (վայրկյան/րոպե մինչև նոր տարբերակի «ընդունումը»)։
Աուդիտ-լոգներ 'ով/ինչ/երբ/որտեղից/ինչու; պահեստավորում, նույնպես ծածկագրված է։
SLO: 99% 07 <200 մզ; 0 արտահոսք լոգարանում; Գաղտնիքների 100 տոկոսը ունեն owner/TTL/tegi; Քննադատական գաղտնիքների 100 տոկոսը դինամիկ կամ ռոտացիան 30 օր է։
Ալբերտներ ՝ գաղտնիքը լրանում է <7 օր (ստատիկների համար), մերժման բարձրացում, չկա ընթերցումներ գաղտնի> N օր (մահացած), անսպասելի գեո/ASN աղբյուրներ։
13) Հաճախակի սխալներ և ինչպես խուսափել դրանցից
Գաղտնիքները Git/պատկերներում։ Օգտագործեք SOPS/age և սկաներներ։ արգելել «մերկ» տողերը։
Envars-ը որպես երկարատև կրող է։ Նախընտրեք tmp.ru/in-memory ֆայլերը։ մաքրեք շրջապատը ամրոցներում/ամբոխներում։
Նույն գաղտնիքները dev/stage/2019 համար։ Բաժանվեք շրջապատով։
Երկարատև ստատիկ գաղտնաբառեր։ Անցեք դինամիկ/հակիրճ։
Միակ վարպետության բանալին «ամեն ինչի համար»։ Կիսեք վարձկաններին/նախագծերին/ծառայություններին։
Ոչ hot-reload։ Ծրագիրը պահանջում է ռեստարտը նվազեցնել խոցելիության պատուհանը ռոտացիայի ժամանակ։
14) Ինտեգրման օրինակներ (սխեմատիկ)
Vox դինամիկ հասանելիությունը Postgres
hcl
Vault: role -> issues the user to the database with TTL 30m and privileges only to the app path "database/creds/app-role" {
capabilities = ["read"]
}
Application requests/database/creds/app-role -> receives (user, pass, ttl)
JWT ստորագրություն հարցումների (կարճ ժամանակով)
Մասնավոր բանալին պահպանվում է Secret Tramp-ում։ ծառայությունը պահանջում է հակիրճ signing-token և տեղական գործակալը ստորագրում է payload (բանալին չի փոխանցվում որպես տող)։
SSH հավաստագրեր admins համար
SSH-cript-ի թողարկումը 10 րոպե SSO (OIDC), առանց մշտական կոմպոզիցիաների տարածման։
15) Տարածքի անվտանգությունը
Logs/treiss/metriks: Altaisers, ֆիլտրեր հայտնի կոդերի/պաթոգենների համար։ «գաղտնի» դաշտերը դիմակավորում են APM-ում։
Տիկնայք/ծովախեցգետնյա զեկույցներ 'կտրել լռելյայն; եթե անհրաժեշտ է ծածկել և մաքրել։
Հաճախորդների ծրագրերը/պոլիմիլները 'նվազագույնի հասցնել օֆլինի գաղտնիքները, օգտագործել պլատֆորմաներ (Keychain/Keystore), կառուցվածքի հետ կապված, TMS-pinning-ը արտակարգ ճեղքման հետ։
16) Կոմպլաենսը
PCI DSS 'PAN/գաղտնիքների պահեստավորման արգելք առանց վիզաների; մուտքի և տարհանման խիստ վերահսկողություն։
MS27001/SOC 2 'ակտիվների կառավարման, լրագրության, մուտքի վերահսկման, միգրացիայի փոփոխության պահանջներ։
GDPR/տեղական կարգավորիչները 'նվազեցում, հասանելիություն անհրաժեշտության, աուդիտ։
17) Գործընթացներ և runbook
Շահագործման շահագործումը
1. Գաղտնիքների բուլարիզացիա (ռեպոզորիա, CI, պատկերներ, runtime, bakaps)։
2. Դասակարգումը և թեգերը (owner, envi.ru, tenae, rotation-policy)։
3. Մրցույթի ընտրությունը (Vox/Cloud SM) + ինտեգրումը KFC/HSM-ի հետ։
4. Workload identity (OIDC/SPIRE)։
5. Դինամիկ գաղտնիքների իրականացումը BD/ամպերի/PKI-ի համար։
6. Avto-ռոտացիան և hot-reload; ալտերտերը էքսպիրացիայի վրա։
7. Արտահոսքի սկաներների և Live Catalog/DS-ի կարգավորում։
Արտակարգ սցենարներ
Արտահոսքի կասկածն այն է, որ հասանելիության ստոպը, որը համապատասխանում է ռոտացիային, արձագանքում է վկայագրերին/բանալիներին, հոսանքներին, բարձրացված հոսանքին, RCA-ին։
Secret Express-ը անհասանելի է, տեղական կեսը հիշողության փոքր TTL-ով, գործառույթների դեգրադացիան, նոր պարամետրերի սահմանափակումը, ձեռքի break-glass քայլերը։
Կորեական ստեղնաշարի փոխզիջումը 'key-hierarchy, rewrap բոլոր DEK, ռիսկի պատուհանի բոլոր պարամետրերի ստուգում։
18) Չեկ թերթերը
Մինչ վաճառքը
- Գաղտնիքները հանվում են կոդից/պատկերներից; ներառում են արտահոսքի սկաներներ։
- Քննադատական գաղտնիքների համար ներառված են դինամիկ մեխանիզմները։
- Առաքումը sidecar/CSI/tmp.ru hot-reload-ի միջոցով առանց երկարաժամկետ envars։
- Տրամադրված է IAM/ABAC քաղաքականությանը, կապված է workload identity-ի հետ։
- Avto-Avto-ի և կրկնակի տարբերակների համար (N, N-1)։
- Metriki/alerta/aludit ներառվում են; դեգրադացիայի թեստերը շարունակվում են։
Վիրահատություն
- Ամսական հաշվետվություն 'սեփականատերեր, TTL, ժամկետանց գաղտնիքներ, որոնք չեն օգտագործվում։
- Արտահոսքի ուղիների պարբերականներն ու պենտեստները (լոգներ, տիկնայք, արտեֆակտներ)։
- crypto-agility պլանը և SA/արմատների արտակարգ փոխարինումը։
19) FAQ
Արդյո՞ ք Secret Pro-ն առանց KFC-ի բավարար է։
Օ 'Հիմնական մակարդակի համար այո, բայց ավելի լավ է օգտագործել envelope-կոդավորումը' KEK-ը KFC/HSM-ում, գաղտնիքները ծածկված են։ Սա պարզեցնում է ակնարկները և կոմպլենսը։
Ի՞ նչ ընտրել 'ստատիկ կամ դինամիկա։
Օ 'Լռելյայն' դինամիկա։ Ստատիկը թողեք միայն այնտեղ, որտեղ չկա աջակցվող պրովայդերներ, և այրեք TTL-ը մինչև օր/ժամ + ավտոմատ նավարկություն։
Ինչպե՞ ս կարող եք ապահով կերպով գաղտնիքները տեղափոխել միկրովայրկյան։
О: Workload identity → mTLS к Secret Manager → sidecar/CSI → файлы в tmpfs + hot-reload. Առանց լոգարանների, առանց envars «ընդմիշտ»։
Արդյո՞ ք դուք կարող եք գաղտնիքները պահել Kubernetes Secret-ում։
Օ 'Միայն etcd կոդավորման ժամանակ KFC-պրովայդերի և խիստ քաղաքական գործիչների հետ։ Նախընտրեք արտաքին պահեստ և CSI։
Ինչպե՞ ս կարելի է «ծպտյալ-ջնջել» վարձողի հասանելիությունը։
Օ 'Հետ կանչեք/արգելափակել նրա քաղաքականությունը Secret Pro-ում, հաշմանդամացնել բոլոր leases, միգրացիա/վերակենդանացում։ KFC-ն օգտագործելիս անջատել unwrap համապատասխան KEK-ը։
Կապված նյութեր
«At Rest» կոդավորումը
«In Transit»
«Բաների կառավարումը և նավարկումը»
«S2S-վավերացում»
«Ստորագրություն և հարցումների հավատարմագրում»