Prod-շրջակա միջավայրի ամրապնդումը
Prod-ի ամրացում
1) Նպատակը և շրջանակը
Մեծացումը (hardening) prod-շրջակա միջավայրն է, որը նվազեցնում է միգրանցների հավանականությունը և վնասը դրանցից։ Ֆոկուս 'API պարիմետրը, հաճախորդների տվյալները/վճարումները, CI/CD, բեռնարկղային պլատֆորմը, հասանելի, փոփոխությունների վերահսկումը, դիտարկումը և կարգավորող պահանջները։
Հիմնական սկզբունքները
Disby Design & Live-ը 'նվազագույն անհրաժեշտ արտոնություններ, անվտանգ դեֆոլտներ։
Zero Trust: Մի վստահեք ոչ ցանցին, ոչ էլ նույնականություններին առանց ստուգման։
Contence-in-Depth-ը բազմաբնույթ պաշտպանություն է (ցանցը ռուսական ծառայությունն է, որը համապատասխանում է տվյալները)։
Արտեֆակտների իմուտաբելությունը '«build once, run many»։
E2E-հետքեր և աուդիո հետևանքներ. Ո՞ վ, երբ, ինչ-որ բան փոխեց, և ինչու։
2) Սպառնալիքների և կրիտիկական ակտիվների մոդել
Ակտիվները ՝ հաշիվներ և հիբրիդային հոսանքներ, PII/անձնագրային տվյալներ, RNG/խաղային հավասարակշռություններ, կոդավորման բանալիներ, ինտեգրման գաղտնիքներ, Deploy plines, բեռնարկղերի պատկերներ։
Վեկտորները 'կախվածության խոցելիություն, հոսանքների արտահոսք, ամպի/K8s, SSRF/RCE API, suply chain (CI/CD/repozoria), ինսայդերական հասանելիություն, DDoS/bot-2019։
Սցենարներ ՝ ոչ արտառոց սուբյեկտի, գործակիցների/հավասարակշռությունների փոխարինումը, բազայի լուծումը, փայտի գրավումը, ձեռքի ուղղությունները։
3) Ցանցային ճարտարապետությունը և մեկուսացումը
Սեգմենտացիան 'առանձին SDC/VNet-ի համար 2019/stage/dev-ի համար։ Մրցույթի ներսում 'edge (LB/WAF), API, BD, վերլուծաբաններ, admin ծառայություններ։
Քաղաքականությունը «հստակ թույլատրված է» ՝ deny-all ենթատեքստերի միջև, մենք բացում ենք միայն անհրաժեշտ պարամետրերը/ուղղությունները։
MTRC ծառայությունների միջև, ավտոմատացված հավաստագրերի լուծումը։
Օրինակ K8s NetworkPolicy (deny-all + allow-list)։
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata:
name: default-deny namespace: prod spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata:
name: allow-api-to-db namespace: prod spec:
podSelector:
matchLabels: {app: db}
ingress:
- from:
- podSelector: {matchLabels: {app: api}}
ports: [{protocol: TCP, port: 5432}]
4) Ինքնություն և հասանելիություն (PAM/JIT)
SSO + MFA-ը բոլոր հասանելի մարդկանց համար։
RBAC&ABAC 'դերերը ամպերի, ոճերի, անունների և ծրագրերի մակարդակում։
PAM: jump/bastion, JIT հասանելիությունը (սահմանափակ ժամանակ), session recording։
Break-glass-ը 'նկարված սալիկներ ապարատային բանալին, ամսագրեր։
Մոսկովսկանները «ովքեր մուտք ունեն», 30 օրվա ընթացքում։
5) Գաղտնիքներ և բանալիներ
Գաղտնիքների պահեստ (Vox/KFC/Secrets System), բացառում ենք Git-ի գաղտնիքները։
KFC/HSM www.ter-2019 համար; KEK/DEK, ավտոմատ նավարկություն։
TTL-ի քաղաքականությունները 'կարճ հոսանքներ (OIDC/JWT), CI-ի համար ժամանակավոր վերանորոգումներ։
Կոդավորումը 'հանգիստ (AES-256/GCM), թռիչքում (TFC 1։ 2 +/mTSA), PII/քարտային տվյալների սյունակները առանձին բանալին են։
6) Supply chain и CI/CD hardening
Runner 's մեկուսացումը կոդավորման համար (www.f-hosted)։
Արտեֆակտների ստորագրությունը (Sigstore/cosport), ստորագրության ստուգումը։
SBSA (Cyclance DX/SPDX), SCA/VA-ը յուրաքանչյուր կոմիթում և նախքան թողարկումը։
«Windowlatest» քաղաքական գործիչները, միայն իմուտաբային թեգերը։
4-աչքի սկզբունք 'պարտադիր code review և change approval։
Infrastructure as Code: Terraform/Helm с policy-as-code (OPA/Conftest).
OPA-ռեգլի օրինակը (public S3/Storage)
rego package iac. guardrails
deny[msg] {
input. resource. type == "storage_bucket"
input. resource. acl == "public-read"
msg:= sprintf("Public bucket forbidden: %s", [input. resource. name])
}
7) Բեռնարկղերը և Kubernetes-ը
Պատկերի նվազագույն հիմքը (distroless), rootless, read-only FS, drop CAPs.
Admission-վերահսկումը 'privileged, hostPath, hostNetwork արգելքը։
Pod Security Standards: baseline/restricted для prod ns.
Imault PolicyWebhook-ը միայն ստորագրված պատկերներ է։
Runtime քաղաքականությունը (Falco/eBPF) 'ալտերտեր աննորմալ scalls։
Delta/LimitRange: պաշտպանություն հանգույցներից «աղմկոտ հարևաններից»։
8) API պարիմետրը ՝ WAF, Rate Limits, Bot/DDoS։
API Gateway: վավերացում (OAuth2/JWT/HMAC), նորմալացում, mTSA, schema validation։
WAF 'հիմնական կանոնները + քասթի տակ բիզնես մետրիկայի համար։
Rate limits: գլոբալ/IP/հաճախորդի բանալին; «tokens» և burst.
NGINX-rate-limit-ի օրինակ
nginx limit_req_zone $binary_remote_addr zone=api:20m rate=10r/s;
server {
location /api/ {
limit_req zone=api burst=30 nodelay;
proxy_pass http://api_backend;
}
}
Bot 2019 'վարքագծային ազդանշաններ, device fingerprint, challenge։
DDoS: CDN/edge-scrubing, autoscaling, «dark-launch» տաք ավարտների համար։
9) Միգրացիայի քաղաքականությունը և անվտանգ դեֆոլտները
Feature flags/kill-switches-ը արագ ռիսկի գործառույթների համար։
Windows-as-Code-ը սխեմաների վալիդացիայի, canary/blue-green-ի համար։
Time-to-Revoke-ը որպես KPI-ը, երբ հետ կանչեց եզրերը/2019։
10) Տվյալները և գաղտնիությունը
Դասակարգումը 'PII/ֆինանսներ/վիրահատական լոգներ/թելեմետրիա։
Նվազեցում 'պահել միայն անհրաժեշտ, անանուն/կեղծանունացում։
Backups: առանձին հաշիվ/նախագիծ, կոդավորումը, DR-փորձարկումները։
Ելույթի կանոնները 'same-method, velocity-limits, risk-coring, 4 աչքեր։
Legal Hold/retenshn 'պահեստավորման գրաֆիկներ, որոնք կառավարվում են հեռացման միջոցով։
11) Դիտողություններ, ալտերտեր և արձագանք
Տրիադա 'լոգներ (որոնք չեն պարունակում գաղտնիքները), մետրիկները (SLO/SLA), թրեյսները (W3C)։
Անվտանգության ազդանշաններ ՝ հաջողություններ/մուտքերի ձախողում, արտոնությունների սրացում, գաղտնիքների փոփոխություն, շեղումներ։
SIEM + SOAR 'հարաբերակցություն և կիսա-ավտոմատիկ պլեյբուսներ։
Պլեյբուսները բացատրվում են ՝ DDoS, գաղտնիքների արտահոսք, runner 'a, rollback, վճարումների «սառեցում»։
MTTD/MTTR-ը որպես սնանկության հիմնական մետրեր։
12) Փոփոխությունների կառավարումը և արտադրությունը
Change Advisory Board (թեթև) high-risk փոփոխության համար։
Pre-24gates: թեստեր, անվտանգություն, փերֆ, BD։
Canary/Blue-Green/Shadow deploi, ավտոմատ rollback SLO-ով։
Ուղղակի ուղղությունների արգելքը երկարության մեջ է 'փոփոխությունը միայն փայտի միջոցով։
13) Խոցելիություն և փամփուշտներ
Patch policy: Քննադատական ASAP; high - N օրվա ընթացքում։
Կրկնվող սկանավորում ֆիքսից հետո։ CVE-կշռումը էքսպոզիայի վրա։
Chaos-2019 '«table-top» պարբերական վարժությունները և «կարմիր թիմի» հարձակումները ընտրված պատուհաններում։
14) Համապատասխանություն և աուդիտ
Վերահսկիչ շրջանակները ՝ PCI DSS (վճարումներ), SOC 2, CS27001։
Արտեֆակտները ՝ վերահսկման մատրիցա, փոփոխությունների ամսագրեր, սկանների հաշվետվություններ, DR թեստերի արդյունքները, նախկին ակնարկները։
Շարունակական պատրաստակամություն. «Evidence as code» - արտեֆակտները ինքնաբերաբար հավաքվում են դաշտերից և համակարգերից։
15) Տնտեսագիտություն և կայունություն
Guardrails արժեքով 'քվոտաներ, բյուջեներ, ալերտներ, չօգտագործված ռեսուրսների ավտոմատ անջատումը։
Կոնտեքստ 'SLO կողմնորոշված պլանավորումը, բեռի թեստերը, «քաոսի օրերը»։
Վերականգնման առաջնահերթությունները ՝ RTO/RPO ծառայությունների, կախվածության քարտեզը։
16) Anti-patterna
W.env-ի գաղտնիքները Git-ում, ընդհանուր «admin» բոլորի համար, «ուղիղ SSH prod», ձեռքի ֆիքսներ բեռնարկղերում, «latest» թեգեր, մեկ ընդհանուր կլաստեր բոլորի համար, հանրային տանկեր, CI-runner, wwww.bound ինտերնետով, PII-ի լոգիները բացակայում են-switch «տաք» ավարտների համար։
17) Արագ մեկնարկի թուղթը (90 օր)
0-30 օր
Ներառել MFA/SSO-ն, հասանելիության խավին։ deny-all ցանցային քաղաքականությունները; Secrets Manager/KMS; արգելքը K8s-ում; Միացրեք WAF/Rate-limit; մուտքի/էսկալացիայի հիմնական ալտերտերը։
31-60 օր
Պատկերների ստորագրությունը + Imert Policy; SBOM + SCA в CI; canary/rollback; SIEM հարաբերակցություն; IR պլեյբուսներ; JIT/PAM; կրկնօրինակումը DR թեստի հետ։
61-90 օր
OPA-guardrails IaC-ի համար; eBPF/Falco; Բոտ-կառավարում; periodic access-review; chaos-ռուսական վարժություն; գենդերային աուդիտ և cost-guardrails։
18) Հասունության մետրերը
Հասանելի են 'MFA-ից վճարումների տոկոսը, հոսանքների միջին տարիքը, հետ կանչման ժամանակը։
Propline: Պատկերների տոկոսը ստորագրությամբ/SBSA, SFC/DLS ծածկույթը։
Պլատֆորմը 'pod' s մասնաբաժինը read-only FS, PMS-restricted, NetworkPolicy ծածկույթը։
Պարիմետրը 'API% rate-limit/WAF կանոններով, միջին պատասխանը DDoS-ի վրա։
IR: MTTD/MTTR, «table-top» հաճախականությունը, հաջողակ DR փորձարկումների տոկոսը։
Համապատասխանություն 'վերահսկման մասնաբաժինը ավտոմատ ապացույցների հետ։
19) Հավելված ՝ քաղաքական ձևանմուշներ
AWS SCP (հանրային բաքերի արգելք)
json
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyPublicS3",
"Effect": "Deny",
"Action": ["s3:PutBucketAcl","s3:PutBucketPolicy"],
"Resource": "",
"Condition": {"StringEquals": {"s3:x-amz-acl": "public-read"}}
}]
}
Kubernetes PodSecurity (namespace-label)
yaml apiVersion: v1 kind: Namespace metadata:
name: prod labels:
pod-security. kubernetes. io/enforce: restricted pod-security. kubernetes. io/audit: restricted
OPA բեռնարկղերի համար (արգելք privileged)
rego package k8s. admission deny[msg] {
input. request. object. spec. containers[_].securityContext. privileged == true msg:= "Privileged containers are not allowed in prod"
}
20) Եզրակացություն
Prod-միջավայրի ամրապնդումը շարունակական գործընթաց է։ Առաջնահերթություն վերցրեք ռիսկի առավելագույն նվազեցում ունեցող միջոցները 'հասանելի և գաղտնիքներ, ցանցային մեկուսացում, արտեֆակտների ստորագրություն և վերահսկողություն։ Մնացած մասը ավելացրեք iterational-ով 'գրանցելով հասունության չափումները և վերահսկման տնտեսությունը։