Қоршаған ортаны нығайту
Қоршаған ортаны нығайту
1) Мақсат және шеңбер
Прод-ортаны нығайту (hardening) - бұл оқыс оқиғалар мен олардан болатын залал ықтималдығын төмендететін практикалардың жүйелі жинағы. Фокус: API-периметр, клиенттердің/төлемдердің деректері, CI/CD, контейнерлік платформа, қолжетімділік, өзгерістерді бақылау, бақылау және реттеу талаптарына сәйкестігі.
Негізгі қағидаттар:- Security by Design & Default: ең аз қажетті артықшылықтар, қауіпсіз дефолттар.
- Zero Trust: тексерусіз желіге де, сәйкестікке де сенбеу.
- Defence-in-Depth: көп деңгейлі қорғаныс (желі → сервис → қосымша → деректер).
- Артефактілердің иммутабельділігі: «build once, run many».
- E2E-іздер және аудиттелу қабілеті: кім, қашан, не өзгертті - және неге.
2) Қатерлер моделі және сыни активтер
Активтер: шоттар мен төлем токендері, PII/төлқұжат деректері, RNG/ойын баланстары, шифрлау кілттері, интеграция құпиялары, деплой пайплайндары, контейнерлердің бейнелері.
Векторлар: тәуелділіктің осалдығы, токендердің жылыстауы, бұлттың/K8s, SSRF/RCE дұрыс емес конфигурациясы, API, supply chain (CI/CD/репозиторий компрометациясы), инсайдерлік қолжетімділік, DDoS/бот-трафик.
Сценарийлер: авторландырылмаған субъектінің қаражатты шығаруы, коэффициенттерді/баланстарды ауыстыру, базаны ағызу, пайплайнды басып алу, өнімдегі қолмен түзетулер.
3) Желілік сәулет және оқшаулау
Сегментация: prod/stage/dev үшін жеке VPC/VNet. Prod ішінде - edge (LB/WAF), API, БД, аналитика, әкімшілік-сервистерге арналған кіші желілер.
«Айқын рұқсат етілген» саясаты: кіші желілер арасында deny-all, тек қажетті порттарды/бағыттарды ашамыз.
mTLS сервистер арасында, сертификаттарды ротациялау автоматтандырылған.
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) Құпиялар мен кілттер
Құпия сақтау орны (Vault/KMS/Secrets Manager), құпияларды Git-тен алып тастаймыз.
Master-кілттер үшін KMS/HSM; KEK/DEK, автоматты ротация.
TTL саясаты: қысқа өмір сүретін токендер (OIDC/JWT), CI үшін уақытша есептер.
Шифрлау: тыныштықта (AES-256/GCM), ұшуда (TLS 1. 2 +/mTLS), PII/карточкалық деректер бағандары - жеке кілтпен.
6) Supply chain и CI/CD hardening
prod (жеке желіде self-hosted) үшін runner 'дерді оқшаулау.
Артефактілердің қолтаңбасы (Sigstore/cosign), деплойдағы қолтаңбаны тексеру.
SBOM (CycloneDX/SPDX), SCA/VA әрбір коммитте және шығару алдында.
«no tag latest» саясаты, тек иммутабельді тегтер.
4-көз қағидаты: міндетті code review және change approval.
Infrastructure as Code: Terraform/Helm с policy-as-code (OPA/Conftest).
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-control: privileged, hostPath, hostNetwork тыйым салу.
Pod Security Standards: baseline/restricted для prod ns.
ImagePolicyWebhook: тек қол қойылған бейнелерді жіберу.
Runtime-саясаттары (Falco/eBPF): аномальды syscalls.
Quota/LimitRange: түйіндерді «шулы көршілерден» қорғау.
8) API-периметр: WAF, Rate Limits, Bot/DDoS
API Gateway: аутентификация (OAuth2/JWT/HMAC), қалыпқа келтіру, mTLS, schema validation.
WAF: базалық ережелер + бизнес-метриктер үшін касталар.
Rate limits: жаһандық/IP/клиент кілті бойынша; «белгілер» және burst.
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 management: мінез-құлық сигналдары, device fingerprint, challenge.
DDoS: CDN/edge-скруббинг, autoscaling, ыстық фичтерге арналған «dark-launch».
9) Конфигурация саясаты және қауіпсіз дефолттар
Тәуекелді функцияларды тез өшіру үшін feature flags/kill-switches.
Сұлбалар валидациясы бар Config-as-Code, конфигурациялар үшін canary/blue-green.
Баптауларды/кілттерді қайтару кезінде KPI ретінде Time-to-Revoke.
10) Деректер және құпиялылық
Жіктелуі: PII/қаржы/операциялық логтар/телеметрия.
Барынша азайту: тек қажеттісін сақтау, анонимдеу/бүркеншік атау.
Backups: жеке аккаунт/жоба, шифрлау, тұрақты DR-репетициялар.
Шығару ережесі: same-method, velocity-лимиттер, risk-скоринг, 4-көз.
Legal Hold/ретеншн: сақтау кестелері, басқарылатын кәдеге жарату.
11) Бақылау, аллергия және ден қою
Триада: логи (құпиясы жоқ), метрика (SLO/SLA), трейстер (W3C).
Қауіпсіздік сигналдары: кірулердің табысты/сәтсіз болуы, артықшылықтардың эскалациясы, құпиялардың өзгеруі, трафиктің ауытқуы.
SIEM + SOAR: корреляция және жартылай автоматты плейбуктер.
Инциденттердің плейбуктері: DDoS, құпиялардың жылыстауы, runner 'a, rollback релизі, төлемдерді «мұздату».
MTTD/MTTR негізгі жеделділік өлшемдері ретінде.
12) Өзгерістерді басқару және шығару
Change Advisory Board (жеңіл салмақты) high-risk өзгерістері үшін.
Pre-prod gates: тесттер, қауіпсіздік, перф, БД көшіру.
Canary/Blue-Green/Shadow деплойлары, SLO бойынша автоматты rollback.
Өнімдегі тікелей түзетулерге тыйым салу: өзгерістер тек пайплайн арқылы.
13) Осалдықтар мен патчтар
Patch policy: критикалық - ASAP; high - N күн ішінде.
Фикстен кейін қайта сканерлеу; Экспозиция бойынша CVE-өлшеу.
Chaos-security: таңдалған терезелерде «table-top» кезеңдік жаттығулары және «қызыл команда» шабуылдары.
14) Сәйкестік және аудит
Бақылау фреймворкалары: PCI DSS (төлемдер), SOC 2, ISO 27001.
Артефакттар: бақылау матрицасы, өзгерістер журналы, сканерлер есебі, DR-тест нәтижелері, access-review.
Үздіксіз дайындық: «evidence as code» - артефакттар автоматты түрде пайплайндар мен жүйелерден жиналады.
15) Экономика және сенімділік
Guardrails құны бойынша: квоталар, бюджеттер, тәуекелдер, пайдаланылмайтын ресурстарды автоматты түрде өшіру.
Сыйымдылығы: SLO-бағытталған жоспарлау, жүктеме тестілері, «хаос күндері».
Қалпына келтіру басымдықтары: сервистер бойынша RTO/RPO, тәуелділік картасы.
16) Қарсы үлгілер
Секреты в.env в Git, общие «админ», «прямой SSH в прод», ручные фиксы в контейнерах, «latest» теги, один общий кластер для всего, публичные бакеты, CI-runner с outbound-интернетом в prod-сети, логи с PII, нет kill-switch для «горячих» фич.
17) Тез бастау чек-парағы (90 күн)
0-30 күн
MFA/SSO қосыңыз, қол жеткізу шолу; deny-all желілік саясат; Secrets Manager/KMS; K8s privileged тыйым салу; WAF/Rate-limit қосылсын; кіру/эскалацияның базалық алерті.
31-60 күн
Сурет қолтаңбасы + ImagePolicy; SBOM + SCA в CI; canary/rollback; SIEM корреляциясы; IR плейбуктер; JIT/PAM; DR-тесті бар сақтық көшірме.
61-90 күн
IaC үшін OPA-guardrails; eBPF/Falco; бот-менеджмент; periodic access-review; chaos-security жаттығуы; конфигурация аудиті және cost-guardrails.
18) Жетілу метрикасы
Қатынас:% MFA тіркелгілері, орташа жасы, қайтарып алу уақыты.
Пайплайн :/SBOM қолтаңбасы бар кескіндер%, SAST/DAST жабыны.
Платформа: read-only FS, PSS-restricted, NetworkPolicy жабыны бар pod 'лардың үлесі.
Периметр: rate-limit/WAF ережелері бар% API, 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) Қорытынды
Прод-ортаны нығайту - бұл үздіксіз процесс. Қауіптерді барынша төмендететін шараларға басымдық беріңіз: қолжетімділік пен құпиялар, желілік оқшаулау, артефактілерге қол қою және пайплайнды бақылау, API-периметрді қорғау, бақылау және өзгерістер тәртібі. Қалғандарын жетілу өлшемдері мен бақылау экономикасын белгілей отырып, итеративті түрде өсіріңіз.